diff options
Diffstat (limited to 'clang/test/CodeGen/avx512vldq-builtins.c')
| -rw-r--r-- | clang/test/CodeGen/avx512vldq-builtins.c | 106 |
1 files changed, 73 insertions, 33 deletions
diff --git a/clang/test/CodeGen/avx512vldq-builtins.c b/clang/test/CodeGen/avx512vldq-builtins.c index 68d793c9235..75af588c914 100644 --- a/clang/test/CodeGen/avx512vldq-builtins.c +++ b/clang/test/CodeGen/avx512vldq-builtins.c @@ -43,193 +43,233 @@ __m128i test_mm_maskz_mullo_epi64 (__mmask8 __U, __m128i __A, __m128i __B) { __m256d test_mm256_mask_andnot_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { // CHECK-LABEL: @test_mm256_mask_andnot_pd - // CHECK: @llvm.x86.avx512.mask.andn.pd.256 + // CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1> + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} return (__m256d) _mm256_mask_andnot_pd ( __W, __U, __A, __B); } __m256d test_mm256_maskz_andnot_pd (__mmask8 __U, __m256d __A, __m256d __B) { // CHECK-LABEL: @test_mm256_maskz_andnot_pd - // CHECK: @llvm.x86.avx512.mask.andn.pd.256 + // CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1> + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} return (__m256d) _mm256_maskz_andnot_pd (__U, __A, __B); } __m128d test_mm_mask_andnot_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { // CHECK-LABEL: @test_mm_mask_andnot_pd - // CHECK: @llvm.x86.avx512.mask.andn.pd.128 + // CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1> + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}} return (__m128d) _mm_mask_andnot_pd ( __W, __U, __A, __B); } __m128d test_mm_maskz_andnot_pd (__mmask8 __U, __m128d __A, __m128d __B) { // CHECK-LABEL: @test_mm_maskz_andnot_pd - // CHECK: @llvm.x86.avx512.mask.andn.pd.128 + // CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1> + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}} return (__m128d) _mm_maskz_andnot_pd (__U, __A, __B); } __m256 test_mm256_mask_andnot_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { // CHECK-LABEL: @test_mm256_mask_andnot_ps - // CHECK: @llvm.x86.avx512.mask.andn.ps.256 + // CHECK: xor <8 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1> + // CHECK: and <8 x i32> %{{.*}}, %{{.*}} + // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} return (__m256) _mm256_mask_andnot_ps ( __W, __U, __A, __B); } __m256 test_mm256_maskz_andnot_ps (__mmask8 __U, __m256 __A, __m256 __B) { // CHECK-LABEL: @test_mm256_maskz_andnot_ps - // CHECK: @llvm.x86.avx512.mask.andn.ps.256 + // CHECK: xor <8 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1> + // CHECK: and <8 x i32> %{{.*}}, %{{.*}} + // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} return (__m256) _mm256_maskz_andnot_ps (__U, __A, __B); } __m128 test_mm_mask_andnot_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { // CHECK-LABEL: @test_mm_mask_andnot_ps - // CHECK: @llvm.x86.avx512.mask.andn.ps.128 + // CHECK: xor <4 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1> + // CHECK: and <4 x i32> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} return (__m128) _mm_mask_andnot_ps ( __W, __U, __A, __B); } __m128 test_mm_maskz_andnot_ps (__mmask8 __U, __m128 __A, __m128 __B) { // CHECK-LABEL: @test_mm_maskz_andnot_ps - // CHECK: @llvm.x86.avx512.mask.andn.ps.128 + // CHECK: xor <4 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1> + // CHECK: and <4 x i32> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} return (__m128) _mm_maskz_andnot_ps (__U, __A, __B); } __m256d test_mm256_mask_and_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { // CHECK-LABEL: @test_mm256_mask_and_pd - // CHECK: @llvm.x86.avx512.mask.and.pd.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} return (__m256d) _mm256_mask_and_pd ( __W, __U, __A, __B); } __m256d test_mm256_maskz_and_pd (__mmask8 __U, __m256d __A, __m256d __B) { // CHECK-LABEL: @test_mm256_maskz_and_pd - // CHECK: @llvm.x86.avx512.mask.and.pd.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} return (__m256d) _mm256_maskz_and_pd (__U, __A, __B); } __m128d test_mm_mask_and_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { // CHECK-LABEL: @test_mm_mask_and_pd - // CHECK: @llvm.x86.avx512.mask.and.pd.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}} return (__m128d) _mm_mask_and_pd ( __W, __U, __A, __B); } __m128d test_mm_maskz_and_pd (__mmask8 __U, __m128d __A, __m128d __B) { // CHECK-LABEL: @test_mm_maskz_and_pd - // CHECK: @llvm.x86.avx512.mask.and.pd.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}} return (__m128d) _mm_maskz_and_pd (__U, __A, __B); } __m256 test_mm256_mask_and_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { // CHECK-LABEL: @test_mm256_mask_and_ps - // CHECK: @llvm.x86.avx512.mask.and.ps.256 + // CHECK: and <8 x i32> %{{.*}}, %{{.*}} + // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} return (__m256) _mm256_mask_and_ps ( __W, __U, __A, __B); } __m256 test_mm256_maskz_and_ps (__mmask8 __U, __m256 __A, __m256 __B) { // CHECK-LABEL: @test_mm256_maskz_and_ps - // CHECK: @llvm.x86.avx512.mask.and.ps.256 + // CHECK: and <8 x i32> %{{.*}}, %{{.*}} + // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} return (__m256) _mm256_maskz_and_ps (__U, __A, __B); } __m128 test_mm_mask_and_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { // CHECK-LABEL: @test_mm_mask_and_ps - // CHECK: @llvm.x86.avx512.mask.and.ps.128 + // CHECK: and <4 x i32> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} return (__m128) _mm_mask_and_ps ( __W, __U, __A, __B); } __m128 test_mm_maskz_and_ps (__mmask8 __U, __m128 __A, __m128 __B) { // CHECK-LABEL: @test_mm_maskz_and_ps - // CHECK: @llvm.x86.avx512.mask.and.ps.128 + // CHECK: and <4 x i32> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} return (__m128) _mm_maskz_and_ps (__U, __A, __B); } __m256d test_mm256_mask_xor_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { // CHECK-LABEL: @test_mm256_mask_xor_pd - // CHECK: @llvm.x86.avx512.mask.xor.pd.256 + // CHECK: xor <4 x i64> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} return (__m256d) _mm256_mask_xor_pd ( __W, __U, __A, __B); } __m256d test_mm256_maskz_xor_pd (__mmask8 __U, __m256d __A, __m256d __B) { // CHECK-LABEL: @test_mm256_maskz_xor_pd - // CHECK: @llvm.x86.avx512.mask.xor.pd.256 + // CHECK: xor <4 x i64> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} return (__m256d) _mm256_maskz_xor_pd (__U, __A, __B); } __m128d test_mm_mask_xor_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { // CHECK-LABEL: @test_mm_mask_xor_pd - // CHECK: @llvm.x86.avx512.mask.xor.pd.128 + // CHECK: xor <2 x i64> %{{.*}}, %{{.*}} + // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}} return (__m128d) _mm_mask_xor_pd ( __W, __U, __A, __B); } __m128d test_mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B) { // CHECK-LABEL: @test_mm_maskz_xor_pd - // CHECK: @llvm.x86.avx512.mask.xor.pd.128 + // CHECK: xor <2 x i64> %{{.*}}, %{{.*}} + // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}} return (__m128d) _mm_maskz_xor_pd (__U, __A, __B); } __m256 test_mm256_mask_xor_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { // CHECK-LABEL: @test_mm256_mask_xor_ps - // CHECK: @llvm.x86.avx512.mask.xor.ps.256 + // CHECK: xor <8 x i32> %{{.*}}, %{{.*}} + // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} return (__m256) _mm256_mask_xor_ps ( __W, __U, __A, __B); } __m256 test_mm256_maskz_xor_ps (__mmask8 __U, __m256 __A, __m256 __B) { // CHECK-LABEL: @test_mm256_maskz_xor_ps - // CHECK: @llvm.x86.avx512.mask.xor.ps.256 + // CHECK: xor <8 x i32> %{{.*}}, %{{.*}} + // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} return (__m256) _mm256_maskz_xor_ps (__U, __A, __B); } __m128 test_mm_mask_xor_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { // CHECK-LABEL: @test_mm_mask_xor_ps - // CHECK: @llvm.x86.avx512.mask.xor.ps.128 - return (__m128) _mm_mask_xor_ps ( __W, __U, __A, __B); + // CHECK: xor <4 x i32> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} + return (__m128) _mm_mask_xor_ps ( __W, __U, __A, __B); } __m128 test_mm_maskz_xor_ps (__mmask8 __U, __m128 __A, __m128 __B) { // CHECK-LABEL: @test_mm_maskz_xor_ps - // CHECK: @llvm.x86.avx512.mask.xor.ps.128 + // CHECK: xor <4 x i32> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} return (__m128) _mm_maskz_xor_ps (__U, __A, __B); } __m256d test_mm256_mask_or_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { // CHECK-LABEL: @test_mm256_mask_or_pd - // CHECK: @llvm.x86.avx512.mask.or.pd.256 + // CHECK: or <4 x i64> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} return (__m256d) _mm256_mask_or_pd ( __W, __U, __A, __B); } __m256d test_mm256_maskz_or_pd (__mmask8 __U, __m256d __A, __m256d __B) { // CHECK-LABEL: @test_mm256_maskz_or_pd - // CHECK: @llvm.x86.avx512.mask.or.pd.256 + // CHECK: or <4 x i64> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} return (__m256d) _mm256_maskz_or_pd (__U, __A, __B); } __m128d test_mm_mask_or_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { // CHECK-LABEL: @test_mm_mask_or_pd - // CHECK: @llvm.x86.avx512.mask.or.pd.128 + // CHECK: or <2 x i64> %{{.*}}, %{{.*}} + // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}} return (__m128d) _mm_mask_or_pd ( __W, __U, __A, __B); } __m128d test_mm_maskz_or_pd (__mmask8 __U, __m128d __A, __m128d __B) { // CHECK-LABEL: @test_mm_maskz_or_pd - // CHECK: @llvm.x86.avx512.mask.or.pd.128 + // CHECK: or <2 x i64> %{{.*}}, %{{.*}} + // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}} return (__m128d) _mm_maskz_or_pd (__U, __A, __B); } __m256 test_mm256_mask_or_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { // CHECK-LABEL: @test_mm256_mask_or_ps - // CHECK: @llvm.x86.avx512.mask.or.ps.256 + // CHECK: or <8 x i32> %{{.*}}, %{{.*}} + // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} return (__m256) _mm256_mask_or_ps ( __W, __U, __A, __B); } __m256 test_mm256_maskz_or_ps (__mmask8 __U, __m256 __A, __m256 __B) { // CHECK-LABEL: @test_mm256_maskz_or_ps - // CHECK: @llvm.x86.avx512.mask.or.ps.256 + // CHECK: or <8 x i32> %{{.*}}, %{{.*}} + // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} return (__m256) _mm256_maskz_or_ps (__U, __A, __B); } __m128 test_mm_mask_or_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { // CHECK-LABEL: @test_mm_mask_or_ps - // CHECK: @llvm.x86.avx512.mask.or.ps.128 + // CHECK: or <4 x i32> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} return (__m128) _mm_mask_or_ps ( __W, __U, __A, __B); } __m128 test_mm_maskz_or_ps (__mmask8 __U, __m128 __A, __m128 __B) { // CHECK-LABEL: @test_mm_maskz_or_ps - // CHECK: @llvm.x86.avx512.mask.or.ps.128 + // CHECK: or <4 x i32> %{{.*}}, %{{.*}} + // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} return (__m128) _mm_maskz_or_ps(__U, __A, __B); } |

