1 ; RUN: llc < %s -march=x86 -mattr=+mmx,+ssse3,-avx | FileCheck %s
2 ; RUN: llc < %s -march=x86 -mattr=+avx | FileCheck %s
3 ; RUN: llc < %s -march=x86-64 -mattr=+mmx,+ssse3,-avx | FileCheck %s
4 ; RUN: llc < %s -march=x86-64 -mattr=+avx | FileCheck %s
6 declare x86_mmx @llvm.x86.ssse3.phadd.w(x86_mmx, x86_mmx) nounwind readnone
8 define i64 @test1(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
11 %0 = bitcast <1 x i64> %b to <4 x i16>
12 %1 = bitcast <1 x i64> %a to <4 x i16>
13 %2 = bitcast <4 x i16> %1 to x86_mmx
14 %3 = bitcast <4 x i16> %0 to x86_mmx
15 %4 = tail call x86_mmx @llvm.x86.ssse3.phadd.w(x86_mmx %2, x86_mmx %3) nounwind readnone
16 %5 = bitcast x86_mmx %4 to <4 x i16>
17 %6 = bitcast <4 x i16> %5 to <1 x i64>
18 %7 = extractelement <1 x i64> %6, i32 0
22 declare x86_mmx @llvm.x86.mmx.pcmpgt.d(x86_mmx, x86_mmx) nounwind readnone
24 define i64 @test88(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
27 %0 = bitcast <1 x i64> %b to <2 x i32>
28 %1 = bitcast <1 x i64> %a to <2 x i32>
29 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
30 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
31 %2 = tail call x86_mmx @llvm.x86.mmx.pcmpgt.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
32 %3 = bitcast x86_mmx %2 to <2 x i32>
33 %4 = bitcast <2 x i32> %3 to <1 x i64>
34 %5 = extractelement <1 x i64> %4, i32 0
38 declare x86_mmx @llvm.x86.mmx.pcmpgt.w(x86_mmx, x86_mmx) nounwind readnone
40 define i64 @test87(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
43 %0 = bitcast <1 x i64> %b to <4 x i16>
44 %1 = bitcast <1 x i64> %a to <4 x i16>
45 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
46 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
47 %2 = tail call x86_mmx @llvm.x86.mmx.pcmpgt.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
48 %3 = bitcast x86_mmx %2 to <4 x i16>
49 %4 = bitcast <4 x i16> %3 to <1 x i64>
50 %5 = extractelement <1 x i64> %4, i32 0
54 declare x86_mmx @llvm.x86.mmx.pcmpgt.b(x86_mmx, x86_mmx) nounwind readnone
56 define i64 @test86(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
59 %0 = bitcast <1 x i64> %b to <8 x i8>
60 %1 = bitcast <1 x i64> %a to <8 x i8>
61 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
62 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
63 %2 = tail call x86_mmx @llvm.x86.mmx.pcmpgt.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
64 %3 = bitcast x86_mmx %2 to <8 x i8>
65 %4 = bitcast <8 x i8> %3 to <1 x i64>
66 %5 = extractelement <1 x i64> %4, i32 0
70 declare x86_mmx @llvm.x86.mmx.pcmpeq.d(x86_mmx, x86_mmx) nounwind readnone
72 define i64 @test85(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
75 %0 = bitcast <1 x i64> %b to <2 x i32>
76 %1 = bitcast <1 x i64> %a to <2 x i32>
77 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
78 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
79 %2 = tail call x86_mmx @llvm.x86.mmx.pcmpeq.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
80 %3 = bitcast x86_mmx %2 to <2 x i32>
81 %4 = bitcast <2 x i32> %3 to <1 x i64>
82 %5 = extractelement <1 x i64> %4, i32 0
86 declare x86_mmx @llvm.x86.mmx.pcmpeq.w(x86_mmx, x86_mmx) nounwind readnone
88 define i64 @test84(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
91 %0 = bitcast <1 x i64> %b to <4 x i16>
92 %1 = bitcast <1 x i64> %a to <4 x i16>
93 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
94 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
95 %2 = tail call x86_mmx @llvm.x86.mmx.pcmpeq.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
96 %3 = bitcast x86_mmx %2 to <4 x i16>
97 %4 = bitcast <4 x i16> %3 to <1 x i64>
98 %5 = extractelement <1 x i64> %4, i32 0
102 declare x86_mmx @llvm.x86.mmx.pcmpeq.b(x86_mmx, x86_mmx) nounwind readnone
104 define i64 @test83(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
107 %0 = bitcast <1 x i64> %b to <8 x i8>
108 %1 = bitcast <1 x i64> %a to <8 x i8>
109 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
110 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
111 %2 = tail call x86_mmx @llvm.x86.mmx.pcmpeq.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
112 %3 = bitcast x86_mmx %2 to <8 x i8>
113 %4 = bitcast <8 x i8> %3 to <1 x i64>
114 %5 = extractelement <1 x i64> %4, i32 0
118 declare x86_mmx @llvm.x86.mmx.punpckldq(x86_mmx, x86_mmx) nounwind readnone
120 define i64 @test82(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
123 %0 = bitcast <1 x i64> %b to <2 x i32>
124 %1 = bitcast <1 x i64> %a to <2 x i32>
125 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
126 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
127 %2 = tail call x86_mmx @llvm.x86.mmx.punpckldq(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
128 %3 = bitcast x86_mmx %2 to <2 x i32>
129 %4 = bitcast <2 x i32> %3 to <1 x i64>
130 %5 = extractelement <1 x i64> %4, i32 0
134 declare x86_mmx @llvm.x86.mmx.punpcklwd(x86_mmx, x86_mmx) nounwind readnone
136 define i64 @test81(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
139 %0 = bitcast <1 x i64> %b to <4 x i16>
140 %1 = bitcast <1 x i64> %a to <4 x i16>
141 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
142 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
143 %2 = tail call x86_mmx @llvm.x86.mmx.punpcklwd(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
144 %3 = bitcast x86_mmx %2 to <4 x i16>
145 %4 = bitcast <4 x i16> %3 to <1 x i64>
146 %5 = extractelement <1 x i64> %4, i32 0
150 declare x86_mmx @llvm.x86.mmx.punpcklbw(x86_mmx, x86_mmx) nounwind readnone
152 define i64 @test80(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
155 %0 = bitcast <1 x i64> %b to <8 x i8>
156 %1 = bitcast <1 x i64> %a to <8 x i8>
157 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
158 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
159 %2 = tail call x86_mmx @llvm.x86.mmx.punpcklbw(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
160 %3 = bitcast x86_mmx %2 to <8 x i8>
161 %4 = bitcast <8 x i8> %3 to <1 x i64>
162 %5 = extractelement <1 x i64> %4, i32 0
166 declare x86_mmx @llvm.x86.mmx.punpckhdq(x86_mmx, x86_mmx) nounwind readnone
168 define i64 @test79(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
171 %0 = bitcast <1 x i64> %b to <2 x i32>
172 %1 = bitcast <1 x i64> %a to <2 x i32>
173 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
174 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
175 %2 = tail call x86_mmx @llvm.x86.mmx.punpckhdq(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
176 %3 = bitcast x86_mmx %2 to <2 x i32>
177 %4 = bitcast <2 x i32> %3 to <1 x i64>
178 %5 = extractelement <1 x i64> %4, i32 0
182 declare x86_mmx @llvm.x86.mmx.punpckhwd(x86_mmx, x86_mmx) nounwind readnone
184 define i64 @test78(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
187 %0 = bitcast <1 x i64> %b to <4 x i16>
188 %1 = bitcast <1 x i64> %a to <4 x i16>
189 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
190 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
191 %2 = tail call x86_mmx @llvm.x86.mmx.punpckhwd(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
192 %3 = bitcast x86_mmx %2 to <4 x i16>
193 %4 = bitcast <4 x i16> %3 to <1 x i64>
194 %5 = extractelement <1 x i64> %4, i32 0
198 declare x86_mmx @llvm.x86.mmx.punpckhbw(x86_mmx, x86_mmx) nounwind readnone
200 define i64 @test77(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
203 %0 = bitcast <1 x i64> %b to <8 x i8>
204 %1 = bitcast <1 x i64> %a to <8 x i8>
205 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
206 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
207 %2 = tail call x86_mmx @llvm.x86.mmx.punpckhbw(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
208 %3 = bitcast x86_mmx %2 to <8 x i8>
209 %4 = bitcast <8 x i8> %3 to <1 x i64>
210 %5 = extractelement <1 x i64> %4, i32 0
214 declare x86_mmx @llvm.x86.mmx.packuswb(x86_mmx, x86_mmx) nounwind readnone
216 define i64 @test76(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
219 %0 = bitcast <1 x i64> %b to <4 x i16>
220 %1 = bitcast <1 x i64> %a to <4 x i16>
221 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
222 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
223 %2 = tail call x86_mmx @llvm.x86.mmx.packuswb(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
224 %3 = bitcast x86_mmx %2 to <8 x i8>
225 %4 = bitcast <8 x i8> %3 to <1 x i64>
226 %5 = extractelement <1 x i64> %4, i32 0
230 declare x86_mmx @llvm.x86.mmx.packssdw(x86_mmx, x86_mmx) nounwind readnone
232 define i64 @test75(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
235 %0 = bitcast <1 x i64> %b to <2 x i32>
236 %1 = bitcast <1 x i64> %a to <2 x i32>
237 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
238 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
239 %2 = tail call x86_mmx @llvm.x86.mmx.packssdw(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
240 %3 = bitcast x86_mmx %2 to <4 x i16>
241 %4 = bitcast <4 x i16> %3 to <1 x i64>
242 %5 = extractelement <1 x i64> %4, i32 0
246 declare x86_mmx @llvm.x86.mmx.packsswb(x86_mmx, x86_mmx) nounwind readnone
248 define i64 @test74(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
251 %0 = bitcast <1 x i64> %b to <4 x i16>
252 %1 = bitcast <1 x i64> %a to <4 x i16>
253 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
254 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
255 %2 = tail call x86_mmx @llvm.x86.mmx.packsswb(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
256 %3 = bitcast x86_mmx %2 to <8 x i8>
257 %4 = bitcast <8 x i8> %3 to <1 x i64>
258 %5 = extractelement <1 x i64> %4, i32 0
262 declare x86_mmx @llvm.x86.mmx.psrai.d(x86_mmx, i32) nounwind readnone
264 define i64 @test73(<1 x i64> %a) nounwind readnone optsize ssp {
267 %0 = bitcast <1 x i64> %a to <2 x i32>
268 %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
269 %1 = tail call x86_mmx @llvm.x86.mmx.psrai.d(x86_mmx %mmx_var.i, i32 3) nounwind
270 %2 = bitcast x86_mmx %1 to <2 x i32>
271 %3 = bitcast <2 x i32> %2 to <1 x i64>
272 %4 = extractelement <1 x i64> %3, i32 0
276 declare x86_mmx @llvm.x86.mmx.psrai.w(x86_mmx, i32) nounwind readnone
278 define i64 @test72(<1 x i64> %a) nounwind readnone optsize ssp {
281 %0 = bitcast <1 x i64> %a to <4 x i16>
282 %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
283 %1 = tail call x86_mmx @llvm.x86.mmx.psrai.w(x86_mmx %mmx_var.i, i32 3) nounwind
284 %2 = bitcast x86_mmx %1 to <4 x i16>
285 %3 = bitcast <4 x i16> %2 to <1 x i64>
286 %4 = extractelement <1 x i64> %3, i32 0
290 declare x86_mmx @llvm.x86.mmx.psrli.q(x86_mmx, i32) nounwind readnone
292 define i64 @test71(<1 x i64> %a) nounwind readnone optsize ssp {
295 %0 = extractelement <1 x i64> %a, i32 0
296 %mmx_var.i = bitcast i64 %0 to x86_mmx
297 %1 = tail call x86_mmx @llvm.x86.mmx.psrli.q(x86_mmx %mmx_var.i, i32 3) nounwind
298 %2 = bitcast x86_mmx %1 to i64
302 declare x86_mmx @llvm.x86.mmx.psrli.d(x86_mmx, i32) nounwind readnone
304 define i64 @test70(<1 x i64> %a) nounwind readnone optsize ssp {
307 %0 = bitcast <1 x i64> %a to <2 x i32>
308 %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
309 %1 = tail call x86_mmx @llvm.x86.mmx.psrli.d(x86_mmx %mmx_var.i, i32 3) nounwind
310 %2 = bitcast x86_mmx %1 to <2 x i32>
311 %3 = bitcast <2 x i32> %2 to <1 x i64>
312 %4 = extractelement <1 x i64> %3, i32 0
316 declare x86_mmx @llvm.x86.mmx.psrli.w(x86_mmx, i32) nounwind readnone
318 define i64 @test69(<1 x i64> %a) nounwind readnone optsize ssp {
321 %0 = bitcast <1 x i64> %a to <4 x i16>
322 %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
323 %1 = tail call x86_mmx @llvm.x86.mmx.psrli.w(x86_mmx %mmx_var.i, i32 3) nounwind
324 %2 = bitcast x86_mmx %1 to <4 x i16>
325 %3 = bitcast <4 x i16> %2 to <1 x i64>
326 %4 = extractelement <1 x i64> %3, i32 0
330 declare x86_mmx @llvm.x86.mmx.pslli.q(x86_mmx, i32) nounwind readnone
332 define i64 @test68(<1 x i64> %a) nounwind readnone optsize ssp {
335 %0 = extractelement <1 x i64> %a, i32 0
336 %mmx_var.i = bitcast i64 %0 to x86_mmx
337 %1 = tail call x86_mmx @llvm.x86.mmx.pslli.q(x86_mmx %mmx_var.i, i32 3) nounwind
338 %2 = bitcast x86_mmx %1 to i64
342 declare x86_mmx @llvm.x86.mmx.pslli.d(x86_mmx, i32) nounwind readnone
344 define i64 @test67(<1 x i64> %a) nounwind readnone optsize ssp {
347 %0 = bitcast <1 x i64> %a to <2 x i32>
348 %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
349 %1 = tail call x86_mmx @llvm.x86.mmx.pslli.d(x86_mmx %mmx_var.i, i32 3) nounwind
350 %2 = bitcast x86_mmx %1 to <2 x i32>
351 %3 = bitcast <2 x i32> %2 to <1 x i64>
352 %4 = extractelement <1 x i64> %3, i32 0
356 declare x86_mmx @llvm.x86.mmx.pslli.w(x86_mmx, i32) nounwind readnone
358 define i64 @test66(<1 x i64> %a) nounwind readnone optsize ssp {
361 %0 = bitcast <1 x i64> %a to <4 x i16>
362 %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
363 %1 = tail call x86_mmx @llvm.x86.mmx.pslli.w(x86_mmx %mmx_var.i, i32 3) nounwind
364 %2 = bitcast x86_mmx %1 to <4 x i16>
365 %3 = bitcast <4 x i16> %2 to <1 x i64>
366 %4 = extractelement <1 x i64> %3, i32 0
370 declare x86_mmx @llvm.x86.mmx.psra.d(x86_mmx, x86_mmx) nounwind readnone
372 define i64 @test65(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
375 %0 = bitcast <1 x i64> %a to <2 x i32>
376 %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
377 %1 = extractelement <1 x i64> %b, i32 0
378 %mmx_var1.i = bitcast i64 %1 to x86_mmx
379 %2 = tail call x86_mmx @llvm.x86.mmx.psra.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
380 %3 = bitcast x86_mmx %2 to <2 x i32>
381 %4 = bitcast <2 x i32> %3 to <1 x i64>
382 %5 = extractelement <1 x i64> %4, i32 0
386 declare x86_mmx @llvm.x86.mmx.psra.w(x86_mmx, x86_mmx) nounwind readnone
388 define i64 @test64(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
391 %0 = bitcast <1 x i64> %a to <4 x i16>
392 %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
393 %1 = extractelement <1 x i64> %b, i32 0
394 %mmx_var1.i = bitcast i64 %1 to x86_mmx
395 %2 = tail call x86_mmx @llvm.x86.mmx.psra.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
396 %3 = bitcast x86_mmx %2 to <4 x i16>
397 %4 = bitcast <4 x i16> %3 to <1 x i64>
398 %5 = extractelement <1 x i64> %4, i32 0
402 declare x86_mmx @llvm.x86.mmx.psrl.q(x86_mmx, x86_mmx) nounwind readnone
404 define i64 @test63(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
407 %0 = extractelement <1 x i64> %a, i32 0
408 %mmx_var.i = bitcast i64 %0 to x86_mmx
409 %1 = extractelement <1 x i64> %b, i32 0
410 %mmx_var1.i = bitcast i64 %1 to x86_mmx
411 %2 = tail call x86_mmx @llvm.x86.mmx.psrl.q(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
412 %3 = bitcast x86_mmx %2 to i64
416 declare x86_mmx @llvm.x86.mmx.psrl.d(x86_mmx, x86_mmx) nounwind readnone
418 define i64 @test62(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
421 %0 = bitcast <1 x i64> %a to <2 x i32>
422 %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
423 %1 = extractelement <1 x i64> %b, i32 0
424 %mmx_var1.i = bitcast i64 %1 to x86_mmx
425 %2 = tail call x86_mmx @llvm.x86.mmx.psrl.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
426 %3 = bitcast x86_mmx %2 to <2 x i32>
427 %4 = bitcast <2 x i32> %3 to <1 x i64>
428 %5 = extractelement <1 x i64> %4, i32 0
432 declare x86_mmx @llvm.x86.mmx.psrl.w(x86_mmx, x86_mmx) nounwind readnone
434 define i64 @test61(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
437 %0 = bitcast <1 x i64> %a to <4 x i16>
438 %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
439 %1 = extractelement <1 x i64> %b, i32 0
440 %mmx_var1.i = bitcast i64 %1 to x86_mmx
441 %2 = tail call x86_mmx @llvm.x86.mmx.psrl.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
442 %3 = bitcast x86_mmx %2 to <4 x i16>
443 %4 = bitcast <4 x i16> %3 to <1 x i64>
444 %5 = extractelement <1 x i64> %4, i32 0
448 declare x86_mmx @llvm.x86.mmx.psll.q(x86_mmx, x86_mmx) nounwind readnone
450 define i64 @test60(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
453 %0 = extractelement <1 x i64> %a, i32 0
454 %mmx_var.i = bitcast i64 %0 to x86_mmx
455 %1 = extractelement <1 x i64> %b, i32 0
456 %mmx_var1.i = bitcast i64 %1 to x86_mmx
457 %2 = tail call x86_mmx @llvm.x86.mmx.psll.q(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
458 %3 = bitcast x86_mmx %2 to i64
462 declare x86_mmx @llvm.x86.mmx.psll.d(x86_mmx, x86_mmx) nounwind readnone
464 define i64 @test59(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
467 %0 = bitcast <1 x i64> %a to <2 x i32>
468 %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
469 %1 = extractelement <1 x i64> %b, i32 0
470 %mmx_var1.i = bitcast i64 %1 to x86_mmx
471 %2 = tail call x86_mmx @llvm.x86.mmx.psll.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
472 %3 = bitcast x86_mmx %2 to <2 x i32>
473 %4 = bitcast <2 x i32> %3 to <1 x i64>
474 %5 = extractelement <1 x i64> %4, i32 0
478 declare x86_mmx @llvm.x86.mmx.psll.w(x86_mmx, x86_mmx) nounwind readnone
480 define i64 @test58(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
483 %0 = bitcast <1 x i64> %a to <4 x i16>
484 %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
485 %1 = extractelement <1 x i64> %b, i32 0
486 %mmx_var1.i = bitcast i64 %1 to x86_mmx
487 %2 = tail call x86_mmx @llvm.x86.mmx.psll.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
488 %3 = bitcast x86_mmx %2 to <4 x i16>
489 %4 = bitcast <4 x i16> %3 to <1 x i64>
490 %5 = extractelement <1 x i64> %4, i32 0
494 declare x86_mmx @llvm.x86.mmx.pxor(x86_mmx, x86_mmx) nounwind readnone
496 define i64 @test56(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
499 %0 = bitcast <1 x i64> %b to <2 x i32>
500 %1 = bitcast <1 x i64> %a to <2 x i32>
501 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
502 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
503 %2 = tail call x86_mmx @llvm.x86.mmx.pxor(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
504 %3 = bitcast x86_mmx %2 to <2 x i32>
505 %4 = bitcast <2 x i32> %3 to <1 x i64>
506 %5 = extractelement <1 x i64> %4, i32 0
510 declare x86_mmx @llvm.x86.mmx.por(x86_mmx, x86_mmx) nounwind readnone
512 define i64 @test55(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
515 %0 = bitcast <1 x i64> %b to <2 x i32>
516 %1 = bitcast <1 x i64> %a to <2 x i32>
517 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
518 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
519 %2 = tail call x86_mmx @llvm.x86.mmx.por(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
520 %3 = bitcast x86_mmx %2 to <2 x i32>
521 %4 = bitcast <2 x i32> %3 to <1 x i64>
522 %5 = extractelement <1 x i64> %4, i32 0
526 declare x86_mmx @llvm.x86.mmx.pandn(x86_mmx, x86_mmx) nounwind readnone
528 define i64 @test54(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
531 %0 = bitcast <1 x i64> %b to <2 x i32>
532 %1 = bitcast <1 x i64> %a to <2 x i32>
533 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
534 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
535 %2 = tail call x86_mmx @llvm.x86.mmx.pandn(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
536 %3 = bitcast x86_mmx %2 to <2 x i32>
537 %4 = bitcast <2 x i32> %3 to <1 x i64>
538 %5 = extractelement <1 x i64> %4, i32 0
542 declare x86_mmx @llvm.x86.mmx.pand(x86_mmx, x86_mmx) nounwind readnone
544 define i64 @test53(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
547 %0 = bitcast <1 x i64> %b to <2 x i32>
548 %1 = bitcast <1 x i64> %a to <2 x i32>
549 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
550 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
551 %2 = tail call x86_mmx @llvm.x86.mmx.pand(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
552 %3 = bitcast x86_mmx %2 to <2 x i32>
553 %4 = bitcast <2 x i32> %3 to <1 x i64>
554 %5 = extractelement <1 x i64> %4, i32 0
558 declare x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx, x86_mmx) nounwind readnone
560 define i64 @test52(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
563 %0 = bitcast <1 x i64> %b to <4 x i16>
564 %1 = bitcast <1 x i64> %a to <4 x i16>
565 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
566 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
567 %2 = tail call x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
568 %3 = bitcast x86_mmx %2 to <4 x i16>
569 %4 = bitcast <4 x i16> %3 to <1 x i64>
570 %5 = extractelement <1 x i64> %4, i32 0
574 define i64 @test51(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
577 %0 = bitcast <1 x i64> %b to <4 x i16>
578 %1 = bitcast <1 x i64> %a to <4 x i16>
579 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
580 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
581 %2 = tail call x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
582 %3 = bitcast x86_mmx %2 to <4 x i16>
583 %4 = bitcast <4 x i16> %3 to <1 x i64>
584 %5 = extractelement <1 x i64> %4, i32 0
588 declare x86_mmx @llvm.x86.mmx.pmulh.w(x86_mmx, x86_mmx) nounwind readnone
590 define i64 @test50(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
593 %0 = bitcast <1 x i64> %b to <4 x i16>
594 %1 = bitcast <1 x i64> %a to <4 x i16>
595 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
596 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
597 %2 = tail call x86_mmx @llvm.x86.mmx.pmulh.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
598 %3 = bitcast x86_mmx %2 to <4 x i16>
599 %4 = bitcast <4 x i16> %3 to <1 x i64>
600 %5 = extractelement <1 x i64> %4, i32 0
604 declare x86_mmx @llvm.x86.mmx.pmadd.wd(x86_mmx, x86_mmx) nounwind readnone
606 define i64 @test49(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
609 %0 = bitcast <1 x i64> %b to <4 x i16>
610 %1 = bitcast <1 x i64> %a to <4 x i16>
611 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
612 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
613 %2 = tail call x86_mmx @llvm.x86.mmx.pmadd.wd(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
614 %3 = bitcast x86_mmx %2 to <2 x i32>
615 %4 = bitcast <2 x i32> %3 to <1 x i64>
616 %5 = extractelement <1 x i64> %4, i32 0
620 declare x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx, x86_mmx) nounwind readnone
622 define i64 @test48(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
625 %0 = bitcast <1 x i64> %b to <4 x i16>
626 %1 = bitcast <1 x i64> %a to <4 x i16>
627 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
628 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
629 %2 = tail call x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
630 %3 = bitcast x86_mmx %2 to <4 x i16>
631 %4 = bitcast <4 x i16> %3 to <1 x i64>
632 %5 = extractelement <1 x i64> %4, i32 0
636 declare x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx, x86_mmx) nounwind readnone
638 define i64 @test47(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
641 %0 = bitcast <1 x i64> %b to <8 x i8>
642 %1 = bitcast <1 x i64> %a to <8 x i8>
643 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
644 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
645 %2 = tail call x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
646 %3 = bitcast x86_mmx %2 to <8 x i8>
647 %4 = bitcast <8 x i8> %3 to <1 x i64>
648 %5 = extractelement <1 x i64> %4, i32 0
652 declare x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx, x86_mmx) nounwind readnone
654 define i64 @test46(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
657 %0 = bitcast <1 x i64> %b to <4 x i16>
658 %1 = bitcast <1 x i64> %a to <4 x i16>
659 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
660 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
661 %2 = tail call x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
662 %3 = bitcast x86_mmx %2 to <4 x i16>
663 %4 = bitcast <4 x i16> %3 to <1 x i64>
664 %5 = extractelement <1 x i64> %4, i32 0
668 declare x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx, x86_mmx) nounwind readnone
670 define i64 @test45(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
673 %0 = bitcast <1 x i64> %b to <8 x i8>
674 %1 = bitcast <1 x i64> %a to <8 x i8>
675 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
676 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
677 %2 = tail call x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
678 %3 = bitcast x86_mmx %2 to <8 x i8>
679 %4 = bitcast <8 x i8> %3 to <1 x i64>
680 %5 = extractelement <1 x i64> %4, i32 0
684 define i64 @test44(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
687 %0 = extractelement <1 x i64> %a, i32 0
688 %mmx_var = bitcast i64 %0 to x86_mmx
689 %1 = extractelement <1 x i64> %b, i32 0
690 %mmx_var1 = bitcast i64 %1 to x86_mmx
691 %2 = tail call x86_mmx @llvm.x86.mmx.psub.q(x86_mmx %mmx_var, x86_mmx %mmx_var1)
692 %3 = bitcast x86_mmx %2 to i64
696 declare x86_mmx @llvm.x86.mmx.psub.q(x86_mmx, x86_mmx) nounwind readnone
698 declare x86_mmx @llvm.x86.mmx.psub.d(x86_mmx, x86_mmx) nounwind readnone
700 define i64 @test43(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
703 %0 = bitcast <1 x i64> %b to <2 x i32>
704 %1 = bitcast <1 x i64> %a to <2 x i32>
705 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
706 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
707 %2 = tail call x86_mmx @llvm.x86.mmx.psub.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
708 %3 = bitcast x86_mmx %2 to <2 x i32>
709 %4 = bitcast <2 x i32> %3 to <1 x i64>
710 %5 = extractelement <1 x i64> %4, i32 0
714 declare x86_mmx @llvm.x86.mmx.psub.w(x86_mmx, x86_mmx) nounwind readnone
716 define i64 @test42(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
719 %0 = bitcast <1 x i64> %b to <4 x i16>
720 %1 = bitcast <1 x i64> %a to <4 x i16>
721 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
722 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
723 %2 = tail call x86_mmx @llvm.x86.mmx.psub.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
724 %3 = bitcast x86_mmx %2 to <4 x i16>
725 %4 = bitcast <4 x i16> %3 to <1 x i64>
726 %5 = extractelement <1 x i64> %4, i32 0
730 declare x86_mmx @llvm.x86.mmx.psub.b(x86_mmx, x86_mmx) nounwind readnone
732 define i64 @test41(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
735 %0 = bitcast <1 x i64> %b to <8 x i8>
736 %1 = bitcast <1 x i64> %a to <8 x i8>
737 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
738 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
739 %2 = tail call x86_mmx @llvm.x86.mmx.psub.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
740 %3 = bitcast x86_mmx %2 to <8 x i8>
741 %4 = bitcast <8 x i8> %3 to <1 x i64>
742 %5 = extractelement <1 x i64> %4, i32 0
746 declare x86_mmx @llvm.x86.mmx.paddus.w(x86_mmx, x86_mmx) nounwind readnone
748 define i64 @test40(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
751 %0 = bitcast <1 x i64> %b to <4 x i16>
752 %1 = bitcast <1 x i64> %a to <4 x i16>
753 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
754 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
755 %2 = tail call x86_mmx @llvm.x86.mmx.paddus.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
756 %3 = bitcast x86_mmx %2 to <4 x i16>
757 %4 = bitcast <4 x i16> %3 to <1 x i64>
758 %5 = extractelement <1 x i64> %4, i32 0
762 declare x86_mmx @llvm.x86.mmx.paddus.b(x86_mmx, x86_mmx) nounwind readnone
764 define i64 @test39(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
767 %0 = bitcast <1 x i64> %b to <8 x i8>
768 %1 = bitcast <1 x i64> %a to <8 x i8>
769 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
770 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
771 %2 = tail call x86_mmx @llvm.x86.mmx.paddus.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
772 %3 = bitcast x86_mmx %2 to <8 x i8>
773 %4 = bitcast <8 x i8> %3 to <1 x i64>
774 %5 = extractelement <1 x i64> %4, i32 0
778 declare x86_mmx @llvm.x86.mmx.padds.w(x86_mmx, x86_mmx) nounwind readnone
780 define i64 @test38(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
783 %0 = bitcast <1 x i64> %b to <4 x i16>
784 %1 = bitcast <1 x i64> %a to <4 x i16>
785 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
786 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
787 %2 = tail call x86_mmx @llvm.x86.mmx.padds.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
788 %3 = bitcast x86_mmx %2 to <4 x i16>
789 %4 = bitcast <4 x i16> %3 to <1 x i64>
790 %5 = extractelement <1 x i64> %4, i32 0
794 declare x86_mmx @llvm.x86.mmx.padds.b(x86_mmx, x86_mmx) nounwind readnone
796 define i64 @test37(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
799 %0 = bitcast <1 x i64> %b to <8 x i8>
800 %1 = bitcast <1 x i64> %a to <8 x i8>
801 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
802 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
803 %2 = tail call x86_mmx @llvm.x86.mmx.padds.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
804 %3 = bitcast x86_mmx %2 to <8 x i8>
805 %4 = bitcast <8 x i8> %3 to <1 x i64>
806 %5 = extractelement <1 x i64> %4, i32 0
810 declare x86_mmx @llvm.x86.mmx.padd.q(x86_mmx, x86_mmx) nounwind readnone
812 define i64 @test36(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
815 %0 = extractelement <1 x i64> %a, i32 0
816 %mmx_var = bitcast i64 %0 to x86_mmx
817 %1 = extractelement <1 x i64> %b, i32 0
818 %mmx_var1 = bitcast i64 %1 to x86_mmx
819 %2 = tail call x86_mmx @llvm.x86.mmx.padd.q(x86_mmx %mmx_var, x86_mmx %mmx_var1)
820 %3 = bitcast x86_mmx %2 to i64
824 declare x86_mmx @llvm.x86.mmx.padd.d(x86_mmx, x86_mmx) nounwind readnone
826 define i64 @test35(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
829 %0 = bitcast <1 x i64> %b to <2 x i32>
830 %1 = bitcast <1 x i64> %a to <2 x i32>
831 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
832 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
833 %2 = tail call x86_mmx @llvm.x86.mmx.padd.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
834 %3 = bitcast x86_mmx %2 to <2 x i32>
835 %4 = bitcast <2 x i32> %3 to <1 x i64>
836 %5 = extractelement <1 x i64> %4, i32 0
840 declare x86_mmx @llvm.x86.mmx.padd.w(x86_mmx, x86_mmx) nounwind readnone
842 define i64 @test34(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
845 %0 = bitcast <1 x i64> %b to <4 x i16>
846 %1 = bitcast <1 x i64> %a to <4 x i16>
847 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
848 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
849 %2 = tail call x86_mmx @llvm.x86.mmx.padd.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
850 %3 = bitcast x86_mmx %2 to <4 x i16>
851 %4 = bitcast <4 x i16> %3 to <1 x i64>
852 %5 = extractelement <1 x i64> %4, i32 0
856 declare x86_mmx @llvm.x86.mmx.padd.b(x86_mmx, x86_mmx) nounwind readnone
858 define i64 @test33(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
861 %0 = bitcast <1 x i64> %b to <8 x i8>
862 %1 = bitcast <1 x i64> %a to <8 x i8>
863 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
864 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
865 %2 = tail call x86_mmx @llvm.x86.mmx.padd.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
866 %3 = bitcast x86_mmx %2 to <8 x i8>
867 %4 = bitcast <8 x i8> %3 to <1 x i64>
868 %5 = extractelement <1 x i64> %4, i32 0
872 declare x86_mmx @llvm.x86.mmx.psad.bw(x86_mmx, x86_mmx) nounwind readnone
874 define i64 @test32(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
877 %0 = bitcast <1 x i64> %b to <8 x i8>
878 %1 = bitcast <1 x i64> %a to <8 x i8>
879 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
880 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
881 %2 = tail call x86_mmx @llvm.x86.mmx.psad.bw(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
882 %3 = bitcast x86_mmx %2 to i64
886 declare x86_mmx @llvm.x86.mmx.pmins.w(x86_mmx, x86_mmx) nounwind readnone
888 define i64 @test31(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
891 %0 = bitcast <1 x i64> %b to <4 x i16>
892 %1 = bitcast <1 x i64> %a to <4 x i16>
893 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
894 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
895 %2 = tail call x86_mmx @llvm.x86.mmx.pmins.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
896 %3 = bitcast x86_mmx %2 to <4 x i16>
897 %4 = bitcast <4 x i16> %3 to <1 x i64>
898 %5 = extractelement <1 x i64> %4, i32 0
902 declare x86_mmx @llvm.x86.mmx.pminu.b(x86_mmx, x86_mmx) nounwind readnone
904 define i64 @test30(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
907 %0 = bitcast <1 x i64> %b to <8 x i8>
908 %1 = bitcast <1 x i64> %a to <8 x i8>
909 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
910 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
911 %2 = tail call x86_mmx @llvm.x86.mmx.pminu.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
912 %3 = bitcast x86_mmx %2 to <8 x i8>
913 %4 = bitcast <8 x i8> %3 to <1 x i64>
914 %5 = extractelement <1 x i64> %4, i32 0
918 declare x86_mmx @llvm.x86.mmx.pmaxs.w(x86_mmx, x86_mmx) nounwind readnone
920 define i64 @test29(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
923 %0 = bitcast <1 x i64> %b to <4 x i16>
924 %1 = bitcast <1 x i64> %a to <4 x i16>
925 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
926 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
927 %2 = tail call x86_mmx @llvm.x86.mmx.pmaxs.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
928 %3 = bitcast x86_mmx %2 to <4 x i16>
929 %4 = bitcast <4 x i16> %3 to <1 x i64>
930 %5 = extractelement <1 x i64> %4, i32 0
934 declare x86_mmx @llvm.x86.mmx.pmaxu.b(x86_mmx, x86_mmx) nounwind readnone
936 define i64 @test28(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
939 %0 = bitcast <1 x i64> %b to <8 x i8>
940 %1 = bitcast <1 x i64> %a to <8 x i8>
941 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
942 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
943 %2 = tail call x86_mmx @llvm.x86.mmx.pmaxu.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
944 %3 = bitcast x86_mmx %2 to <8 x i8>
945 %4 = bitcast <8 x i8> %3 to <1 x i64>
946 %5 = extractelement <1 x i64> %4, i32 0
950 declare x86_mmx @llvm.x86.mmx.pavg.w(x86_mmx, x86_mmx) nounwind readnone
952 define i64 @test27(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
955 %0 = bitcast <1 x i64> %b to <4 x i16>
956 %1 = bitcast <1 x i64> %a to <4 x i16>
957 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
958 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
959 %2 = tail call x86_mmx @llvm.x86.mmx.pavg.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
960 %3 = bitcast x86_mmx %2 to <4 x i16>
961 %4 = bitcast <4 x i16> %3 to <1 x i64>
962 %5 = extractelement <1 x i64> %4, i32 0
966 declare x86_mmx @llvm.x86.mmx.pavg.b(x86_mmx, x86_mmx) nounwind readnone
968 define i64 @test26(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
971 %0 = bitcast <1 x i64> %b to <8 x i8>
972 %1 = bitcast <1 x i64> %a to <8 x i8>
973 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
974 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
975 %2 = tail call x86_mmx @llvm.x86.mmx.pavg.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
976 %3 = bitcast x86_mmx %2 to <8 x i8>
977 %4 = bitcast <8 x i8> %3 to <1 x i64>
978 %5 = extractelement <1 x i64> %4, i32 0
982 declare void @llvm.x86.mmx.movnt.dq(x86_mmx*, x86_mmx) nounwind
984 define void @test25(<1 x i64>* %p, <1 x i64> %a) nounwind optsize ssp {
987 %mmx_ptr_var.i = bitcast <1 x i64>* %p to x86_mmx*
988 %0 = extractelement <1 x i64> %a, i32 0
989 %mmx_var.i = bitcast i64 %0 to x86_mmx
990 tail call void @llvm.x86.mmx.movnt.dq(x86_mmx* %mmx_ptr_var.i, x86_mmx %mmx_var.i) nounwind
994 declare i32 @llvm.x86.mmx.pmovmskb(x86_mmx) nounwind readnone
996 define i32 @test24(<1 x i64> %a) nounwind readnone optsize ssp {
999 %0 = bitcast <1 x i64> %a to <8 x i8>
1000 %mmx_var.i = bitcast <8 x i8> %0 to x86_mmx
1001 %1 = tail call i32 @llvm.x86.mmx.pmovmskb(x86_mmx %mmx_var.i) nounwind
1005 declare void @llvm.x86.mmx.maskmovq(x86_mmx, x86_mmx, i8*) nounwind
1007 define void @test23(<1 x i64> %d, <1 x i64> %n, i8* %p) nounwind optsize ssp {
1010 %0 = bitcast <1 x i64> %n to <8 x i8>
1011 %1 = bitcast <1 x i64> %d to <8 x i8>
1012 %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
1013 %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
1014 tail call void @llvm.x86.mmx.maskmovq(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i, i8* %p) nounwind
1018 declare x86_mmx @llvm.x86.mmx.pmulhu.w(x86_mmx, x86_mmx) nounwind readnone
1020 define i64 @test22(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1023 %0 = bitcast <1 x i64> %b to <4 x i16>
1024 %1 = bitcast <1 x i64> %a to <4 x i16>
1025 %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
1026 %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
1027 %2 = tail call x86_mmx @llvm.x86.mmx.pmulhu.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
1028 %3 = bitcast x86_mmx %2 to <4 x i16>
1029 %4 = bitcast <4 x i16> %3 to <1 x i64>
1030 %5 = extractelement <1 x i64> %4, i32 0
1034 declare x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx, i8) nounwind readnone
1036 define i64 @test21(<1 x i64> %a) nounwind readnone optsize ssp {
1039 %0 = bitcast <1 x i64> %a to <4 x i16>
1040 %1 = bitcast <4 x i16> %0 to x86_mmx
1041 %2 = tail call x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx %1, i8 3) nounwind readnone
1042 %3 = bitcast x86_mmx %2 to <4 x i16>
1043 %4 = bitcast <4 x i16> %3 to <1 x i64>
1044 %5 = extractelement <1 x i64> %4, i32 0
1048 define i32 @test21_2(<1 x i64> %a) nounwind readnone optsize ssp {
1053 %0 = bitcast <1 x i64> %a to <4 x i16>
1054 %1 = bitcast <4 x i16> %0 to x86_mmx
1055 %2 = tail call x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx %1, i8 3) nounwind readnone
1056 %3 = bitcast x86_mmx %2 to <4 x i16>
1057 %4 = bitcast <4 x i16> %3 to <2 x i32>
1058 %5 = extractelement <2 x i32> %4, i32 0
1062 declare x86_mmx @llvm.x86.mmx.pmulu.dq(x86_mmx, x86_mmx) nounwind readnone
1064 define i64 @test20(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1067 %0 = bitcast <1 x i64> %b to <2 x i32>
1068 %1 = bitcast <1 x i64> %a to <2 x i32>
1069 %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
1070 %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
1071 %2 = tail call x86_mmx @llvm.x86.mmx.pmulu.dq(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
1072 %3 = bitcast x86_mmx %2 to i64
1076 declare <2 x double> @llvm.x86.sse.cvtpi2pd(x86_mmx) nounwind readnone
1078 define <2 x double> @test19(<1 x i64> %a) nounwind readnone optsize ssp {
1081 %0 = bitcast <1 x i64> %a to <2 x i32>
1082 %1 = bitcast <2 x i32> %0 to x86_mmx
1083 %2 = tail call <2 x double> @llvm.x86.sse.cvtpi2pd(x86_mmx %1) nounwind readnone
1087 declare x86_mmx @llvm.x86.sse.cvttpd2pi(<2 x double>) nounwind readnone
1089 define i64 @test18(<2 x double> %a) nounwind readnone optsize ssp {
1092 %0 = tail call x86_mmx @llvm.x86.sse.cvttpd2pi(<2 x double> %a) nounwind readnone
1093 %1 = bitcast x86_mmx %0 to <2 x i32>
1094 %2 = bitcast <2 x i32> %1 to <1 x i64>
1095 %3 = extractelement <1 x i64> %2, i32 0
1099 declare x86_mmx @llvm.x86.sse.cvtpd2pi(<2 x double>) nounwind readnone
1101 define i64 @test17(<2 x double> %a) nounwind readnone optsize ssp {
1104 %0 = tail call x86_mmx @llvm.x86.sse.cvtpd2pi(<2 x double> %a) nounwind readnone
1105 %1 = bitcast x86_mmx %0 to <2 x i32>
1106 %2 = bitcast <2 x i32> %1 to <1 x i64>
1107 %3 = extractelement <1 x i64> %2, i32 0
1111 declare x86_mmx @llvm.x86.mmx.palignr.b(x86_mmx, x86_mmx, i8) nounwind readnone
1113 define i64 @test16(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1116 %0 = extractelement <1 x i64> %a, i32 0
1117 %mmx_var = bitcast i64 %0 to x86_mmx
1118 %1 = extractelement <1 x i64> %b, i32 0
1119 %mmx_var1 = bitcast i64 %1 to x86_mmx
1120 %2 = tail call x86_mmx @llvm.x86.mmx.palignr.b(x86_mmx %mmx_var, x86_mmx %mmx_var1, i8 16)
1121 %3 = bitcast x86_mmx %2 to i64
1125 declare x86_mmx @llvm.x86.ssse3.pabs.d(x86_mmx) nounwind readnone
1127 define i64 @test15(<1 x i64> %a) nounwind readnone optsize ssp {
1130 %0 = bitcast <1 x i64> %a to <2 x i32>
1131 %1 = bitcast <2 x i32> %0 to x86_mmx
1132 %2 = tail call x86_mmx @llvm.x86.ssse3.pabs.d(x86_mmx %1) nounwind readnone
1133 %3 = bitcast x86_mmx %2 to <2 x i32>
1134 %4 = bitcast <2 x i32> %3 to <1 x i64>
1135 %5 = extractelement <1 x i64> %4, i32 0
1139 declare x86_mmx @llvm.x86.ssse3.pabs.w(x86_mmx) nounwind readnone
1141 define i64 @test14(<1 x i64> %a) nounwind readnone optsize ssp {
1144 %0 = bitcast <1 x i64> %a to <4 x i16>
1145 %1 = bitcast <4 x i16> %0 to x86_mmx
1146 %2 = tail call x86_mmx @llvm.x86.ssse3.pabs.w(x86_mmx %1) nounwind readnone
1147 %3 = bitcast x86_mmx %2 to <4 x i16>
1148 %4 = bitcast <4 x i16> %3 to <1 x i64>
1149 %5 = extractelement <1 x i64> %4, i32 0
1153 declare x86_mmx @llvm.x86.ssse3.pabs.b(x86_mmx) nounwind readnone
1155 define i64 @test13(<1 x i64> %a) nounwind readnone optsize ssp {
1158 %0 = bitcast <1 x i64> %a to <8 x i8>
1159 %1 = bitcast <8 x i8> %0 to x86_mmx
1160 %2 = tail call x86_mmx @llvm.x86.ssse3.pabs.b(x86_mmx %1) nounwind readnone
1161 %3 = bitcast x86_mmx %2 to <8 x i8>
1162 %4 = bitcast <8 x i8> %3 to <1 x i64>
1163 %5 = extractelement <1 x i64> %4, i32 0
1167 declare x86_mmx @llvm.x86.ssse3.psign.d(x86_mmx, x86_mmx) nounwind readnone
1169 define i64 @test12(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1172 %0 = bitcast <1 x i64> %b to <2 x i32>
1173 %1 = bitcast <1 x i64> %a to <2 x i32>
1174 %2 = bitcast <2 x i32> %1 to x86_mmx
1175 %3 = bitcast <2 x i32> %0 to x86_mmx
1176 %4 = tail call x86_mmx @llvm.x86.ssse3.psign.d(x86_mmx %2, x86_mmx %3) nounwind readnone
1177 %5 = bitcast x86_mmx %4 to <2 x i32>
1178 %6 = bitcast <2 x i32> %5 to <1 x i64>
1179 %7 = extractelement <1 x i64> %6, i32 0
1183 declare x86_mmx @llvm.x86.ssse3.psign.w(x86_mmx, x86_mmx) nounwind readnone
1185 define i64 @test11(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1188 %0 = bitcast <1 x i64> %b to <4 x i16>
1189 %1 = bitcast <1 x i64> %a to <4 x i16>
1190 %2 = bitcast <4 x i16> %1 to x86_mmx
1191 %3 = bitcast <4 x i16> %0 to x86_mmx
1192 %4 = tail call x86_mmx @llvm.x86.ssse3.psign.w(x86_mmx %2, x86_mmx %3) nounwind readnone
1193 %5 = bitcast x86_mmx %4 to <4 x i16>
1194 %6 = bitcast <4 x i16> %5 to <1 x i64>
1195 %7 = extractelement <1 x i64> %6, i32 0
1199 declare x86_mmx @llvm.x86.ssse3.psign.b(x86_mmx, x86_mmx) nounwind readnone
1201 define i64 @test10(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1204 %0 = bitcast <1 x i64> %b to <8 x i8>
1205 %1 = bitcast <1 x i64> %a to <8 x i8>
1206 %2 = bitcast <8 x i8> %1 to x86_mmx
1207 %3 = bitcast <8 x i8> %0 to x86_mmx
1208 %4 = tail call x86_mmx @llvm.x86.ssse3.psign.b(x86_mmx %2, x86_mmx %3) nounwind readnone
1209 %5 = bitcast x86_mmx %4 to <8 x i8>
1210 %6 = bitcast <8 x i8> %5 to <1 x i64>
1211 %7 = extractelement <1 x i64> %6, i32 0
1215 declare x86_mmx @llvm.x86.ssse3.pshuf.b(x86_mmx, x86_mmx) nounwind readnone
1217 define i64 @test9(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1220 %0 = bitcast <1 x i64> %b to <8 x i8>
1221 %1 = bitcast <1 x i64> %a to <8 x i8>
1222 %2 = bitcast <8 x i8> %1 to x86_mmx
1223 %3 = bitcast <8 x i8> %0 to x86_mmx
1224 %4 = tail call x86_mmx @llvm.x86.ssse3.pshuf.b(x86_mmx %2, x86_mmx %3) nounwind readnone
1225 %5 = bitcast x86_mmx %4 to <8 x i8>
1226 %6 = bitcast <8 x i8> %5 to <1 x i64>
1227 %7 = extractelement <1 x i64> %6, i32 0
1231 declare x86_mmx @llvm.x86.ssse3.pmul.hr.sw(x86_mmx, x86_mmx) nounwind readnone
1233 define i64 @test8(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1236 %0 = bitcast <1 x i64> %b to <4 x i16>
1237 %1 = bitcast <1 x i64> %a to <4 x i16>
1238 %2 = bitcast <4 x i16> %1 to x86_mmx
1239 %3 = bitcast <4 x i16> %0 to x86_mmx
1240 %4 = tail call x86_mmx @llvm.x86.ssse3.pmul.hr.sw(x86_mmx %2, x86_mmx %3) nounwind readnone
1241 %5 = bitcast x86_mmx %4 to <4 x i16>
1242 %6 = bitcast <4 x i16> %5 to <1 x i64>
1243 %7 = extractelement <1 x i64> %6, i32 0
1247 declare x86_mmx @llvm.x86.ssse3.pmadd.ub.sw(x86_mmx, x86_mmx) nounwind readnone
1249 define i64 @test7(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1252 %0 = bitcast <1 x i64> %b to <8 x i8>
1253 %1 = bitcast <1 x i64> %a to <8 x i8>
1254 %2 = bitcast <8 x i8> %1 to x86_mmx
1255 %3 = bitcast <8 x i8> %0 to x86_mmx
1256 %4 = tail call x86_mmx @llvm.x86.ssse3.pmadd.ub.sw(x86_mmx %2, x86_mmx %3) nounwind readnone
1257 %5 = bitcast x86_mmx %4 to <8 x i8>
1258 %6 = bitcast <8 x i8> %5 to <1 x i64>
1259 %7 = extractelement <1 x i64> %6, i32 0
1263 declare x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx, x86_mmx) nounwind readnone
1265 define i64 @test6(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1268 %0 = bitcast <1 x i64> %b to <4 x i16>
1269 %1 = bitcast <1 x i64> %a to <4 x i16>
1270 %2 = bitcast <4 x i16> %1 to x86_mmx
1271 %3 = bitcast <4 x i16> %0 to x86_mmx
1272 %4 = tail call x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx %2, x86_mmx %3) nounwind readnone
1273 %5 = bitcast x86_mmx %4 to <4 x i16>
1274 %6 = bitcast <4 x i16> %5 to <1 x i64>
1275 %7 = extractelement <1 x i64> %6, i32 0
1279 declare x86_mmx @llvm.x86.ssse3.phsub.d(x86_mmx, x86_mmx) nounwind readnone
1281 define i64 @test5(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1284 %0 = bitcast <1 x i64> %b to <2 x i32>
1285 %1 = bitcast <1 x i64> %a to <2 x i32>
1286 %2 = bitcast <2 x i32> %1 to x86_mmx
1287 %3 = bitcast <2 x i32> %0 to x86_mmx
1288 %4 = tail call x86_mmx @llvm.x86.ssse3.phsub.d(x86_mmx %2, x86_mmx %3) nounwind readnone
1289 %5 = bitcast x86_mmx %4 to <2 x i32>
1290 %6 = bitcast <2 x i32> %5 to <1 x i64>
1291 %7 = extractelement <1 x i64> %6, i32 0
1295 declare x86_mmx @llvm.x86.ssse3.phsub.w(x86_mmx, x86_mmx) nounwind readnone
1297 define i64 @test4(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1300 %0 = bitcast <1 x i64> %b to <4 x i16>
1301 %1 = bitcast <1 x i64> %a to <4 x i16>
1302 %2 = bitcast <4 x i16> %1 to x86_mmx
1303 %3 = bitcast <4 x i16> %0 to x86_mmx
1304 %4 = tail call x86_mmx @llvm.x86.ssse3.phsub.w(x86_mmx %2, x86_mmx %3) nounwind readnone
1305 %5 = bitcast x86_mmx %4 to <4 x i16>
1306 %6 = bitcast <4 x i16> %5 to <1 x i64>
1307 %7 = extractelement <1 x i64> %6, i32 0
1311 declare x86_mmx @llvm.x86.ssse3.phadd.sw(x86_mmx, x86_mmx) nounwind readnone
1313 define i64 @test3(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1316 %0 = bitcast <1 x i64> %b to <4 x i16>
1317 %1 = bitcast <1 x i64> %a to <4 x i16>
1318 %2 = bitcast <4 x i16> %1 to x86_mmx
1319 %3 = bitcast <4 x i16> %0 to x86_mmx
1320 %4 = tail call x86_mmx @llvm.x86.ssse3.phadd.sw(x86_mmx %2, x86_mmx %3) nounwind readnone
1321 %5 = bitcast x86_mmx %4 to <4 x i16>
1322 %6 = bitcast <4 x i16> %5 to <1 x i64>
1323 %7 = extractelement <1 x i64> %6, i32 0
1327 declare x86_mmx @llvm.x86.ssse3.phadd.d(x86_mmx, x86_mmx) nounwind readnone
1329 define i64 @test2(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1332 %0 = bitcast <1 x i64> %b to <2 x i32>
1333 %1 = bitcast <1 x i64> %a to <2 x i32>
1334 %2 = bitcast <2 x i32> %1 to x86_mmx
1335 %3 = bitcast <2 x i32> %0 to x86_mmx
1336 %4 = tail call x86_mmx @llvm.x86.ssse3.phadd.d(x86_mmx %2, x86_mmx %3) nounwind readnone
1337 %5 = bitcast x86_mmx %4 to <2 x i32>
1338 %6 = bitcast <2 x i32> %5 to <1 x i64>
1339 %7 = extractelement <1 x i64> %6, i32 0
1343 define <4 x float> @test89(<4 x float> %a, x86_mmx %b) nounwind {
1345 %c = tail call <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float> %a, x86_mmx %b)
1349 declare <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float>, x86_mmx) nounwind readnone