diff options
Diffstat (limited to 'clang/test/CodeGen')
-rw-r--r-- | clang/test/CodeGen/avx2-builtins.c | 12 | ||||
-rw-r--r-- | clang/test/CodeGen/avx512bw-builtins.c | 28 | ||||
-rw-r--r-- | clang/test/CodeGen/avx512f-builtins.c | 20 | ||||
-rw-r--r-- | clang/test/CodeGen/avx512vl-builtins.c | 54 | ||||
-rw-r--r-- | clang/test/CodeGen/avx512vlbw-builtins.c | 48 | ||||
-rw-r--r-- | clang/test/CodeGen/ssse3-builtins.c | 12 |
6 files changed, 128 insertions, 46 deletions
diff --git a/clang/test/CodeGen/avx2-builtins.c b/clang/test/CodeGen/avx2-builtins.c index 38aa79631db..bf285821f57 100644 --- a/clang/test/CodeGen/avx2-builtins.c +++ b/clang/test/CodeGen/avx2-builtins.c @@ -8,19 +8,25 @@ __m256i test_mm256_abs_epi8(__m256i a) { // CHECK-LABEL: test_mm256_abs_epi8 - // CHECK: call <32 x i8> @llvm.x86.avx2.pabs.b(<32 x i8> %{{.*}}) + // CHECK: [[SUB:%.*]] = sub <32 x i8> zeroinitializer, %{{.*}} + // CHECK: [[CMP:%.*]] = icmp sgt <32 x i8> %{{.*}}, zeroinitializer + // CHECK: select <32 x i1> [[CMP]], <32 x i8> %{{.*}}, <32 x i8> [[SUB]] return _mm256_abs_epi8(a); } __m256i test_mm256_abs_epi16(__m256i a) { // CHECK-LABEL: test_mm256_abs_epi16 - // CHECK: call <16 x i16> @llvm.x86.avx2.pabs.w(<16 x i16> %{{.*}}) + // CHECK: [[SUB:%.*]] = sub <16 x i16> zeroinitializer, %{{.*}} + // CHECK: [[CMP:%.*]] = icmp sgt <16 x i16> %{{.*}}, zeroinitializer + // CHECK: select <16 x i1> [[CMP]], <16 x i16> %{{.*}}, <16 x i16> [[SUB]] return _mm256_abs_epi16(a); } __m256i test_mm256_abs_epi32(__m256i a) { // CHECK-LABEL: test_mm256_abs_epi32 - // CHECK: call <8 x i32> @llvm.x86.avx2.pabs.d(<8 x i32> %{{.*}}) + // CHECK: [[SUB:%.*]] = sub <8 x i32> zeroinitializer, %{{.*}} + // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> %{{.*}}, zeroinitializer + // CHECK: select <8 x i1> [[CMP]], <8 x i32> %{{.*}}, <8 x i32> [[SUB]] return _mm256_abs_epi32(a); } diff --git a/clang/test/CodeGen/avx512bw-builtins.c b/clang/test/CodeGen/avx512bw-builtins.c index 0ea0880e4ac..0ad15e67253 100644 --- a/clang/test/CodeGen/avx512bw-builtins.c +++ b/clang/test/CodeGen/avx512bw-builtins.c @@ -480,32 +480,48 @@ __m512i test_mm512_mask_blend_epi16(__mmask32 __U, __m512i __A, __m512i __W) { } __m512i test_mm512_abs_epi8(__m512i __A) { // CHECK-LABEL: @test_mm512_abs_epi8 - // CHECK: @llvm.x86.avx512.mask.pabs.b.512 + // CHECK: [[SUB:%.*]] = sub <64 x i8> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <64 x i8> [[A]], zeroinitializer + // CHECK: select <64 x i1> [[CMP]], <64 x i8> [[A]], <64 x i8> [[SUB]] return _mm512_abs_epi8(__A); } __m512i test_mm512_mask_abs_epi8(__m512i __W, __mmask64 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_mask_abs_epi8 - // CHECK: @llvm.x86.avx512.mask.pabs.b.512 + // CHECK: [[SUB:%.*]] = sub <64 x i8> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <64 x i8> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[A]], <64 x i8> [[SUB]] + // CHECK: select <64 x i1> %{{.*}}, <64 x i8> [[SEL]], <64 x i8> %{{.*}} return _mm512_mask_abs_epi8(__W,__U,__A); } __m512i test_mm512_maskz_abs_epi8(__mmask64 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_maskz_abs_epi8 - // CHECK: @llvm.x86.avx512.mask.pabs.b.512 + // CHECK: [[SUB:%.*]] = sub <64 x i8> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <64 x i8> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[A]], <64 x i8> [[SUB]] + // CHECK: select <64 x i1> %{{.*}}, <64 x i8> [[SEL]], <64 x i8> %{{.*}} return _mm512_maskz_abs_epi8(__U,__A); } __m512i test_mm512_abs_epi16(__m512i __A) { // CHECK-LABEL: @test_mm512_abs_epi16 - // CHECK: @llvm.x86.avx512.mask.pabs.w.512 + // CHECK: [[SUB:%.*]] = sub <32 x i16> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <32 x i16> [[A]], zeroinitializer + // CHECK: select <32 x i1> [[CMP]], <32 x i16> [[A]], <32 x i16> [[SUB]] return _mm512_abs_epi16(__A); } __m512i test_mm512_mask_abs_epi16(__m512i __W, __mmask32 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_mask_abs_epi16 - // CHECK: @llvm.x86.avx512.mask.pabs.w.512 + // CHECK: [[SUB:%.*]] = sub <32 x i16> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <32 x i16> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[A]], <32 x i16> [[SUB]] + // CHECK: select <32 x i1> %{{.*}}, <32 x i16> [[SEL]], <32 x i16> %{{.*}} return _mm512_mask_abs_epi16(__W,__U,__A); } __m512i test_mm512_maskz_abs_epi16(__mmask32 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_maskz_abs_epi16 - // CHECK: @llvm.x86.avx512.mask.pabs.w.512 + // CHECK: [[SUB:%.*]] = sub <32 x i16> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <32 x i16> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[A]], <32 x i16> [[SUB]] + // CHECK: select <32 x i1> %{{.*}}, <32 x i16> [[SEL]], <32 x i16> %{{.*}} return _mm512_maskz_abs_epi16(__U,__A); } __m512i test_mm512_packs_epi32(__m512i __A, __m512i __B) { diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c index 317539ab2ec..6e22e4e66e6 100644 --- a/clang/test/CodeGen/avx512f-builtins.c +++ b/clang/test/CodeGen/avx512f-builtins.c @@ -8044,28 +8044,40 @@ __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D, __m512i test_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_mask_abs_epi64 - // CHECK: @llvm.x86.avx512.mask.pabs.q.512 + // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]] + // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}} return _mm512_mask_abs_epi64 (__W,__U,__A); } __m512i test_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_maskz_abs_epi64 - // CHECK: @llvm.x86.avx512.mask.pabs.q.512 + // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]] + // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}} return _mm512_maskz_abs_epi64 (__U,__A); } __m512i test_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_mask_abs_epi32 - // CHECK: @llvm.x86.avx512.mask.pabs.d.512 + // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]] + // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}} return _mm512_mask_abs_epi32 (__W,__U,__A); } __m512i test_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_maskz_abs_epi32 - // CHECK: @llvm.x86.avx512.mask.pabs.d.512 + // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]] + // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}} return _mm512_maskz_abs_epi32 (__U,__A); } diff --git a/clang/test/CodeGen/avx512vl-builtins.c b/clang/test/CodeGen/avx512vl-builtins.c index c64b7bcec23..f325460e07b 100644 --- a/clang/test/CodeGen/avx512vl-builtins.c +++ b/clang/test/CodeGen/avx512vl-builtins.c @@ -2502,56 +2502,82 @@ __m256 test_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) { } __m128i test_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_abs_epi32 - // CHECK: @llvm.x86.ssse3.pabs.d.128 - // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <4 x i32> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[A]], <4 x i32> [[SUB]] + // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[SEL]], <4 x i32> %{{.*}} return _mm_mask_abs_epi32(__W,__U,__A); } __m128i test_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_maskz_abs_epi32 - // CHECK: @llvm.x86.ssse3.pabs.d.128 - // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <4 x i32> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[A]], <4 x i32> [[SUB]] + // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[SEL]], <4 x i32> %{{.*}} return _mm_maskz_abs_epi32(__U,__A); } __m256i test_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_mask_abs_epi32 - // CHECK: @llvm.x86.avx2.pabs.d - // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <8 x i32> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[A]], <8 x i32> [[SUB]] + // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[SEL]], <8 x i32> %{{.*}} return _mm256_mask_abs_epi32(__W,__U,__A); } __m256i test_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_maskz_abs_epi32 - // CHECK: @llvm.x86.avx2.pabs.d - // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <8 x i32> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[A]], <8 x i32> [[SUB]] + // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[SEL]], <8 x i32> %{{.*}} return _mm256_maskz_abs_epi32(__U,__A); } __m128i test_mm_abs_epi64(__m128i __A) { // CHECK-LABEL: @test_mm_abs_epi64 - // CHECK: @llvm.x86.avx512.mask.pabs.q.128 + // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer + // CHECK: select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]] + return _mm_abs_epi64(__A); } __m128i test_mm_mask_abs_epi64(__m128i __W, __mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_abs_epi64 - // CHECK: @llvm.x86.avx512.mask.pabs.q.128 + // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]] + // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[SEL]], <2 x i64> %{{.*}} + return _mm_mask_abs_epi64(__W,__U,__A); } __m128i test_mm_maskz_abs_epi64(__mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_maskz_abs_epi64 - // CHECK: @llvm.x86.avx512.mask.pabs.q.128 + // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]] + // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[SEL]], <2 x i64> %{{.*}} return _mm_maskz_abs_epi64(__U,__A); } __m256i test_mm256_abs_epi64(__m256i __A) { // CHECK-LABEL: @test_mm256_abs_epi64 - // CHECK: @llvm.x86.avx512.mask.pabs.q.256 + // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer + // CHECK: select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]] return _mm256_abs_epi64(__A); } __m256i test_mm256_mask_abs_epi64(__m256i __W, __mmask8 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_mask_abs_epi64 - // CHECK: @llvm.x86.avx512.mask.pabs.q.256 + // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]] + // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[SEL]], <4 x i64> %{{.*}} return _mm256_mask_abs_epi64(__W,__U,__A); } __m256i test_mm256_maskz_abs_epi64(__mmask8 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_maskz_abs_epi64 - // CHECK: @llvm.x86.avx512.mask.pabs.q.256 + // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]] + // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[SEL]], <4 x i64> %{{.*}} return _mm256_maskz_abs_epi64(__U,__A); } __m128i test_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) { diff --git a/clang/test/CodeGen/avx512vlbw-builtins.c b/clang/test/CodeGen/avx512vlbw-builtins.c index 3aeaf5d43fb..11c583a2418 100644 --- a/clang/test/CodeGen/avx512vlbw-builtins.c +++ b/clang/test/CodeGen/avx512vlbw-builtins.c @@ -898,57 +898,73 @@ __m256i test_mm256_mask_blend_epi16(__mmask16 __U, __m256i __A, __m256i __W) { __m128i test_mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_abs_epi8 - // CHECK: @llvm.x86.ssse3.pabs.b - // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <16 x i8> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <16 x i8> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[A]], <16 x i8> [[SUB]] + // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[SEL]], <16 x i8> %{{.*}} return _mm_mask_abs_epi8(__W,__U,__A); } __m128i test_mm_maskz_abs_epi8(__mmask16 __U, __m128i __A) { // CHECK-LABEL: @test_mm_maskz_abs_epi8 - // CHECK: @llvm.x86.ssse3.pabs.b - // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <16 x i8> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <16 x i8> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[A]], <16 x i8> [[SUB]] + // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[SEL]], <16 x i8> %{{.*}} return _mm_maskz_abs_epi8(__U,__A); } __m256i test_mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_mask_abs_epi8 - // CHECK: @llvm.x86.avx2.pabs.b - // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <32 x i8> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <32 x i8> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[A]], <32 x i8> [[SUB]] + // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[SEL]], <32 x i8> %{{.*}} return _mm256_mask_abs_epi8(__W,__U,__A); } __m256i test_mm256_maskz_abs_epi8(__mmask32 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_maskz_abs_epi8 - // CHECK: @llvm.x86.avx2.pabs.b - // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <32 x i8> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <32 x i8> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[A]], <32 x i8> [[SUB]] + // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[SEL]], <32 x i8> %{{.*}} return _mm256_maskz_abs_epi8(__U,__A); } __m128i test_mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_abs_epi16 - // CHECK: @llvm.x86.ssse3.pabs.w - // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <8 x i16> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <8 x i16> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[A]], <8 x i16> [[SUB]] + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[SEL]], <8 x i16> %{{.*}} return _mm_mask_abs_epi16(__W,__U,__A); } __m128i test_mm_maskz_abs_epi16(__mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_maskz_abs_epi16 - // CHECK: @llvm.x86.ssse3.pabs.w - // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <8 x i16> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <8 x i16> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[A]], <8 x i16> [[SUB]] + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[SEL]], <8 x i16> %{{.*}} return _mm_maskz_abs_epi16(__U,__A); } __m256i test_mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_mask_abs_epi16 - // CHECK: @llvm.x86.avx2.pabs.w - // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <16 x i16> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <16 x i16> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[A]], <16 x i16> [[SUB]] + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[SEL]], <16 x i16> %{{.*}} return _mm256_mask_abs_epi16(__W,__U,__A); } __m256i test_mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_maskz_abs_epi16 - // CHECK: @llvm.x86.avx2.pabs.w - // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + // CHECK: [[SUB:%.*]] = sub <16 x i16> zeroinitializer, [[A:%.*]] + // CHECK: [[CMP:%.*]] = icmp sgt <16 x i16> [[A]], zeroinitializer + // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[A]], <16 x i16> [[SUB]] + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[SEL]], <16 x i16> %{{.*}} return _mm256_maskz_abs_epi16(__U,__A); } diff --git a/clang/test/CodeGen/ssse3-builtins.c b/clang/test/CodeGen/ssse3-builtins.c index b2279e277cd..4fd22aa79b4 100644 --- a/clang/test/CodeGen/ssse3-builtins.c +++ b/clang/test/CodeGen/ssse3-builtins.c @@ -7,19 +7,25 @@ __m128i test_mm_abs_epi8(__m128i a) { // CHECK-LABEL: test_mm_abs_epi8 - // CHECK: call <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8> %{{.*}}) + // CHECK: [[SUB:%.+]] = sub <16 x i8> zeroinitializer, [[A:%.+]] + // CHECK: [[CMP:%.+]] = icmp sgt <16 x i8> [[A]], zeroinitializer + // CHECK: %{{.*}} = select <16 x i1> [[CMP]], <16 x i8> [[A]], <16 x i8> [[SUB]] return _mm_abs_epi8(a); } __m128i test_mm_abs_epi16(__m128i a) { // CHECK-LABEL: test_mm_abs_epi16 - // CHECK: call <8 x i16> @llvm.x86.ssse3.pabs.w.128(<8 x i16> %{{.*}}) + // CHECK: [[SUB:%.+]] = sub <8 x i16> zeroinitializer, [[A:%.+]] + // CHECK: [[CMP:%.+]] = icmp sgt <8 x i16> [[A]], zeroinitializer + // CHECK: %{{.*}} = select <8 x i1> [[CMP]], <8 x i16> [[A]], <8 x i16> [[SUB]] return _mm_abs_epi16(a); } __m128i test_mm_abs_epi32(__m128i a) { // CHECK-LABEL: test_mm_abs_epi32 - // CHECK: call <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32> %{{.*}}) + // CHECK: [[SUB:%.+]] = sub <4 x i32> zeroinitializer, [[A:%.+]] + // CHECK: [[CMP:%.+]] = icmp sgt <4 x i32> [[A]], zeroinitializer + // CHECK: %{{.*}} = select <4 x i1> [[CMP]], <4 x i32> [[A]], <4 x i32> [[SUB]] return _mm_abs_epi32(a); } |