]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/avx512vlcd-builtins.c
Vendor import of clang trunk r290819:
[FreeBSD/FreeBSD.git] / test / CodeGen / avx512vlcd-builtins.c
1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512vl -target-feature +avx512cd -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3
4 #include <immintrin.h>
5
6 __m128i test_mm_broadcastmb_epi64(__mmask8 __A) {
7   // CHECK-LABEL: @test_mm_broadcastmb_epi64
8   // CHECK: @llvm.x86.avx512.broadcastmb.128
9   return _mm_broadcastmb_epi64(__A); 
10 }
11
12 __m256i test_mm256_broadcastmb_epi64(__mmask8 __A) {
13   // CHECK-LABEL: @test_mm256_broadcastmb_epi64
14   // CHECK: @llvm.x86.avx512.broadcastmb.256
15   return _mm256_broadcastmb_epi64(__A); 
16 }
17
18 __m128i test_mm_broadcastmw_epi32(__mmask16 __A) {
19   // CHECK-LABEL: @test_mm_broadcastmw_epi32
20   // CHECK: @llvm.x86.avx512.broadcastmw.128
21   return _mm_broadcastmw_epi32(__A); 
22 }
23
24 __m256i test_mm256_broadcastmw_epi32(__mmask16 __A) {
25   // CHECK-LABEL: @test_mm256_broadcastmw_epi32
26   // CHECK: @llvm.x86.avx512.broadcastmw.256
27   return _mm256_broadcastmw_epi32(__A); 
28 }
29
30 __m128i test_mm_conflict_epi64(__m128i __A) {
31   // CHECK-LABEL: @test_mm_conflict_epi64
32   // CHECK: @llvm.x86.avx512.mask.conflict.q.128
33   return _mm_conflict_epi64(__A); 
34 }
35
36 __m128i test_mm_mask_conflict_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
37   // CHECK-LABEL: @test_mm_mask_conflict_epi64
38   // CHECK: @llvm.x86.avx512.mask.conflict.q.128
39   return _mm_mask_conflict_epi64(__W, __U, __A); 
40 }
41
42 __m128i test_mm_maskz_conflict_epi64(__mmask8 __U, __m128i __A) {
43   // CHECK-LABEL: @test_mm_maskz_conflict_epi64
44   // CHECK: @llvm.x86.avx512.mask.conflict.q.128
45   return _mm_maskz_conflict_epi64(__U, __A); 
46 }
47
48 __m256i test_mm256_conflict_epi64(__m256i __A) {
49   // CHECK-LABEL: @test_mm256_conflict_epi64
50   // CHECK: @llvm.x86.avx512.mask.conflict.q.256
51   return _mm256_conflict_epi64(__A); 
52 }
53
54 __m256i test_mm256_mask_conflict_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
55   // CHECK-LABEL: @test_mm256_mask_conflict_epi64
56   // CHECK: @llvm.x86.avx512.mask.conflict.q.256
57   return _mm256_mask_conflict_epi64(__W, __U, __A); 
58 }
59
60 __m256i test_mm256_maskz_conflict_epi64(__mmask8 __U, __m256i __A) {
61   // CHECK-LABEL: @test_mm256_maskz_conflict_epi64
62   // CHECK: @llvm.x86.avx512.mask.conflict.q.256
63   return _mm256_maskz_conflict_epi64(__U, __A); 
64 }
65
66 __m128i test_mm_conflict_epi32(__m128i __A) {
67   // CHECK-LABEL: @test_mm_conflict_epi32
68   // CHECK: @llvm.x86.avx512.mask.conflict.d.128
69   return _mm_conflict_epi32(__A); 
70 }
71
72 __m128i test_mm_mask_conflict_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
73   // CHECK-LABEL: @test_mm_mask_conflict_epi32
74   // CHECK: @llvm.x86.avx512.mask.conflict.d.128
75   return _mm_mask_conflict_epi32(__W, __U, __A); 
76 }
77
78 __m128i test_mm_maskz_conflict_epi32(__mmask8 __U, __m128i __A) {
79   // CHECK-LABEL: @test_mm_maskz_conflict_epi32
80   // CHECK: @llvm.x86.avx512.mask.conflict.d.128
81   return _mm_maskz_conflict_epi32(__U, __A); 
82 }
83
84 __m256i test_mm256_conflict_epi32(__m256i __A) {
85   // CHECK-LABEL: @test_mm256_conflict_epi32
86   // CHECK: @llvm.x86.avx512.mask.conflict.d.256
87   return _mm256_conflict_epi32(__A); 
88 }
89
90 __m256i test_mm256_mask_conflict_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
91   // CHECK-LABEL: @test_mm256_mask_conflict_epi32
92   // CHECK: @llvm.x86.avx512.mask.conflict.d.256
93   return _mm256_mask_conflict_epi32(__W, __U, __A); 
94 }
95
96 __m256i test_mm256_maskz_conflict_epi32(__mmask8 __U, __m256i __A) {
97   // CHECK-LABEL: @test_mm256_maskz_conflict_epi32
98   // CHECK: @llvm.x86.avx512.mask.conflict.d.256
99   return _mm256_maskz_conflict_epi32(__U, __A); 
100 }
101
102 __m128i test_mm_lzcnt_epi32(__m128i __A) {
103   // CHECK-LABEL: @test_mm_lzcnt_epi32
104   // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
105   return _mm_lzcnt_epi32(__A); 
106 }
107
108 __m128i test_mm_mask_lzcnt_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
109   // CHECK-LABEL: @test_mm_mask_lzcnt_epi32
110   // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
111   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
112   return _mm_mask_lzcnt_epi32(__W, __U, __A); 
113 }
114
115 __m128i test_mm_maskz_lzcnt_epi32(__mmask8 __U, __m128i __A) {
116   // CHECK-LABEL: @test_mm_maskz_lzcnt_epi32
117   // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
118   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
119   return _mm_maskz_lzcnt_epi32(__U, __A); 
120 }
121
122 __m256i test_mm256_lzcnt_epi32(__m256i __A) {
123   // CHECK-LABEL: @test_mm256_lzcnt_epi32
124   // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
125   return _mm256_lzcnt_epi32(__A); 
126 }
127
128 __m256i test_mm256_mask_lzcnt_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
129   // CHECK-LABEL: @test_mm256_mask_lzcnt_epi32
130   // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
131   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
132   return _mm256_mask_lzcnt_epi32(__W, __U, __A); 
133 }
134
135 __m256i test_mm256_maskz_lzcnt_epi32(__mmask8 __U, __m256i __A) {
136   // CHECK-LABEL: @test_mm256_maskz_lzcnt_epi32
137   // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
138   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
139   return _mm256_maskz_lzcnt_epi32(__U, __A); 
140 }
141
142 __m128i test_mm_lzcnt_epi64(__m128i __A) {
143   // CHECK-LABEL: @test_mm_lzcnt_epi64
144   // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
145   return _mm_lzcnt_epi64(__A); 
146 }
147
148 __m128i test_mm_mask_lzcnt_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
149   // CHECK-LABEL: @test_mm_mask_lzcnt_epi64
150   // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
151   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
152   return _mm_mask_lzcnt_epi64(__W, __U, __A); 
153 }
154
155 __m128i test_mm_maskz_lzcnt_epi64(__mmask8 __U, __m128i __A) {
156   // CHECK-LABEL: @test_mm_maskz_lzcnt_epi64
157   // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
158   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
159   return _mm_maskz_lzcnt_epi64(__U, __A); 
160 }
161
162 __m256i test_mm256_lzcnt_epi64(__m256i __A) {
163   // CHECK-LABEL: @test_mm256_lzcnt_epi64
164   // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
165   return _mm256_lzcnt_epi64(__A); 
166 }
167
168 __m256i test_mm256_mask_lzcnt_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
169   // CHECK-LABEL: @test_mm256_mask_lzcnt_epi64
170   // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
171   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
172   return _mm256_mask_lzcnt_epi64(__W, __U, __A); 
173 }
174
175 __m256i test_mm256_maskz_lzcnt_epi64(__mmask8 __U, __m256i __A) {
176   // CHECK-LABEL: @test_mm256_maskz_lzcnt_epi64
177   // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
178   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
179   return _mm256_maskz_lzcnt_epi64(__U, __A); 
180 }