26 lines
1.3 KiB
Text
26 lines
1.3 KiB
Text
disable code which uses attribute(target_clones) to provide functions
|
||
optimized for different CPUs. apparently clang 15 adds supports for this,
|
||
but we don't have ifunc support in the toolchain, so it fails to link.
|
||
|
||
Index: src/common/darktable.h
|
||
--- src/common/darktable.h.orig
|
||
+++ src/common/darktable.h
|
||
@@ -127,18 +127,7 @@ typedef unsigned int u_int;
|
||
/* Create cloned functions for various CPU SSE generations */
|
||
/* See for instructions https://hannes.hauswedell.net/post/2017/12/09/fmv/ */
|
||
/* TL;DR : use only on SIMD functions containing low-level paralellized/vectorized loops */
|
||
-#if __has_attribute(target_clones) && !defined(_WIN32) && !defined(NATIVE_ARCH)
|
||
-# if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64)
|
||
-#define __DT_CLONE_TARGETS__ __attribute__((target_clones("default", "sse2", "sse3", "sse4.1", "sse4.2", "popcnt", "avx", "avx2", "avx512f", "fma4")))
|
||
-# elif defined(__PPC64__)
|
||
-/* __PPC64__ is the only macro tested for in is_supported_platform.h, other macros would fail there anyway. */
|
||
-#define __DT_CLONE_TARGETS__ __attribute__((target_clones("default","cpu=power9")))
|
||
-# else
|
||
#define __DT_CLONE_TARGETS__
|
||
-# endif
|
||
-#else
|
||
-#define __DT_CLONE_TARGETS__
|
||
-#endif
|
||
|
||
/* Helper to force stack vectors to be aligned on 64 bits blocks to enable AVX2 */
|
||
#define DT_IS_ALIGNED(x) __builtin_assume_aligned(x, 64)
|