[clang] [X86] Add MMX/SSE/AVX PHADD/SUB & HADDPS/D intrinsics to be used in constexpr (PR #156822)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Sep 13 08:02:39 PDT 2025
================
@@ -60,36 +60,85 @@ __m128i test_mm_hadd_epi16(__m128i a, __m128i b) {
// CHECK: call <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
return _mm_hadd_epi16(a, b);
}
+constexpr bool test_mm_hadd_epi16_constexpr() {
+ constexpr __m128i a = _mm_setr_epi16(1, 2, 3, 4, 5, 6, 7, 8);
+ constexpr __m128i b = _mm_setr_epi16(17,18,19,20,21,22,23,24);
+
+ constexpr __m128i result = _mm_hadd_epi16(a, b);
+ return match_v8si(result,1+2,3+4,5+6,7+8,17+18,19+20,21+22,23+24);
+}
+TEST_CONSTEXPR(test_mm_hadd_epi16_constexpr())
__m128i test_mm_hadd_epi32(__m128i a, __m128i b) {
// CHECK-LABEL: test_mm_hadd_epi32
// CHECK: call <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
return _mm_hadd_epi32(a, b);
}
+constexpr bool test_mm_hadd_epi32_constexpr() {
+ constexpr __m128i a = _mm_setr_epi32(1, 2, 3, 4);
+ constexpr __m128i b = _mm_setr_epi32(5,6,7,8);
+
+ constexpr __m128i result = _mm_hadd_epi32(a, b);
+ return match_v4si(result,1+2,3+4,5+6,7+8);
+}
+TEST_CONSTEXPR(test_mm_hadd_epi32_constexpr())
----------------
whytolearn wrote:
please help approve the CI workflows again, Thank you!
https://github.com/llvm/llvm-project/pull/156822
More information about the cfe-commits
mailing list