1 // RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=x86_64-apple-darwin -target-feature +avx512ifma -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
2 
3 #include <immintrin.h>
4 
test_mm_madd52hi_epu64(__m128i __X,__m128i __Y,__m128i __Z)5 __m128i test_mm_madd52hi_epu64(__m128i __X, __m128i __Y, __m128i __Z) {
6   // CHECK-LABEL: @test_mm_madd52hi_epu64
7   // CHECK: @llvm.x86.avx512.vpmadd52h.uq.128
8   return _mm_madd52hi_epu64(__X, __Y, __Z);
9 }
10 
test_mm_mask_madd52hi_epu64(__m128i __W,__mmask8 __M,__m128i __X,__m128i __Y)11 __m128i test_mm_mask_madd52hi_epu64(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y) {
12   // CHECK-LABEL: @test_mm_mask_madd52hi_epu64
13   // CHECK: @llvm.x86.avx512.vpmadd52h.uq.128
14   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
15   return _mm_mask_madd52hi_epu64(__W, __M, __X, __Y);
16 }
17 
test_mm_maskz_madd52hi_epu64(__mmask8 __M,__m128i __X,__m128i __Y,__m128i __Z)18 __m128i test_mm_maskz_madd52hi_epu64(__mmask8 __M, __m128i __X, __m128i __Y, __m128i __Z) {
19   // CHECK-LABEL: @test_mm_maskz_madd52hi_epu64
20   // CHECK: @llvm.x86.avx512.vpmadd52h.uq.128
21   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
22   return _mm_maskz_madd52hi_epu64(__M, __X, __Y, __Z);
23 }
24 
test_mm256_madd52hi_epu64(__m256i __X,__m256i __Y,__m256i __Z)25 __m256i test_mm256_madd52hi_epu64(__m256i __X, __m256i __Y, __m256i __Z) {
26   // CHECK-LABEL: @test_mm256_madd52hi_epu64
27   // CHECK: @llvm.x86.avx512.vpmadd52h.uq.256
28   return _mm256_madd52hi_epu64(__X, __Y, __Z);
29 }
30 
test_mm256_mask_madd52hi_epu64(__m256i __W,__mmask8 __M,__m256i __X,__m256i __Y)31 __m256i test_mm256_mask_madd52hi_epu64(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
32   // CHECK-LABEL: @test_mm256_mask_madd52hi_epu64
33   // CHECK: @llvm.x86.avx512.vpmadd52h.uq.256
34   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
35   return _mm256_mask_madd52hi_epu64(__W, __M, __X, __Y);
36 }
37 
test_mm256_maskz_madd52hi_epu64(__mmask8 __M,__m256i __X,__m256i __Y,__m256i __Z)38 __m256i test_mm256_maskz_madd52hi_epu64(__mmask8 __M, __m256i __X, __m256i __Y, __m256i __Z) {
39   // CHECK-LABEL: @test_mm256_maskz_madd52hi_epu64
40   // CHECK: @llvm.x86.avx512.vpmadd52h.uq.256
41   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
42   return _mm256_maskz_madd52hi_epu64(__M, __X, __Y, __Z);
43 }
44 
test_mm_madd52lo_epu64(__m128i __X,__m128i __Y,__m128i __Z)45 __m128i test_mm_madd52lo_epu64(__m128i __X, __m128i __Y, __m128i __Z) {
46   // CHECK-LABEL: @test_mm_madd52lo_epu64
47   // CHECK: @llvm.x86.avx512.vpmadd52l.uq.128
48   return _mm_madd52lo_epu64(__X, __Y, __Z);
49 }
50 
test_mm_mask_madd52lo_epu64(__m128i __W,__mmask8 __M,__m128i __X,__m128i __Y)51 __m128i test_mm_mask_madd52lo_epu64(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y) {
52   // CHECK-LABEL: @test_mm_mask_madd52lo_epu64
53   // CHECK: @llvm.x86.avx512.vpmadd52l.uq.128
54   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
55   return _mm_mask_madd52lo_epu64(__W, __M, __X, __Y);
56 }
57 
test_mm_maskz_madd52lo_epu64(__mmask8 __M,__m128i __X,__m128i __Y,__m128i __Z)58 __m128i test_mm_maskz_madd52lo_epu64(__mmask8 __M, __m128i __X, __m128i __Y, __m128i __Z) {
59   // CHECK-LABEL: @test_mm_maskz_madd52lo_epu64
60   // CHECK: @llvm.x86.avx512.vpmadd52l.uq.128
61   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
62   return _mm_maskz_madd52lo_epu64(__M, __X, __Y, __Z);
63 }
64 
test_mm256_madd52lo_epu64(__m256i __X,__m256i __Y,__m256i __Z)65 __m256i test_mm256_madd52lo_epu64(__m256i __X, __m256i __Y, __m256i __Z) {
66   // CHECK-LABEL: @test_mm256_madd52lo_epu64
67   // CHECK: @llvm.x86.avx512.vpmadd52l.uq.256
68   return _mm256_madd52lo_epu64(__X, __Y, __Z);
69 }
70 
test_mm256_mask_madd52lo_epu64(__m256i __W,__mmask8 __M,__m256i __X,__m256i __Y)71 __m256i test_mm256_mask_madd52lo_epu64(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
72   // CHECK-LABEL: @test_mm256_mask_madd52lo_epu64
73   // CHECK: @llvm.x86.avx512.vpmadd52l.uq.256
74   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
75   return _mm256_mask_madd52lo_epu64(__W, __M, __X, __Y);
76 }
77 
test_mm256_maskz_madd52lo_epu64(__mmask8 __M,__m256i __X,__m256i __Y,__m256i __Z)78 __m256i test_mm256_maskz_madd52lo_epu64(__mmask8 __M, __m256i __X, __m256i __Y, __m256i __Z) {
79   // CHECK-LABEL: @test_mm256_maskz_madd52lo_epu64
80   // CHECK: @llvm.x86.avx512.vpmadd52l.uq.256
81   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
82   return _mm256_maskz_madd52lo_epu64(__M, __X, __Y, __Z);
83 }
84