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