From 9e6fdd376b5e6abb4ca7f4540f79eec7b8271a78 Mon Sep 17 00:00:00 2001 From: mbrcic Date: Mon, 20 Apr 2020 18:28:06 +0200 Subject: [PATCH] Changed sse2neon with SIMDe. Added building non-SIMD version. --- .gitmodules | 3 +++ Makefile | 31 ++++++++++++++++++++++++------- ksw2_extd2_sse.c | 6 ++++-- ksw2_exts2_sse.c | 7 ++++--- ksw2_extz2_sse.c | 6 ++++-- ksw2_ll_sse.c | 3 ++- lib/simde | 1 + 7 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 .gitmodules create mode 160000 lib/simde diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a80f848 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/simde"] + path = lib/simde + url = https://github.com/nemequ/simde.git diff --git a/Makefile b/Makefile index 18622f5..61c4097 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,13 @@ CFLAGS= -g -Wall -O2 -Wc++-compat #-Wextra CPPFLAGS= -DHAVE_KALLOC -INCLUDES= -OBJS= kthread.o kalloc.o misc.o bseq.o sketch.o sdust.o options.o index.o chain.o align.o hit.o map.o format.o pe.o esterr.o splitidx.o ksw2_ll_sse.o +INCLUDES= -Ilib/simde/simde +OBJS= kthread.o kalloc.o misc.o bseq.o sketch.o sdust.o options.o index.o chain.o align.o hit.o map.o format.o pe.o esterr.o splitidx.o PROG= minimap2 PROG_EXTRA= sdust minimap2-lite LIBS= -lm -lz -lpthread +ifeq ($(no_simd),) # if no_simd is not defined + OBJS+=ksw2_ll_sse.o ifeq ($(arm_neon),) # if arm_neon is not defined ifeq ($(sse2only),) # if sse2only is not defined OBJS+=ksw2_extz2_sse41.o ksw2_extd2_sse41.o ksw2_exts2_sse41.o ksw2_extz2_sse2.o ksw2_extd2_sse2.o ksw2_exts2_sse2.o ksw2_dispatch.o @@ -14,13 +16,15 @@ else # if sse2only is defined endif else # if arm_neon is defined OBJS+=ksw2_extz2_neon.o ksw2_extd2_neon.o ksw2_exts2_neon.o - INCLUDES+=-Isse2neon ifeq ($(aarch64),) #if aarch64 is not defined CFLAGS+=-D_FILE_OFFSET_BITS=64 -mfpu=neon -fsigned-char else #if aarch64 is defined CFLAGS+=-D_FILE_OFFSET_BITS=64 -fsigned-char endif endif +else + OBJS+=ksw2_ll_nosimd.o ksw2_extz2_nosimd.o ksw2_extd2_nosimd.o ksw2_exts2_nosimd.o +endif ifneq ($(asan),) CFLAGS+=-fsanitize=address @@ -83,15 +87,28 @@ ksw2_dispatch.o:ksw2_dispatch.c ksw2.h $(CC) -c $(CFLAGS) -msse4.1 $(CPPFLAGS) -DKSW_CPU_DISPATCH $(INCLUDES) $< -o $@ # NEON-specific targets on ARM - ksw2_extz2_neon.o:ksw2_extz2_sse.c ksw2.h kalloc.h - $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ $(INCLUDES) $< -o $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_ENABLE_NATIVE_ALIASES $(INCLUDES) $< -o $@ ksw2_extd2_neon.o:ksw2_extd2_sse.c ksw2.h kalloc.h - $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ $(INCLUDES) $< -o $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_ENABLE_NATIVE_ALIASES $(INCLUDES) $< -o $@ ksw2_exts2_neon.o:ksw2_exts2_sse.c ksw2.h kalloc.h - $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ $(INCLUDES) $< -o $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_ENABLE_NATIVE_ALIASES $(INCLUDES) $< -o $@ + +# no-SIMD version + +ksw2_ll_nosimd.o:ksw2_ll_sse.c ksw2.h kalloc.h + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NO_NATIVE $(INCLUDES) $< -o $@ + +ksw2_extz2_nosimd.o:ksw2_extz2_sse.c ksw2.h kalloc.h + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NO_NATIVE $(INCLUDES) $< -o $@ + +ksw2_extd2_nosimd.o:ksw2_extd2_sse.c ksw2.h kalloc.h + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NO_NATIVE $(INCLUDES) $< -o $@ + +ksw2_exts2_nosimd.o:ksw2_exts2_sse.c ksw2.h kalloc.h + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NO_NATIVE $(INCLUDES) $< -o $@ # other non-file targets diff --git a/ksw2_extd2_sse.c b/ksw2_extd2_sse.c index b578274..10c42fd 100644 --- a/ksw2_extd2_sse.c +++ b/ksw2_extd2_sse.c @@ -4,14 +4,16 @@ #include "ksw2.h" #ifdef __SSE2__ -#include +//#include +#include #ifdef KSW_SSE2_ONLY #undef __SSE4_1__ #endif #ifdef __SSE4_1__ -#include +//#include +#include #endif #ifdef KSW_CPU_DISPATCH diff --git a/ksw2_exts2_sse.c b/ksw2_exts2_sse.c index e7984c6..93efeb4 100644 --- a/ksw2_exts2_sse.c +++ b/ksw2_exts2_sse.c @@ -4,14 +4,15 @@ #include "ksw2.h" #ifdef __SSE2__ -#include - +//#include +#include #ifdef KSW_SSE2_ONLY #undef __SSE4_1__ #endif #ifdef __SSE4_1__ -#include +//#include +#include #endif #ifdef KSW_CPU_DISPATCH diff --git a/ksw2_extz2_sse.c b/ksw2_extz2_sse.c index 02bb4c2..c13fcb9 100644 --- a/ksw2_extz2_sse.c +++ b/ksw2_extz2_sse.c @@ -3,14 +3,16 @@ #include "ksw2.h" #ifdef __SSE2__ -#include +//#include +#include #ifdef KSW_SSE2_ONLY #undef __SSE4_1__ #endif #ifdef __SSE4_1__ -#include +//#include +#include #endif #ifdef KSW_CPU_DISPATCH diff --git a/ksw2_ll_sse.c b/ksw2_ll_sse.c index 469de52..0359f00 100644 --- a/ksw2_ll_sse.c +++ b/ksw2_ll_sse.c @@ -1,7 +1,8 @@ #include #include #include -#include +//#include +#include #include "ksw2.h" #ifdef __GNUC__ diff --git a/lib/simde b/lib/simde new file mode 160000 index 0000000..b30129b --- /dev/null +++ b/lib/simde @@ -0,0 +1 @@ +Subproject commit b30129b3b48a6823013da2b309c50a081177b6b8