[clang] c091792 - [NFC] Fix SSE3 intrinsics test for PowerPC

Qiu Chaofan via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 9 01:00:42 PST 2022


Author: Qiu Chaofan
Date: 2022-02-09T17:00:34+08:00
New Revision: c091792cd3a82e60e10ea14c28ff64b14c17a254

URL: https://github.com/llvm/llvm-project/commit/c091792cd3a82e60e10ea14c28ff64b14c17a254
DIFF: https://github.com/llvm/llvm-project/commit/c091792cd3a82e60e10ea14c28ff64b14c17a254.diff

LOG: [NFC] Fix SSE3 intrinsics test for PowerPC

Previous test in ppc-pmmintrin.c did not check IR of intrinsic function
definition. Add them and simplify.

These tests shouldn't be auto-generated, because we don't want to check
wrapper functions.

Added: 
    

Modified: 
    clang/test/CodeGen/PowerPC/ppc-pmmintrin.c

Removed: 
    


################################################################################
diff  --git a/clang/test/CodeGen/PowerPC/ppc-pmmintrin.c b/clang/test/CodeGen/PowerPC/ppc-pmmintrin.c
index 10333d7d1dd9f..f799000345193 100644
--- a/clang/test/CodeGen/PowerPC/ppc-pmmintrin.c
+++ b/clang/test/CodeGen/PowerPC/ppc-pmmintrin.c
@@ -1,4 +1,3 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
 // REQUIRES: powerpc-registered-target
 
 // RUN: %clang -S -emit-llvm -target powerpc64-gnu-linux -mcpu=pwr8 -DNO_MM_MALLOC -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
@@ -19,53 +18,10 @@ __m128i resi, mi;
 double *d;
 
 void __attribute__((noinline))
-// CHECK-LABEL: @test_pmmintrin(
-// CHECK-NEXT:  entry:
-// CHECK-NEXT:    [[TMP0:%.*]] = load <2 x double>, <2 x double>* @md1, align 16
-// CHECK-NEXT:    [[TMP1:%.*]] = load <2 x double>, <2 x double>* @md2, align 16
-// CHECK-NEXT:    [[CALL:%.*]] = call <2 x double> @_mm_addsub_pd(<2 x double> noundef [[TMP0]], <2 x double> noundef [[TMP1]]) #[[ATTR4:[0-9]+]]
-// CHECK-NEXT:    store <2 x double> [[CALL]], <2 x double>* @resd, align 16
-// CHECK-NEXT:    [[TMP2:%.*]] = load <4 x float>, <4 x float>* @m1, align 16
-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x float>, <4 x float>* @m2, align 16
-// CHECK-NEXT:    [[CALL1:%.*]] = call <4 x float> @_mm_addsub_ps(<4 x float> noundef [[TMP2]], <4 x float> noundef [[TMP3]]) #[[ATTR4]]
-// CHECK-NEXT:    store <4 x float> [[CALL1]], <4 x float>* @res, align 16
-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x double>, <2 x double>* @md1, align 16
-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x double>, <2 x double>* @md2, align 16
-// CHECK-NEXT:    [[CALL2:%.*]] = call <2 x double> @_mm_hadd_pd(<2 x double> noundef [[TMP4]], <2 x double> noundef [[TMP5]]) #[[ATTR4]]
-// CHECK-NEXT:    store <2 x double> [[CALL2]], <2 x double>* @resd, align 16
-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x float>, <4 x float>* @m1, align 16
-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x float>, <4 x float>* @m2, align 16
-// CHECK-NEXT:    [[CALL3:%.*]] = call <4 x float> @_mm_hadd_ps(<4 x float> noundef [[TMP6]], <4 x float> noundef [[TMP7]]) #[[ATTR4]]
-// CHECK-NEXT:    store <4 x float> [[CALL3]], <4 x float>* @res, align 16
-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x double>, <2 x double>* @md1, align 16
-// CHECK-NEXT:    [[TMP9:%.*]] = load <2 x double>, <2 x double>* @md2, align 16
-// CHECK-NEXT:    [[CALL4:%.*]] = call <2 x double> @_mm_hsub_pd(<2 x double> noundef [[TMP8]], <2 x double> noundef [[TMP9]]) #[[ATTR4]]
-// CHECK-NEXT:    store <2 x double> [[CALL4]], <2 x double>* @resd, align 16
-// CHECK-NEXT:    [[TMP10:%.*]] = load <4 x float>, <4 x float>* @m1, align 16
-// CHECK-NEXT:    [[TMP11:%.*]] = load <4 x float>, <4 x float>* @m2, align 16
-// CHECK-NEXT:    [[CALL5:%.*]] = call <4 x float> @_mm_hsub_ps(<4 x float> noundef [[TMP10]], <4 x float> noundef [[TMP11]]) #[[ATTR4]]
-// CHECK-NEXT:    store <4 x float> [[CALL5]], <4 x float>* @res, align 16
-// CHECK-NEXT:    [[CALL6:%.*]] = call <2 x i64> @_mm_lddqu_si128(<2 x i64>* noundef @mi) #[[ATTR4]]
-// CHECK-NEXT:    store <2 x i64> [[CALL6]], <2 x i64>* @resi, align 16
-// CHECK-NEXT:    [[TMP12:%.*]] = load double*, double** @d, align 8
-// CHECK-NEXT:    [[CALL7:%.*]] = call <2 x double> @_mm_loaddup_pd(double* noundef [[TMP12]]) #[[ATTR4]]
-// CHECK-NEXT:    store <2 x double> [[CALL7]], <2 x double>* @resd, align 16
-// CHECK-NEXT:    [[TMP13:%.*]] = load <2 x double>, <2 x double>* @md1, align 16
-// CHECK-NEXT:    [[CALL8:%.*]] = call <2 x double> @_mm_movedup_pd(<2 x double> noundef [[TMP13]]) #[[ATTR4]]
-// CHECK-NEXT:    store <2 x double> [[CALL8]], <2 x double>* @resd, align 16
-// CHECK-NEXT:    [[TMP14:%.*]] = load <4 x float>, <4 x float>* @m1, align 16
-// CHECK-NEXT:    [[CALL9:%.*]] = call <4 x float> @_mm_movehdup_ps(<4 x float> noundef [[TMP14]]) #[[ATTR4]]
-// CHECK-NEXT:    store <4 x float> [[CALL9]], <4 x float>* @res, align 16
-// CHECK-NEXT:    [[TMP15:%.*]] = load <4 x float>, <4 x float>* @m1, align 16
-// CHECK-NEXT:    [[CALL10:%.*]] = call <4 x float> @_mm_moveldup_ps(<4 x float> noundef [[TMP15]]) #[[ATTR4]]
-// CHECK-NEXT:    store <4 x float> [[CALL10]], <4 x float>* @res, align 16
-// CHECK-NEXT:    ret void
-//
 test_pmmintrin() {
   resd = _mm_addsub_pd(md1, md2);
   res = _mm_addsub_ps(m1, m2);
   resd = _mm_hadd_pd(md1, md2);
-//
   res = _mm_hadd_ps(m1, m2);
   resd = _mm_hsub_pd(md1, md2);
   res = _mm_hsub_ps(m1, m2);
@@ -76,14 +32,49 @@ test_pmmintrin() {
   res = _mm_moveldup_ps(m1);
 }
 
+// CHECK-LABEL: define available_externally <2 x double> @_mm_addsub_pd(<2 x double> noundef %{{[0-9a-zA-Z_.]+}}, <2 x double> noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: call <2 x double> @vec_xor(double vector[2], double vector[2])(<2 x double> noundef %{{[0-9a-zA-Z_.]+}}, <2 x double> noundef <double -0.000000e+00, double 0.000000e+00>)
+// CHECK: call <2 x double> @vec_add(double vector[2], double vector[2])
 
+// CHECK-LABEL: define available_externally <4 x float> @_mm_addsub_ps(<4 x float> noundef %{{[0-9a-zA-Z_.]+}}, <4 x float> noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: call <4 x float> @vec_xor(float vector[4], float vector[4])(<4 x float> noundef %{{[0-9a-zA-Z_.]+}}, <4 x float> noundef <float -0.000000e+00, float 0.000000e+00, float -0.000000e+00, float 0.000000e+00>)
+// CHECK: call <4 x float> @vec_add(float vector[4], float vector[4])
 
+// CHECK-LABEL: define available_externally <2 x double> @_mm_hadd_pd(<2 x double> noundef %{{[0-9a-zA-Z_.]+}}, <2 x double> noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: %[[CALL:[0-9a-zA-Z_.]+]] = call <2 x double> @vec_mergeh(double vector[2], double vector[2])
+// CHECK: %[[CALL1:[0-9a-zA-Z_.]+]] = call <2 x double> @vec_mergel(double vector[2], double vector[2])
+// CHECK: %[[CALL2:[0-9a-zA-Z_.]+]] = call <2 x double> @vec_add(double vector[2], double vector[2])(<2 x double> noundef %[[CALL]], <2 x double> noundef %[[CALL1]])
 
+// CHECK-LABEL: define available_externally <4 x float> @_mm_hadd_ps(<4 x float> noundef %{{[0-9a-zA-Z_.]+}}, <4 x float> noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: store <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 8, i8 9, i8 10, i8 11, i8 16, i8 17, i8 18, i8 19, i8 24, i8 25, i8 26, i8 27>, <16 x i8>* %{{[0-9a-zA-Z_.]+}}, align 16
+// CHECK: store <16 x i8> <i8 4, i8 5, i8 6, i8 7, i8 12, i8 13, i8 14, i8 15, i8 20, i8 21, i8 22, i8 23, i8 28, i8 29, i8 30, i8 31>, <16 x i8>* %{{[0-9a-zA-Z_.]+}}, align 16
+// CHECK: %[[CALL:[0-9a-zA-Z_.]+]] = call <4 x float> @vec_perm(float vector[4], float vector[4], unsigned char vector[16])
+// CHECK: %[[CALL1:[0-9a-zA-Z_.]+]] = call <4 x float> @vec_perm(float vector[4], float vector[4], unsigned char vector[16])
+// CHECK: %[[CALL2:[0-9a-zA-Z_.]+]] = call <4 x float> @vec_add(float vector[4], float vector[4])(<4 x float> noundef %[[CALL]], <4 x float> noundef %[[CALL1]])
 
+// CHECK-LABEL: define available_externally <2 x double> @_mm_hsub_pd(<2 x double> noundef %{{[0-9a-zA-Z_.]+}}, <2 x double> noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: %[[CALL:[0-9a-zA-Z_.]+]] = call <2 x double> @vec_mergeh(double vector[2], double vector[2])
+// CHECK: %[[CALL1:[0-9a-zA-Z_.]+]] = call <2 x double> @vec_mergel(double vector[2], double vector[2])
+// CHECK: %[[CALL2:[0-9a-zA-Z_.]+]] = call <2 x double> @vec_sub(double vector[2], double vector[2])(<2 x double> noundef %[[CALL]], <2 x double> noundef %[[CALL1]])
 
+// CHECK-LABEL: define available_externally <4 x float> @_mm_hsub_ps(<4 x float> noundef %{{[0-9a-zA-Z_.]+}}, <4 x float> noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: store <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 8, i8 9, i8 10, i8 11, i8 16, i8 17, i8 18, i8 19, i8 24, i8 25, i8 26, i8 27>, <16 x i8>* %{{[0-9a-zA-Z_.]+}}, align 16
+// CHECK: store <16 x i8> <i8 4, i8 5, i8 6, i8 7, i8 12, i8 13, i8 14, i8 15, i8 20, i8 21, i8 22, i8 23, i8 28, i8 29, i8 30, i8 31>, <16 x i8>* %{{[0-9a-zA-Z_.]+}}, align 16
+// CHECK: %[[CALL:[0-9a-zA-Z_.]+]] = call <4 x float> @vec_perm(float vector[4], float vector[4], unsigned char vector[16])
+// CHECK: %[[CALL1:[0-9a-zA-Z_.]+]] = call <4 x float> @vec_perm(float vector[4], float vector[4], unsigned char vector[16])
+// CHECK: %[[CALL2:[0-9a-zA-Z_.]+]] = call <4 x float> @vec_sub(float vector[4], float vector[4])(<4 x float> noundef %[[CALL]], <4 x float> noundef %[[CALL1]])
 
+// CHECK-LABEL: define available_externally <2 x i64> @_mm_lddqu_si128(<2 x i64>* noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: call <4 x i32> @vec_vsx_ld(int, int const*)(i32 noundef signext 0, i32* noundef %{{[0-9a-zA-Z_.]+}})
 
+// CHECK-LABEL: define available_externally <2 x double> @_mm_loaddup_pd(double* noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: call <2 x double> @vec_splats(double)
 
+// CHECK-LABEL: define available_externally <2 x double> @_mm_movedup_pd(<2 x double> noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: call <2 x double> @_mm_shuffle_pd(<2 x double> noundef %{{[0-9a-zA-Z_.]+}}, <2 x double> noundef %{{[0-9a-zA-Z_.]+}}, i32 noundef signext 0)
 
+// CHECK-LABEL: define available_externally <4 x float> @_mm_movehdup_ps(<4 x float> noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: call <4 x i32> @vec_mergeo(unsigned int vector[4], unsigned int vector[4])
 
-
+// CHECK-LABEL: define available_externally <4 x float> @_mm_moveldup_ps(<4 x float> noundef %{{[0-9a-zA-Z_.]+}})
+// CHECK: call <4 x i32> @vec_mergee(unsigned int vector[4], unsigned int vector[4])


        


More information about the cfe-commits mailing list