diff --git a/Makefile b/Makefile index 6aa1760..06f7427 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,12 @@ -CFLAGS= -g -Wall -O2 -Wc++-compat #-Wextra +CFLAGS= -g -Wall -O2 -Wc++-compat #-Wextra CPPFLAGS= -DHAVE_KALLOC -INCLUDES= -Ilib/simde/simde +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 PROG= minimap2 PROG_EXTRA= sdust minimap2-lite LIBS= -lm -lz -lpthread + ifeq ($(no_simd),) # if no_simd is not defined ifeq ($(arm_neon),) # if arm_neon is not defined OBJS+=ksw2_ll_sse.o @@ -16,6 +17,9 @@ else # if sse2only is defined endif else # if arm_neon is defined OBJS+=ksw2_ll_sse.o ksw2_extz2_neon.o ksw2_extd2_neon.o ksw2_exts2_neon.o +ifeq ($(simde),) # arm_neon without SIMDe -> use sse2neon + INCLUDES+=-Isse2neon +endif ifeq ($(aarch64),) #if aarch64 is not defined CFLAGS+=-D_FILE_OFFSET_BITS=64 -mfpu=neon -fsigned-char else #if aarch64 is defined @@ -24,6 +28,12 @@ endif endif else OBJS+=ksw2_ll_nosimd.o ksw2_extz2_nosimd.o ksw2_extd2_nosimd.o ksw2_exts2_nosimd.o + simde=1 # no_simd can be used only with SIMDe +endif + +ifneq ($(simde),) # if simde is defined + CFLAGS+=-DSIMDE_ENABLE_NATIVE_ALIASES -DUSE_SIMDE + INCLUDES+=-Ilib/simde endif ifneq ($(asan),) @@ -85,31 +95,32 @@ 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_ll_neon.o:ksw2_ll_sse.c ksw2.h kalloc.h - $(CC) -c $(CFLAGS) -DSIMDE_ENABLE_NATIVE_ALIASES $(CPPFLAGS) $(INCLUDES) $< -o $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(INCLUDES) $< -o $@ ksw2_extz2_neon.o:ksw2_extz2_sse.c ksw2.h kalloc.h - $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_ENABLE_NATIVE_ALIASES $(INCLUDES) $< -o $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ $(INCLUDES) $< -o $@ ksw2_extd2_neon.o:ksw2_extd2_sse.c ksw2.h kalloc.h - $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_ENABLE_NATIVE_ALIASES $(INCLUDES) $< -o $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ $(INCLUDES) $< -o $@ ksw2_exts2_neon.o:ksw2_exts2_sse.c ksw2.h kalloc.h - $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_ENABLE_NATIVE_ALIASES $(INCLUDES) $< -o $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ $(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 $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -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 $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -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 $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -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 $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) -DKSW_SSE2_ONLY -D__SSE2__ -DSIMDE_NO_NATIVE $(INCLUDES) $< -o $@ # other non-file targets diff --git a/ksw2_extd2_sse.c b/ksw2_extd2_sse.c index 10c42fd..e8bee8e 100644 --- a/ksw2_extd2_sse.c +++ b/ksw2_extd2_sse.c @@ -4,16 +4,22 @@ #include "ksw2.h" #ifdef __SSE2__ -//#include -#include +#ifndef USE_SIMDE +#include +#else +#include +#endif #ifdef KSW_SSE2_ONLY #undef __SSE4_1__ #endif #ifdef __SSE4_1__ -//#include -#include +#ifndef USE_SIMDE +#include +#else +#include +#endif #endif #ifdef KSW_CPU_DISPATCH diff --git a/ksw2_exts2_sse.c b/ksw2_exts2_sse.c index 93efeb4..1eb9502 100644 --- a/ksw2_exts2_sse.c +++ b/ksw2_exts2_sse.c @@ -4,15 +4,21 @@ #include "ksw2.h" #ifdef __SSE2__ -//#include -#include +#ifndef USE_SIMDE +#include +#else +#include +#endif #ifdef KSW_SSE2_ONLY #undef __SSE4_1__ #endif #ifdef __SSE4_1__ -//#include -#include +#ifndef USE_SIMDE +#include +#else +#include +#endif #endif #ifdef KSW_CPU_DISPATCH diff --git a/ksw2_extz2_sse.c b/ksw2_extz2_sse.c index c13fcb9..bcdf32f 100644 --- a/ksw2_extz2_sse.c +++ b/ksw2_extz2_sse.c @@ -3,16 +3,22 @@ #include "ksw2.h" #ifdef __SSE2__ -//#include -#include +#ifndef USE_SIMDE +#include +#else +#include +#endif #ifdef KSW_SSE2_ONLY #undef __SSE4_1__ #endif #ifdef __SSE4_1__ -//#include -#include +#ifndef USE_SIMDE +#include +#else +#include +#endif #endif #ifdef KSW_CPU_DISPATCH diff --git a/ksw2_ll_sse.c b/ksw2_ll_sse.c index 0359f00..8cef46c 100644 --- a/ksw2_ll_sse.c +++ b/ksw2_ll_sse.c @@ -1,10 +1,14 @@ #include #include #include -//#include -#include #include "ksw2.h" +#ifndef USE_SIMDE +#include +#else +#include +#endif + #ifdef __GNUC__ #define LIKELY(x) __builtin_expect((x),1) #define UNLIKELY(x) __builtin_expect((x),0)