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