diff --git a/Makefile.am b/Makefile.am index a51f56883a8e19d85c65865c4037322c98d1e425..b0b09ee3a7b393f3cd653dfdaa43cad392765b0d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,11 +18,11 @@ libsharp_la_SOURCES = \ libsharp/sharp_vecsupport.h \ libsharp/sharp_ylmgen_c.h -libavx_la_SOURCES = libsharp/sharp_core_avx.c -libavx2_la_SOURCES = libsharp/sharp_core_avx2.c -libfma_la_SOURCES = libsharp/sharp_core_fma.c -libfma4_la_SOURCES = libsharp/sharp_core_fma4.c -libavx512f_la_SOURCES = libsharp/sharp_core_avx512f.c +libavx_la_SOURCES = libsharp/sharp_core_inc.c +libavx2_la_SOURCES = libsharp/sharp_core_inc.c +libfma_la_SOURCES = libsharp/sharp_core_inc.c +libfma4_la_SOURCES = libsharp/sharp_core_inc.c +libavx512f_la_SOURCES = libsharp/sharp_core_inc.c noinst_LTLIBRARIES = libavx.la libavx2.la libfma.la libfma4.la libavx512f.la @@ -35,7 +35,6 @@ include_HEADERS = \ libsharp/sharp_cxx.h EXTRA_DIST = \ - libsharp/sharp_core_inc.c \ runtest.sh check_PROGRAMS = sharp_testsuite @@ -46,11 +45,11 @@ TESTS = runtest.sh AM_CFLAGS = -I$(top_srcdir)/c_utils -I$(top_srcdir)/libsharp @AM_CFLAGS@ -libavx_la_CFLAGS = ${AM_CFLAGS} -mavx -libavx2_la_CFLAGS = ${AM_CFLAGS} -mavx2 -libfma_la_CFLAGS = ${AM_CFLAGS} -mfma -libfma4_la_CFLAGS = ${AM_CFLAGS} -mfma4 -libavx512f_la_CFLAGS = ${AM_CFLAGS} -mavx512f +libavx_la_CFLAGS = ${AM_CFLAGS} -mavx -DARCH=avx +libavx2_la_CFLAGS = ${AM_CFLAGS} -mavx2 -DARCH=avx2 +libfma_la_CFLAGS = ${AM_CFLAGS} -mfma -DARCH=fma +libfma4_la_CFLAGS = ${AM_CFLAGS} -mfma4 -DARCH=fma4 +libavx512f_la_CFLAGS = ${AM_CFLAGS} -mavx512f -DARCH=avx512f pkgconfigdir = $(libdir)/pkgconfig nodist_pkgconfig_DATA = @PACKAGE_NAME@.pc diff --git a/libsharp/sharp_core.c b/libsharp/sharp_core.c index e4c105907172bf170e01446123f58b298b0db253..6cfb694681abdc5036d377100d015e3884fae354 100644 --- a/libsharp/sharp_core.c +++ b/libsharp/sharp_core.c @@ -1,9 +1,7 @@ -#define XCONCATX(a,b) a##_##b -#define XCONCATX2(a,b) XCONCATX(a,b) -#define XARCH(a) XCONCATX2(a,ARCH) - #define ARCH default +#define GENERIC_ARCH #include "sharp_core_inc.c" +#undef GENERIC_ARCH #undef ARCH typedef void (*t_inner_loop) (sharp_job *job, const int *ispair, diff --git a/libsharp/sharp_core_avx.c b/libsharp/sharp_core_avx.c deleted file mode 100644 index 053dfbaa5f5250ec59f7dbdad9a6790f78f188b6..0000000000000000000000000000000000000000 --- a/libsharp/sharp_core_avx.c +++ /dev/null @@ -1,8 +0,0 @@ -#ifdef MULTIARCH -#define XCONCATX(a,b) a##_##b -#define XCONCATX2(a,b) XCONCATX(a,b) -#define XARCH(a) XCONCATX2(a,ARCH) - -#define ARCH avx -#include "sharp_core_inc.c" -#endif diff --git a/libsharp/sharp_core_avx2.c b/libsharp/sharp_core_avx2.c deleted file mode 100644 index ca0a3b99280176409cb5444d07b140efd5a81838..0000000000000000000000000000000000000000 --- a/libsharp/sharp_core_avx2.c +++ /dev/null @@ -1,8 +0,0 @@ -#ifdef MULTIARCH -#define XCONCATX(a,b) a##_##b -#define XCONCATX2(a,b) XCONCATX(a,b) -#define XARCH(a) XCONCATX2(a,ARCH) - -#define ARCH avx2 -#include "sharp_core_inc.c" -#endif diff --git a/libsharp/sharp_core_avx512f.c b/libsharp/sharp_core_avx512f.c deleted file mode 100644 index 5781e3c93e4f401cfb4fb15f462b93addd934c3d..0000000000000000000000000000000000000000 --- a/libsharp/sharp_core_avx512f.c +++ /dev/null @@ -1,8 +0,0 @@ -#ifdef MULTIARCH -#define XCONCATX(a,b) a##_##b -#define XCONCATX2(a,b) XCONCATX(a,b) -#define XARCH(a) XCONCATX2(a,ARCH) - -#define ARCH avx512f -#include "sharp_core_inc.c" -#endif diff --git a/libsharp/sharp_core_fma.c b/libsharp/sharp_core_fma.c deleted file mode 100644 index bb0af2ce3656cdbbffa9008cb7f07ffcf0a8ab41..0000000000000000000000000000000000000000 --- a/libsharp/sharp_core_fma.c +++ /dev/null @@ -1,8 +0,0 @@ -#ifdef MULTIARCH -#define XCONCATX(a,b) a##_##b -#define XCONCATX2(a,b) XCONCATX(a,b) -#define XARCH(a) XCONCATX2(a,ARCH) - -#define ARCH fma -#include "sharp_core_inc.c" -#endif diff --git a/libsharp/sharp_core_fma4.c b/libsharp/sharp_core_fma4.c deleted file mode 100644 index 9b7f67bce60542ae2e7dee6e892035d8d2772b74..0000000000000000000000000000000000000000 --- a/libsharp/sharp_core_fma4.c +++ /dev/null @@ -1,8 +0,0 @@ -#ifdef MULTIARCH -#define XCONCATX(a,b) a##_##b -#define XCONCATX2(a,b) XCONCATX(a,b) -#define XARCH(a) XCONCATX2(a,ARCH) - -#define ARCH fma4 -#include "sharp_core_inc.c" -#endif diff --git a/libsharp/sharp_core_inc.c b/libsharp/sharp_core_inc.c index d229a49c733813e54f789a78f4c547f57361a1c1..96981f605421e2ed4eb09bb183f58a43d71d0ec2 100644 --- a/libsharp/sharp_core_inc.c +++ b/libsharp/sharp_core_inc.c @@ -29,6 +29,12 @@ * \author Martin Reinecke */ +#if (defined(MULTIARCH) || defined(GENERIC_ARCH)) + +#define XCONCATX(a,b) a##_##b +#define XCONCATX2(a,b) XCONCATX(a,b) +#define XARCH(a) XCONCATX2(a,ARCH) + #include <complex.h> #include <math.h> #include <string.h> @@ -1179,3 +1185,5 @@ const char *XARCH(sharp_architecture)(void) { return xstr(ARCH); } + +#endif