1 | // RUN: %clang_cc1 %s -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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |