diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e1e21c51..2b8171812 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -900,16 +900,26 @@ jobs: arch_flags: -march=native -Wno-poison-system-directories # "-Wno-poison-system-directories": due to meson test # "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled - - xcode: "15.4" - os: macos-14 # arm64 + - xcode: "15.4" # clang 15? + os: macos-14 # arm64 arch_flags: -march=native -Wno-poison-system-directories # "-Wno-poison-system-directories": due to meson test # "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled - - xcode: "16.0" + - xcode: "16.0" # clang 16? os: macos-15 # arm64 arch_flags: -march=native -Wno-poison-system-directories -U_LIBCPP_ENABLE_ASSERTIONS # "-Wno-poison-system-directories": due to meson test # "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled + - xcode: "16.3" # clang 17? + os: macos-15 # arm64 + arch_flags: -march=native -Wno-poison-system-directories -U_LIBCPP_ENABLE_ASSERTIONS -Wno-switch-default + # "-Wno-poison-system-directories": due to meson test + # "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled + - xcode: "26.0.1" # clang 17? + os: macos-26 # arm64 + arch_flags: -march=native -Wno-poison-system-directories -U_LIBCPP_ENABLE_ASSERTIONS -Wno-switch-default + # "-Wno-poison-system-directories": due to meson test + # "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled runs-on: ${{ matrix.os }} env: DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app diff --git a/simde/x86/clmul.h b/simde/x86/clmul.h index 7d51b5b3f..e7bc3a930 100644 --- a/simde/x86/clmul.h +++ b/simde/x86/clmul.h @@ -203,7 +203,7 @@ simde_mm_clmulepi64_si128 (simde__m128i a, simde__m128i b, const int imm8) #else #define simde_mm_clmulepi64_si128(a, b, imm8) _mm_clmulepi64_si128(a, b, imm8) #endif -#elif defined(SIMDE_ARM_NEON_A64V8_NATIVE) && defined(SIMDE_ARCH_ARM_AES) && !defined(__clang__) +#elif defined(SIMDE_ARM_NEON_A64V8_NATIVE) && !(SIMDE_DETECT_CLANG_VERSION_NOT(22,0,0)) #define simde_mm_clmulepi64_si128(a, b, imm8) \ simde__m128i_from_neon_u64( \ vreinterpretq_u64_p128( \ diff --git a/simde/x86/fma.h b/simde/x86/fma.h index bb174284b..a3d547be9 100644 --- a/simde/x86/fma.h +++ b/simde/x86/fma.h @@ -82,6 +82,16 @@ simde_mm256_fmadd_pd (simde__m256d a, simde__m256d b, simde__m256d c) { return _mm256_fmadd_pd(a, b, c); #elif defined(SIMDE_LOONGARCH_LASX_NATIVE) return __lasx_xvfmadd_d(a, b, c); + #elif SIMDE_NATURAL_VECTOR_SIZE_LE(128) + simde__m256d_private + r_, + a_ = simde__m256d_to_private(a), + b_ = simde__m256d_to_private(b), + c_ = simde__m256d_to_private(c); + + r_.m128d[0] = simde_mm_fmadd_pd(a_.m128d[0], b_.m128d[0], c_.m128d[0]); + r_.m128d[1] = simde_mm_fmadd_pd(a_.m128d[1], b_.m128d[1], c_.m128d[1]); + return simde__m256d_from_private(r_); #else return simde_mm256_add_pd(simde_mm256_mul_pd(a, b), c); #endif