]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/avx512ifmavl-builtins.c
Vendor import of clang trunk r338150:
[FreeBSD/FreeBSD.git] / test / CodeGen / avx512ifmavl-builtins.c
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 }