blob: 52694f9ba83adbdda8dba71f225c0bbc060cbf67 [file] [log] [blame]
Bill Wendling9ab0a152010-10-03 03:39:54 +00001// RUN: %clang_cc1 %s -O3 -triple=i686-apple-darwin -target-feature +ssse3 -S -o - | FileCheck %s
2
3#include <tmmintrin.h>
4
5__m64 test1(__m64 a, __m64 b) {
6 // CHECK: phaddw
7 return _mm_hadd_pi16(a, b);
8}
9
10__m64 test2(__m64 a, __m64 b) {
11 // CHECK: phaddd
12 return _mm_hadd_pi32(a, b);
13}
14
15__m64 test3(__m64 a, __m64 b) {
16 // CHECK: phaddsw
17 return _mm_hadds_pi16(a, b);
18}
19
20__m64 test4(__m64 a, __m64 b) {
21 // CHECK: phsubw
22 return _mm_hsub_pi16(a, b);
23}
24
25__m64 test5(__m64 a, __m64 b) {
26 // CHECK: phsubd
27 return _mm_hsub_pi32(a, b);
28}
29
30__m64 test6(__m64 a, __m64 b) {
31 // CHECK: phsubsw
32 return _mm_hsubs_pi16(a, b);
33}
34
35__m64 test7(__m64 a, __m64 b) {
36 // CHECK: pmaddubsw
37 return _mm_maddubs_pi16(a, b);
38}
39
40__m64 test8(__m64 a, __m64 b) {
41 // CHECK: pmulhrsw
42 return _mm_mulhrs_pi16(a, b);
43}
44
45__m64 test9(__m64 a, __m64 b) {
46 // CHECK: pshufb
47 return _mm_shuffle_pi8(a, b);
48}
49
50__m64 test10(__m64 a, __m64 b) {
51 // CHECK: psignb
52 return _mm_sign_pi8(a, b);
53}
54
55__m64 test11(__m64 a, __m64 b) {
56 // CHECK: psignw
57 return _mm_sign_pi16(a, b);
58}
59
60__m64 test12(__m64 a, __m64 b) {
61 // CHECK: psignd
62 return _mm_sign_pi32(a, b);
63}
64
65__m64 test13(__m64 a) {
66 // CHECK: pabsb
67 return _mm_abs_pi8(a);
68}
69
70__m64 test14(__m64 a) {
71 // CHECK: pabsw
72 return _mm_abs_pi16(a);
73}
74
75__m64 test15(__m64 a) {
76 // CHECK: pabsd
77 return _mm_abs_pi32(a);
78}
79
80__m64 test16(__m64 a, __m64 b) {
81 // CHECK: palignr
82 return _mm_alignr_pi8(a, b, 2);
83}
84
85__m64 test17(__m128d a) {
86 // CHECK: cvtpd2pi
87 return _mm_cvtpd_pi32(a);
88}
89
90__m64 test18(__m128d a) {
91 // CHECK: cvttpd2pi
92 return _mm_cvttpd_pi32(a);
93}
94
95__m128d test19(__m64 a) {
96 // CHECK: cvtpi2pd
97 return _mm_cvtpi32_pd(a);
98}
99
100__m64 test20(__m64 a, __m64 b) {
101 // CHECK: pmuludq
102 return _mm_mul_su32(a, b);
103}
104
105__m64 test21(__m64 a) {
106 // CHECK: pshufw
107 return _mm_shuffle_pi16(a, 3);
108}
109
110__m64 test22(__m64 a, __m64 b) {
111 // CHECK: pmulhuw
112 return _mm_mulhi_pu16(a, b);
113}
114
115void test23(__m64 d, __m64 n, char *p) {
116 // CHECK: maskmovq
117 _mm_maskmove_si64(d, n, p);
118}
119
120int test24(__m64 a) {
121 // CHECK: pmovmskb
122 return _mm_movemask_pi8(a);
123}
124
125void test25(__m64 *p, __m64 a) {
126 // CHECK: movntq
127 _mm_stream_pi(p, a);
128}
129
130__m64 test26(__m64 a, __m64 b) {
131 // CHECK: pavgb
132 return _mm_avg_pu8(a, b);
133}
134
135__m64 test27(__m64 a, __m64 b) {
136 // CHECK: pavgw
137 return _mm_avg_pu16(a, b);
138}
139
140__m64 test28(__m64 a, __m64 b) {
141 // CHECK: pmaxub
142 return _mm_max_pu8(a, b);
143}
144
145__m64 test29(__m64 a, __m64 b) {
146 // CHECK: pmaxsw
147 return _mm_max_pi16(a, b);
148}
149
150__m64 test30(__m64 a, __m64 b) {
151 // CHECK: pminub
152 return _mm_min_pu8(a, b);
153}
154
155__m64 test31(__m64 a, __m64 b) {
156 // CHECK: pminsw
157 return _mm_min_pi16(a, b);
158}
159
160__m64 test32(__m64 a, __m64 b) {
161 // CHECK: psadbw
162 return _mm_sad_pu8(a, b);
163}
164
165__m64 test33(__m64 a, __m64 b) {
166 // CHECK: paddb
167 return _mm_add_pi8(a, b);
168}
169
170__m64 test34(__m64 a, __m64 b) {
171 // CHECK: paddw
172 return _mm_add_pi16(a, b);
173}
174
175__m64 test35(__m64 a, __m64 b) {
176 // CHECK: paddd
177 return _mm_add_pi32(a, b);
178}
179
180__m64 test36(__m64 a, __m64 b) {
181 // CHECK: paddq
182 return __builtin_ia32_paddq(a, b);
183}
184
185__m64 test37(__m64 a, __m64 b) {
186 // CHECK: paddsb
187 return _mm_adds_pi8(a, b);
188}
189
190__m64 test38(__m64 a, __m64 b) {
191 // CHECK: paddsw
192 return _mm_adds_pi16(a, b);
193}
194
195__m64 test39(__m64 a, __m64 b) {
196 // CHECK: paddusb
197 return _mm_adds_pu8(a, b);
198}
199
200__m64 test40(__m64 a, __m64 b) {
201 // CHECK: paddusw
202 return _mm_adds_pu16(a, b);
203}
204
205__m64 test41(__m64 a, __m64 b) {
206 // CHECK: psubb
207 return _mm_sub_pi8(a, b);
208}
209
210__m64 test42(__m64 a, __m64 b) {
211 // CHECK: psubw
212 return _mm_sub_pi16(a, b);
213}
214
215__m64 test43(__m64 a, __m64 b) {
216 // CHECK: psubd
217 return _mm_sub_pi32(a, b);
218}
219
220__m64 test44(__m64 a, __m64 b) {
221 // CHECK: psubq
222 return __builtin_ia32_psubq(a, b);
223}
224
225__m64 test45(__m64 a, __m64 b) {
226 // CHECK: psubsb
227 return _mm_subs_pi8(a, b);
228}
229
230__m64 test46(__m64 a, __m64 b) {
231 // CHECK: psubsw
232 return _mm_subs_pi16(a, b);
233}
234
235__m64 test47(__m64 a, __m64 b) {
236 // CHECK: psubusb
237 return _mm_subs_pu8(a, b);
238}
239
240__m64 test48(__m64 a, __m64 b) {
241 // CHECK: psubusw
242 return _mm_subs_pu16(a, b);
243}
244
245__m64 test49(__m64 a, __m64 b) {
246 // CHECK: pmaddwd
247 return _mm_madd_pi16(a, b);
248}
249
250__m64 test50(__m64 a, __m64 b) {
251 // CHECK: pmulhw
252 return _mm_mulhi_pi16(a, b);
253}
254
255__m64 test51(__m64 a, __m64 b) {
256 // CHECK: pmullw
257 return _mm_mullo_pi16(a, b);
258}
259
260__m64 test52(__m64 a, __m64 b) {
261 // CHECK: pmullw
262 return _mm_mullo_pi16(a, b);
263}
264
265__m64 test53(__m64 a, __m64 b) {
266 // CHECK: pand
267 return _mm_and_si64(a, b);
268}
269
270__m64 test54(__m64 a, __m64 b) {
271 // CHECK: pandn
272 return _mm_andnot_si64(a, b);
273}
274
275__m64 test55(__m64 a, __m64 b) {
276 // CHECK: por
277 return _mm_or_si64(a, b);
278}
279
280__m64 test56(__m64 a, __m64 b) {
281 // CHECK: pxor
282 return _mm_xor_si64(a, b);
283}
284
285__m64 test57(__m64 a, __m64 b) {
286 // CHECK: pavgb
287 return _mm_avg_pu8(a, b);
288}
289
290__m64 test58(__m64 a, __m64 b) {
291 // CHECK: pavgw
292 return _mm_avg_pu16(a, b);
293}
294
295__m64 test59(__m64 a, __m64 b) {
296 // CHECK: psllw
297 return _mm_sll_pi16(a, b);
298}
299
300__m64 test60(__m64 a, __m64 b) {
301 // CHECK: pslld
302 return _mm_sll_pi32(a, b);
303}
304
305__m64 test61(__m64 a, __m64 b) {
306 // CHECK: psllq
307 return _mm_sll_si64(a, b);
308}
309
310__m64 test62(__m64 a, __m64 b) {
311 // CHECK: psrlw
312 return _mm_srl_pi16(a, b);
313}
314
315__m64 test63(__m64 a, __m64 b) {
316 // CHECK: psrld
317 return _mm_srl_pi32(a, b);
318}
319
320__m64 test64(__m64 a, __m64 b) {
321 // CHECK: psrlq
322 return _mm_srl_si64(a, b);
323}
324
325__m64 test65(__m64 a, __m64 b) {
326 // CHECK: psraw
327 return _mm_sra_pi16(a, b);
328}
329
330__m64 test66(__m64 a, __m64 b) {
331 // CHECK: psrad
332 return _mm_sra_pi32(a, b);
333}
334
335__m64 test67(__m64 a) {
336 // CHECK: psllw
337 return _mm_slli_pi16(a, 3);
338}
339
340__m64 test68(__m64 a) {
341 // CHECK: pslld
342 return _mm_slli_pi32(a, 3);
343}
344
345__m64 test69(__m64 a) {
346 // CHECK: psllq
347 return _mm_slli_si64(a, 3);
348}
349
350__m64 test70(__m64 a) {
351 // CHECK: psrlw
352 return _mm_srli_pi16(a, 3);
353}
354
355__m64 test71(__m64 a) {
356 // CHECK: psrld
357 return _mm_srli_pi32(a, 3);
358}
359
360__m64 test72(__m64 a) {
361 // CHECK: psrlq
362 return _mm_srli_si64(a, 3);
363}
364
365__m64 test73(__m64 a) {
366 // CHECK: psraw
367 return _mm_srai_pi16(a, 3);
368}
369
370__m64 test74(__m64 a) {
371 // CHECK: psrad
372 return _mm_srai_pi32(a, 3);
373}
374
375__m64 test75(__m64 a, __m64 b) {
376 // CHECK: packsswb
377 return _mm_packs_pi16(a, b);
378}
379
380__m64 test76(__m64 a, __m64 b) {
381 // CHECK: packssdw
382 return _mm_packs_pi32(a, b);
383}
384
385__m64 test77(__m64 a, __m64 b) {
386 // CHECK: packuswb
387 return _mm_packs_pu16(a, b);
388}
389
390__m64 test78(__m64 a, __m64 b) {
391 // CHECK: punpckhbw
392 return _mm_unpackhi_pi8(a, b);
393}
394
395__m64 test79(__m64 a, __m64 b) {
396 // CHECK: punpckhwd
397 return _mm_unpackhi_pi16(a, b);
398}
399
400__m64 test80(__m64 a, __m64 b) {
401 // CHECK: punpckhdq
402 return _mm_unpackhi_pi32(a, b);
403}
404
405__m64 test81(__m64 a, __m64 b) {
406 // CHECK: punpcklbw
407 return _mm_unpacklo_pi8(a, b);
408}
409
410__m64 test82(__m64 a, __m64 b) {
411 // CHECK: punpcklwd
412 return _mm_unpacklo_pi16(a, b);
413}
414
415__m64 test83(__m64 a, __m64 b) {
416 // CHECK: punpckldq
417 return _mm_unpacklo_pi32(a, b);
418}
419
420__m64 test84(__m64 a, __m64 b) {
421 // CHECK: pcmpeqb
422 return _mm_cmpeq_pi8(a, b);
423}
424
425__m64 test85(__m64 a, __m64 b) {
426 // CHECK: pcmpeqw
427 return _mm_cmpeq_pi16(a, b);
428}
429
430__m64 test86(__m64 a, __m64 b) {
431 // CHECK: pcmpeqd
432 return _mm_cmpeq_pi32(a, b);
433}
434
435__m64 test87(__m64 a, __m64 b) {
436 // CHECK: pcmpgtb
437 return _mm_cmpgt_pi8(a, b);
438}
439
440__m64 test88(__m64 a, __m64 b) {
441 // CHECK: pcmpgtw
442 return _mm_cmpgt_pi16(a, b);
443}
444
445__m64 test89(__m64 a, __m64 b) {
446 // CHECK: pcmpgtd
447 return _mm_cmpgt_pi32(a, b);
448}