1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +xop -emit-llvm -o - -Wall -Werror | FileCheck %s
2 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +xop -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s
3 
4 
5 #include <x86intrin.h>
6 
7 // _MM_PCOMCTRL_LT
8 
test_mm_comlt_epu8(__m128i a,__m128i b)9 __m128i test_mm_comlt_epu8(__m128i a, __m128i b) {
10   // CHECK-LABEL: test_mm_comlt_epu8
11   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 0)
12   return _mm_comlt_epu8(a, b);
13 }
14 
test_mm_comlt_epu16(__m128i a,__m128i b)15 __m128i test_mm_comlt_epu16(__m128i a, __m128i b) {
16   // CHECK-LABEL: test_mm_comlt_epu16
17   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 0)
18   return _mm_comlt_epu16(a, b);
19 }
20 
test_mm_comlt_epu32(__m128i a,__m128i b)21 __m128i test_mm_comlt_epu32(__m128i a, __m128i b) {
22   // CHECK-LABEL: test_mm_comlt_epu32
23   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 0)
24   return _mm_comlt_epu32(a, b);
25 }
26 
test_mm_comlt_epu64(__m128i a,__m128i b)27 __m128i test_mm_comlt_epu64(__m128i a, __m128i b) {
28   // CHECK-LABEL: test_mm_comlt_epu64
29   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 0)
30   return _mm_comlt_epu64(a, b);
31 }
32 
test_mm_comlt_epi8(__m128i a,__m128i b)33 __m128i test_mm_comlt_epi8(__m128i a, __m128i b) {
34   // CHECK-LABEL: test_mm_comlt_epi8
35   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 0)
36   return _mm_comlt_epi8(a, b);
37 }
38 
test_mm_comlt_epi16(__m128i a,__m128i b)39 __m128i test_mm_comlt_epi16(__m128i a, __m128i b) {
40   // CHECK-LABEL: test_mm_comlt_epi16
41   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 0)
42   return _mm_comlt_epi16(a, b);
43 }
44 
test_mm_comlt_epi32(__m128i a,__m128i b)45 __m128i test_mm_comlt_epi32(__m128i a, __m128i b) {
46   // CHECK-LABEL: test_mm_comlt_epi32
47   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 0)
48   return _mm_comlt_epi32(a, b);
49 }
50 
test_mm_comlt_epi64(__m128i a,__m128i b)51 __m128i test_mm_comlt_epi64(__m128i a, __m128i b) {
52   // CHECK-LABEL: test_mm_comlt_epi64
53   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 0)
54   return _mm_comlt_epi64(a, b);
55 }
56 
57 // _MM_PCOMCTRL_LE
58 
test_mm_comle_epu8(__m128i a,__m128i b)59 __m128i test_mm_comle_epu8(__m128i a, __m128i b) {
60   // CHECK-LABEL: test_mm_comle_epu8
61   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 1)
62   return _mm_comle_epu8(a, b);
63 }
64 
test_mm_comle_epu16(__m128i a,__m128i b)65 __m128i test_mm_comle_epu16(__m128i a, __m128i b) {
66   // CHECK-LABEL: test_mm_comle_epu16
67   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 1)
68   return _mm_comle_epu16(a, b);
69 }
70 
test_mm_comle_epu32(__m128i a,__m128i b)71 __m128i test_mm_comle_epu32(__m128i a, __m128i b) {
72   // CHECK-LABEL: test_mm_comle_epu32
73   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 1)
74   return _mm_comle_epu32(a, b);
75 }
76 
test_mm_comle_epu64(__m128i a,__m128i b)77 __m128i test_mm_comle_epu64(__m128i a, __m128i b) {
78   // CHECK-LABEL: test_mm_comle_epu64
79   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 1)
80   return _mm_comle_epu64(a, b);
81 }
82 
test_mm_comle_epi8(__m128i a,__m128i b)83 __m128i test_mm_comle_epi8(__m128i a, __m128i b) {
84   // CHECK-LABEL: test_mm_comle_epi8
85   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 1)
86   return _mm_comle_epi8(a, b);
87 }
88 
test_mm_comle_epi16(__m128i a,__m128i b)89 __m128i test_mm_comle_epi16(__m128i a, __m128i b) {
90   // CHECK-LABEL: test_mm_comle_epi16
91   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 1)
92   return _mm_comle_epi16(a, b);
93 }
94 
test_mm_comle_epi32(__m128i a,__m128i b)95 __m128i test_mm_comle_epi32(__m128i a, __m128i b) {
96   // CHECK-LABEL: test_mm_comle_epi32
97   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 1)
98   return _mm_comle_epi32(a, b);
99 }
100 
test_mm_comle_epi64(__m128i a,__m128i b)101 __m128i test_mm_comle_epi64(__m128i a, __m128i b) {
102   // CHECK-LABEL: test_mm_comle_epi64
103   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 1)
104   return _mm_comle_epi64(a, b);
105 }
106 
107 // _MM_PCOMCTRL_GT
108 
test_mm_comgt_epu8(__m128i a,__m128i b)109 __m128i test_mm_comgt_epu8(__m128i a, __m128i b) {
110   // CHECK-LABEL: test_mm_comgt_epu8
111   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 2)
112   return _mm_comgt_epu8(a, b);
113 }
114 
test_mm_comgt_epu16(__m128i a,__m128i b)115 __m128i test_mm_comgt_epu16(__m128i a, __m128i b) {
116   // CHECK-LABEL: test_mm_comgt_epu16
117   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 2)
118   return _mm_comgt_epu16(a, b);
119 }
120 
test_mm_comgt_epu32(__m128i a,__m128i b)121 __m128i test_mm_comgt_epu32(__m128i a, __m128i b) {
122   // CHECK-LABEL: test_mm_comgt_epu32
123   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 2)
124   return _mm_comgt_epu32(a, b);
125 }
126 
test_mm_comgt_epu64(__m128i a,__m128i b)127 __m128i test_mm_comgt_epu64(__m128i a, __m128i b) {
128   // CHECK-LABEL: test_mm_comgt_epu64
129   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 2)
130   return _mm_comgt_epu64(a, b);
131 }
132 
test_mm_comgt_epi8(__m128i a,__m128i b)133 __m128i test_mm_comgt_epi8(__m128i a, __m128i b) {
134   // CHECK-LABEL: test_mm_comgt_epi8
135   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 2)
136   return _mm_comgt_epi8(a, b);
137 }
138 
test_mm_comgt_epi16(__m128i a,__m128i b)139 __m128i test_mm_comgt_epi16(__m128i a, __m128i b) {
140   // CHECK-LABEL: test_mm_comgt_epi16
141   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 2)
142   return _mm_comgt_epi16(a, b);
143 }
144 
test_mm_comgt_epi32(__m128i a,__m128i b)145 __m128i test_mm_comgt_epi32(__m128i a, __m128i b) {
146   // CHECK-LABEL: test_mm_comgt_epi32
147   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 2)
148   return _mm_comgt_epi32(a, b);
149 }
150 
test_mm_comgt_epi64(__m128i a,__m128i b)151 __m128i test_mm_comgt_epi64(__m128i a, __m128i b) {
152   // CHECK-LABEL: test_mm_comgt_epi64
153   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 2)
154   return _mm_comgt_epi64(a, b);
155 }
156 
157 // _MM_PCOMCTRL_GE
158 
test_mm_comge_epu8(__m128i a,__m128i b)159 __m128i test_mm_comge_epu8(__m128i a, __m128i b) {
160   // CHECK-LABEL: test_mm_comge_epu8
161   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 3)
162   return _mm_comge_epu8(a, b);
163 }
164 
test_mm_comge_epu16(__m128i a,__m128i b)165 __m128i test_mm_comge_epu16(__m128i a, __m128i b) {
166   // CHECK-LABEL: test_mm_comge_epu16
167   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 3)
168   return _mm_comge_epu16(a, b);
169 }
170 
test_mm_comge_epu32(__m128i a,__m128i b)171 __m128i test_mm_comge_epu32(__m128i a, __m128i b) {
172   // CHECK-LABEL: test_mm_comge_epu32
173   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 3)
174   return _mm_comge_epu32(a, b);
175 }
176 
test_mm_comge_epu64(__m128i a,__m128i b)177 __m128i test_mm_comge_epu64(__m128i a, __m128i b) {
178   // CHECK-LABEL: test_mm_comge_epu64
179   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 3)
180   return _mm_comge_epu64(a, b);
181 }
182 
test_mm_comge_epi8(__m128i a,__m128i b)183 __m128i test_mm_comge_epi8(__m128i a, __m128i b) {
184   // CHECK-LABEL: test_mm_comge_epi8
185   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 3)
186   return _mm_comge_epi8(a, b);
187 }
188 
test_mm_comge_epi16(__m128i a,__m128i b)189 __m128i test_mm_comge_epi16(__m128i a, __m128i b) {
190   // CHECK-LABEL: test_mm_comge_epi16
191   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 3)
192   return _mm_comge_epi16(a, b);
193 }
194 
test_mm_comge_epi32(__m128i a,__m128i b)195 __m128i test_mm_comge_epi32(__m128i a, __m128i b) {
196   // CHECK-LABEL: test_mm_comge_epi32
197   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 3)
198   return _mm_comge_epi32(a, b);
199 }
200 
test_mm_comge_epi64(__m128i a,__m128i b)201 __m128i test_mm_comge_epi64(__m128i a, __m128i b) {
202   // CHECK-LABEL: test_mm_comge_epi64
203   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 3)
204   return _mm_comge_epi64(a, b);
205 }
206 
207 // _MM_PCOMCTRL_EQ
208 
test_mm_comeq_epu8(__m128i a,__m128i b)209 __m128i test_mm_comeq_epu8(__m128i a, __m128i b) {
210   // CHECK-LABEL: test_mm_comeq_epu8
211   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 4)
212   return _mm_comeq_epu8(a, b);
213 }
214 
test_mm_comeq_epu16(__m128i a,__m128i b)215 __m128i test_mm_comeq_epu16(__m128i a, __m128i b) {
216   // CHECK-LABEL: test_mm_comeq_epu16
217   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 4)
218   return _mm_comeq_epu16(a, b);
219 }
220 
test_mm_comeq_epu32(__m128i a,__m128i b)221 __m128i test_mm_comeq_epu32(__m128i a, __m128i b) {
222   // CHECK-LABEL: test_mm_comeq_epu32
223   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 4)
224   return _mm_comeq_epu32(a, b);
225 }
226 
test_mm_comeq_epu64(__m128i a,__m128i b)227 __m128i test_mm_comeq_epu64(__m128i a, __m128i b) {
228   // CHECK-LABEL: test_mm_comeq_epu64
229   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 4)
230   return _mm_comeq_epu64(a, b);
231 }
232 
test_mm_comeq_epi8(__m128i a,__m128i b)233 __m128i test_mm_comeq_epi8(__m128i a, __m128i b) {
234   // CHECK-LABEL: test_mm_comeq_epi8
235   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 4)
236   return _mm_comeq_epi8(a, b);
237 }
238 
test_mm_comeq_epi16(__m128i a,__m128i b)239 __m128i test_mm_comeq_epi16(__m128i a, __m128i b) {
240   // CHECK-LABEL: test_mm_comeq_epi16
241   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 4)
242   return _mm_comeq_epi16(a, b);
243 }
244 
test_mm_comeq_epi32(__m128i a,__m128i b)245 __m128i test_mm_comeq_epi32(__m128i a, __m128i b) {
246   // CHECK-LABEL: test_mm_comeq_epi32
247   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 4)
248   return _mm_comeq_epi32(a, b);
249 }
250 
test_mm_comeq_epi64(__m128i a,__m128i b)251 __m128i test_mm_comeq_epi64(__m128i a, __m128i b) {
252   // CHECK-LABEL: test_mm_comeq_epi64
253   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 4)
254   return _mm_comeq_epi64(a, b);
255 }
256 
257 // _MM_PCOMCTRL_NEQ
258 
test_mm_comneq_epu8(__m128i a,__m128i b)259 __m128i test_mm_comneq_epu8(__m128i a, __m128i b) {
260   // CHECK-LABEL: test_mm_comneq_epu8
261   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 5)
262   return _mm_comneq_epu8(a, b);
263 }
264 
test_mm_comneq_epu16(__m128i a,__m128i b)265 __m128i test_mm_comneq_epu16(__m128i a, __m128i b) {
266   // CHECK-LABEL: test_mm_comneq_epu16
267   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 5)
268   return _mm_comneq_epu16(a, b);
269 }
270 
test_mm_comneq_epu32(__m128i a,__m128i b)271 __m128i test_mm_comneq_epu32(__m128i a, __m128i b) {
272   // CHECK-LABEL: test_mm_comneq_epu32
273   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 5)
274   return _mm_comneq_epu32(a, b);
275 }
276 
test_mm_comneq_epu64(__m128i a,__m128i b)277 __m128i test_mm_comneq_epu64(__m128i a, __m128i b) {
278   // CHECK-LABEL: test_mm_comneq_epu64
279   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 5)
280   return _mm_comneq_epu64(a, b);
281 }
282 
test_mm_comneq_epi8(__m128i a,__m128i b)283 __m128i test_mm_comneq_epi8(__m128i a, __m128i b) {
284   // CHECK-LABEL: test_mm_comneq_epi8
285   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 5)
286   return _mm_comneq_epi8(a, b);
287 }
288 
test_mm_comneq_epi16(__m128i a,__m128i b)289 __m128i test_mm_comneq_epi16(__m128i a, __m128i b) {
290   // CHECK-LABEL: test_mm_comneq_epi16
291   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 5)
292   return _mm_comneq_epi16(a, b);
293 }
294 
test_mm_comneq_epi32(__m128i a,__m128i b)295 __m128i test_mm_comneq_epi32(__m128i a, __m128i b) {
296   // CHECK-LABEL: test_mm_comneq_epi32
297   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 5)
298   return _mm_comneq_epi32(a, b);
299 }
300 
test_mm_comneq_epi64(__m128i a,__m128i b)301 __m128i test_mm_comneq_epi64(__m128i a, __m128i b) {
302   // CHECK-LABEL: test_mm_comneq_epi64
303   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 5)
304   return _mm_comneq_epi64(a, b);
305 }
306 
307 // _MM_PCOMCTRL_FALSE
308 
test_mm_comfalse_epu8(__m128i a,__m128i b)309 __m128i test_mm_comfalse_epu8(__m128i a, __m128i b) {
310   // CHECK-LABEL: test_mm_comfalse_epu8
311   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 6)
312   return _mm_comfalse_epu8(a, b);
313 }
314 
test_mm_comfalse_epu16(__m128i a,__m128i b)315 __m128i test_mm_comfalse_epu16(__m128i a, __m128i b) {
316   // CHECK-LABEL: test_mm_comfalse_epu16
317   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 6)
318   return _mm_comfalse_epu16(a, b);
319 }
320 
test_mm_comfalse_epu32(__m128i a,__m128i b)321 __m128i test_mm_comfalse_epu32(__m128i a, __m128i b) {
322   // CHECK-LABEL: test_mm_comfalse_epu32
323   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 6)
324   return _mm_comfalse_epu32(a, b);
325 }
326 
test_mm_comfalse_epu64(__m128i a,__m128i b)327 __m128i test_mm_comfalse_epu64(__m128i a, __m128i b) {
328   // CHECK-LABEL: test_mm_comfalse_epu64
329   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 6)
330   return _mm_comfalse_epu64(a, b);
331 }
332 
test_mm_comfalse_epi8(__m128i a,__m128i b)333 __m128i test_mm_comfalse_epi8(__m128i a, __m128i b) {
334   // CHECK-LABEL: test_mm_comfalse_epi8
335   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 6)
336   return _mm_comfalse_epi8(a, b);
337 }
338 
test_mm_comfalse_epi16(__m128i a,__m128i b)339 __m128i test_mm_comfalse_epi16(__m128i a, __m128i b) {
340   // CHECK-LABEL: test_mm_comfalse_epi16
341   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 6)
342   return _mm_comfalse_epi16(a, b);
343 }
344 
test_mm_comfalse_epi32(__m128i a,__m128i b)345 __m128i test_mm_comfalse_epi32(__m128i a, __m128i b) {
346   // CHECK-LABEL: test_mm_comfalse_epi32
347   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 6)
348   return _mm_comfalse_epi32(a, b);
349 }
350 
test_mm_comfalse_epi64(__m128i a,__m128i b)351 __m128i test_mm_comfalse_epi64(__m128i a, __m128i b) {
352   // CHECK-LABEL: test_mm_comfalse_epi64
353   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 6)
354   return _mm_comfalse_epi64(a, b);
355 }
356 
357 // _MM_PCOMCTRL_TRUE
358 
test_mm_comtrue_epu8(__m128i a,__m128i b)359 __m128i test_mm_comtrue_epu8(__m128i a, __m128i b) {
360   // CHECK-LABEL: test_mm_comtrue_epu8
361   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
362   return _mm_comtrue_epu8(a, b);
363 }
364 
test_mm_comtrue_epu16(__m128i a,__m128i b)365 __m128i test_mm_comtrue_epu16(__m128i a, __m128i b) {
366   // CHECK-LABEL: test_mm_comtrue_epu16
367   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 7)
368   return _mm_comtrue_epu16(a, b);
369 }
370 
test_mm_comtrue_epu32(__m128i a,__m128i b)371 __m128i test_mm_comtrue_epu32(__m128i a, __m128i b) {
372   // CHECK-LABEL: test_mm_comtrue_epu32
373   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 7)
374   return _mm_comtrue_epu32(a, b);
375 }
376 
test_mm_comtrue_epu64(__m128i a,__m128i b)377 __m128i test_mm_comtrue_epu64(__m128i a, __m128i b) {
378   // CHECK-LABEL: test_mm_comtrue_epu64
379   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 7)
380   return _mm_comtrue_epu64(a, b);
381 }
382 
test_mm_comtrue_epi8(__m128i a,__m128i b)383 __m128i test_mm_comtrue_epi8(__m128i a, __m128i b) {
384   // CHECK-LABEL: test_mm_comtrue_epi8
385   // CHECK: call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
386   return _mm_comtrue_epi8(a, b);
387 }
388 
test_mm_comtrue_epi16(__m128i a,__m128i b)389 __m128i test_mm_comtrue_epi16(__m128i a, __m128i b) {
390   // CHECK-LABEL: test_mm_comtrue_epi16
391   // CHECK: call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i8 7)
392   return _mm_comtrue_epi16(a, b);
393 }
394 
test_mm_comtrue_epi32(__m128i a,__m128i b)395 __m128i test_mm_comtrue_epi32(__m128i a, __m128i b) {
396   // CHECK-LABEL: test_mm_comtrue_epi32
397   // CHECK: call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i8 7)
398   return _mm_comtrue_epi32(a, b);
399 }
400 
test_mm_comtrue_epi64(__m128i a,__m128i b)401 __m128i test_mm_comtrue_epi64(__m128i a, __m128i b) {
402   // CHECK-LABEL: test_mm_comtrue_epi64
403   // CHECK: call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i8 7)
404   return _mm_comtrue_epi64(a, b);
405 }
406