xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/mmx-intrinsics.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 -mattr=+mmx,+ssse3,-avx | FileCheck %s --check-prefix=ALL --check-prefix=X86
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 -mattr=+mmx,+avx | FileCheck %s --check-prefix=ALL --check-prefix=X86
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86-64 -mattr=+mmx,+ssse3,-avx | FileCheck %s --check-prefix=ALL --check-prefix=X64
4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86-64 -mattr=+mmx,+avx | FileCheck %s --check-prefix=ALL --check-prefix=X64
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phadd.w(x86_mmx, x86_mmx) nounwind readnone
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerdefine i64 @test1(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
9*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test1
10*9880d681SAndroid Build Coastguard Worker; ALL: phaddw
11*9880d681SAndroid Build Coastguard Workerentry:
12*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
13*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
14*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i16> %1 to x86_mmx
15*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i16> %0 to x86_mmx
16*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.phadd.w(x86_mmx %2, x86_mmx %3) nounwind readnone
17*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <4 x i16>
18*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <4 x i16> %5 to <1 x i64>
19*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
20*9880d681SAndroid Build Coastguard Worker  ret i64 %7
21*9880d681SAndroid Build Coastguard Worker}
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpgt.d(x86_mmx, x86_mmx) nounwind readnone
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerdefine i64 @test88(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
26*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test88
27*9880d681SAndroid Build Coastguard Worker; ALL: pcmpgtd
28*9880d681SAndroid Build Coastguard Workerentry:
29*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
30*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
31*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
32*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
33*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pcmpgt.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
34*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
35*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
36*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
37*9880d681SAndroid Build Coastguard Worker  ret i64 %5
38*9880d681SAndroid Build Coastguard Worker}
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpgt.w(x86_mmx, x86_mmx) nounwind readnone
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Workerdefine i64 @test87(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
43*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test87
44*9880d681SAndroid Build Coastguard Worker; ALL: pcmpgtw
45*9880d681SAndroid Build Coastguard Workerentry:
46*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
47*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
48*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
49*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
50*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pcmpgt.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
51*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
52*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
53*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
54*9880d681SAndroid Build Coastguard Worker  ret i64 %5
55*9880d681SAndroid Build Coastguard Worker}
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpgt.b(x86_mmx, x86_mmx) nounwind readnone
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Workerdefine i64 @test86(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
60*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test86
61*9880d681SAndroid Build Coastguard Worker; ALL: pcmpgtb
62*9880d681SAndroid Build Coastguard Workerentry:
63*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
64*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
65*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
66*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
67*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pcmpgt.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
68*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
69*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
70*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
71*9880d681SAndroid Build Coastguard Worker  ret i64 %5
72*9880d681SAndroid Build Coastguard Worker}
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpeq.d(x86_mmx, x86_mmx) nounwind readnone
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Workerdefine i64 @test85(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
77*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test85
78*9880d681SAndroid Build Coastguard Worker; ALL: pcmpeqd
79*9880d681SAndroid Build Coastguard Workerentry:
80*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
81*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
82*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
83*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
84*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pcmpeq.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
85*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
86*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
87*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
88*9880d681SAndroid Build Coastguard Worker  ret i64 %5
89*9880d681SAndroid Build Coastguard Worker}
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpeq.w(x86_mmx, x86_mmx) nounwind readnone
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerdefine i64 @test84(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
94*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test84
95*9880d681SAndroid Build Coastguard Worker; ALL: pcmpeqw
96*9880d681SAndroid Build Coastguard Workerentry:
97*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
98*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
99*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
100*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
101*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pcmpeq.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
102*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
103*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
104*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
105*9880d681SAndroid Build Coastguard Worker  ret i64 %5
106*9880d681SAndroid Build Coastguard Worker}
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpeq.b(x86_mmx, x86_mmx) nounwind readnone
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Workerdefine i64 @test83(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
111*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test83
112*9880d681SAndroid Build Coastguard Worker; ALL: pcmpeqb
113*9880d681SAndroid Build Coastguard Workerentry:
114*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
115*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
116*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
117*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
118*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pcmpeq.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
119*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
120*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
121*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
122*9880d681SAndroid Build Coastguard Worker  ret i64 %5
123*9880d681SAndroid Build Coastguard Worker}
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpckldq(x86_mmx, x86_mmx) nounwind readnone
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Workerdefine i64 @test82(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
128*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test82
129*9880d681SAndroid Build Coastguard Worker; X86: punpckldq {{.*#+}} mm0 = mm0[0],mem[0]
130*9880d681SAndroid Build Coastguard Worker; X64: punpckldq {{.*#+}} mm0 = mm0[0],mm1[0]
131*9880d681SAndroid Build Coastguard Workerentry:
132*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
133*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
134*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
135*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
136*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.punpckldq(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
137*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
138*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
139*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
140*9880d681SAndroid Build Coastguard Worker  ret i64 %5
141*9880d681SAndroid Build Coastguard Worker}
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpcklwd(x86_mmx, x86_mmx) nounwind readnone
144*9880d681SAndroid Build Coastguard Worker
145*9880d681SAndroid Build Coastguard Workerdefine i64 @test81(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
146*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test81
147*9880d681SAndroid Build Coastguard Worker; X86: punpcklwd {{.*#+}} mm0 = mm0[0],mem[0],mm0[1],mem[1]
148*9880d681SAndroid Build Coastguard Worker; X64: punpcklwd {{.*#+}} mm0 = mm0[0],mm1[0],mm0[1],mm1[1]
149*9880d681SAndroid Build Coastguard Workerentry:
150*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
151*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
152*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
153*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
154*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.punpcklwd(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
155*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
156*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
157*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
158*9880d681SAndroid Build Coastguard Worker  ret i64 %5
159*9880d681SAndroid Build Coastguard Worker}
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpcklbw(x86_mmx, x86_mmx) nounwind readnone
162*9880d681SAndroid Build Coastguard Worker
163*9880d681SAndroid Build Coastguard Workerdefine i64 @test80(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
164*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test80
165*9880d681SAndroid Build Coastguard Worker; X86: punpcklbw {{.*#+}} mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3]
166*9880d681SAndroid Build Coastguard Worker; X64: punpcklbw {{.*#+}} mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3]
167*9880d681SAndroid Build Coastguard Workerentry:
168*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
169*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
170*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
171*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
172*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.punpcklbw(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
173*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
174*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
175*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
176*9880d681SAndroid Build Coastguard Worker  ret i64 %5
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpckhdq(x86_mmx, x86_mmx) nounwind readnone
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Workerdefine i64 @test79(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
182*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test79
183*9880d681SAndroid Build Coastguard Worker; X86: punpckhdq {{.*#+}} mm0 = mm0[1],mem[1]
184*9880d681SAndroid Build Coastguard Worker; X64: punpckhdq {{.*#+}} mm0 = mm0[1],mm1[1]
185*9880d681SAndroid Build Coastguard Workerentry:
186*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
187*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
188*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
189*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
190*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.punpckhdq(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
191*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
192*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
193*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
194*9880d681SAndroid Build Coastguard Worker  ret i64 %5
195*9880d681SAndroid Build Coastguard Worker}
196*9880d681SAndroid Build Coastguard Worker
197*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpckhwd(x86_mmx, x86_mmx) nounwind readnone
198*9880d681SAndroid Build Coastguard Worker
199*9880d681SAndroid Build Coastguard Workerdefine i64 @test78(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
200*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test78
201*9880d681SAndroid Build Coastguard Worker; X86: punpckhwd {{.*#+}} mm0 = mm0[2],mem[2],mm0[3],mem[3]
202*9880d681SAndroid Build Coastguard Worker; X64: punpckhwd {{.*#+}} mm0 = mm0[2],mm1[2],mm0[3],mm1[3]
203*9880d681SAndroid Build Coastguard Workerentry:
204*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
205*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
206*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
207*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
208*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.punpckhwd(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
209*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
210*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
211*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
212*9880d681SAndroid Build Coastguard Worker  ret i64 %5
213*9880d681SAndroid Build Coastguard Worker}
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpckhbw(x86_mmx, x86_mmx) nounwind readnone
216*9880d681SAndroid Build Coastguard Worker
217*9880d681SAndroid Build Coastguard Workerdefine i64 @test77(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
218*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test77
219*9880d681SAndroid Build Coastguard Worker; X86: punpckhbw {{.*#+}} mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7]
220*9880d681SAndroid Build Coastguard Worker; X64: punpckhbw {{.*#+}} mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7]
221*9880d681SAndroid Build Coastguard Workerentry:
222*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
223*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
224*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
225*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
226*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.punpckhbw(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
227*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
228*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
229*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
230*9880d681SAndroid Build Coastguard Worker  ret i64 %5
231*9880d681SAndroid Build Coastguard Worker}
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.packuswb(x86_mmx, x86_mmx) nounwind readnone
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Workerdefine i64 @test76(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
236*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test76
237*9880d681SAndroid Build Coastguard Worker; ALL: packuswb
238*9880d681SAndroid Build Coastguard Workerentry:
239*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
240*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
241*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
242*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
243*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.packuswb(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
244*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
245*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
246*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
247*9880d681SAndroid Build Coastguard Worker  ret i64 %5
248*9880d681SAndroid Build Coastguard Worker}
249*9880d681SAndroid Build Coastguard Worker
250*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.packssdw(x86_mmx, x86_mmx) nounwind readnone
251*9880d681SAndroid Build Coastguard Worker
252*9880d681SAndroid Build Coastguard Workerdefine i64 @test75(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
253*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test75
254*9880d681SAndroid Build Coastguard Worker; ALL: packssdw
255*9880d681SAndroid Build Coastguard Workerentry:
256*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
257*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
258*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
259*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
260*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.packssdw(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
261*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
262*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
263*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
264*9880d681SAndroid Build Coastguard Worker  ret i64 %5
265*9880d681SAndroid Build Coastguard Worker}
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.packsswb(x86_mmx, x86_mmx) nounwind readnone
268*9880d681SAndroid Build Coastguard Worker
269*9880d681SAndroid Build Coastguard Workerdefine i64 @test74(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
270*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test74
271*9880d681SAndroid Build Coastguard Worker; ALL: packsswb
272*9880d681SAndroid Build Coastguard Workerentry:
273*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
274*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
275*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
276*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
277*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.packsswb(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
278*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
279*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
280*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
281*9880d681SAndroid Build Coastguard Worker  ret i64 %5
282*9880d681SAndroid Build Coastguard Worker}
283*9880d681SAndroid Build Coastguard Worker
284*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrai.d(x86_mmx, i32) nounwind readnone
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Workerdefine i64 @test73(<1 x i64> %a) nounwind readnone optsize ssp {
287*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test73
288*9880d681SAndroid Build Coastguard Worker; ALL: psrad
289*9880d681SAndroid Build Coastguard Workerentry:
290*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <2 x i32>
291*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
292*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx @llvm.x86.mmx.psrai.d(x86_mmx %mmx_var.i, i32 3) nounwind
293*9880d681SAndroid Build Coastguard Worker  %2 = bitcast x86_mmx %1 to <2 x i32>
294*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i32> %2 to <1 x i64>
295*9880d681SAndroid Build Coastguard Worker  %4 = extractelement <1 x i64> %3, i32 0
296*9880d681SAndroid Build Coastguard Worker  ret i64 %4
297*9880d681SAndroid Build Coastguard Worker}
298*9880d681SAndroid Build Coastguard Worker
299*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrai.w(x86_mmx, i32) nounwind readnone
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdefine i64 @test72(<1 x i64> %a) nounwind readnone optsize ssp {
302*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test72
303*9880d681SAndroid Build Coastguard Worker; ALL: psraw
304*9880d681SAndroid Build Coastguard Workerentry:
305*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <4 x i16>
306*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
307*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx @llvm.x86.mmx.psrai.w(x86_mmx %mmx_var.i, i32 3) nounwind
308*9880d681SAndroid Build Coastguard Worker  %2 = bitcast x86_mmx %1 to <4 x i16>
309*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i16> %2 to <1 x i64>
310*9880d681SAndroid Build Coastguard Worker  %4 = extractelement <1 x i64> %3, i32 0
311*9880d681SAndroid Build Coastguard Worker  ret i64 %4
312*9880d681SAndroid Build Coastguard Worker}
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrli.q(x86_mmx, i32) nounwind readnone
315*9880d681SAndroid Build Coastguard Worker
316*9880d681SAndroid Build Coastguard Workerdefine i64 @test71(<1 x i64> %a) nounwind readnone optsize ssp {
317*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test71
318*9880d681SAndroid Build Coastguard Worker; ALL: psrlq
319*9880d681SAndroid Build Coastguard Workerentry:
320*9880d681SAndroid Build Coastguard Worker  %0 = extractelement <1 x i64> %a, i32 0
321*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast i64 %0 to x86_mmx
322*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx @llvm.x86.mmx.psrli.q(x86_mmx %mmx_var.i, i32 3) nounwind
323*9880d681SAndroid Build Coastguard Worker  %2 = bitcast x86_mmx %1 to i64
324*9880d681SAndroid Build Coastguard Worker  ret i64 %2
325*9880d681SAndroid Build Coastguard Worker}
326*9880d681SAndroid Build Coastguard Worker
327*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrli.d(x86_mmx, i32) nounwind readnone
328*9880d681SAndroid Build Coastguard Worker
329*9880d681SAndroid Build Coastguard Workerdefine i64 @test70(<1 x i64> %a) nounwind readnone optsize ssp {
330*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test70
331*9880d681SAndroid Build Coastguard Worker; ALL: psrld
332*9880d681SAndroid Build Coastguard Workerentry:
333*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <2 x i32>
334*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
335*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx @llvm.x86.mmx.psrli.d(x86_mmx %mmx_var.i, i32 3) nounwind
336*9880d681SAndroid Build Coastguard Worker  %2 = bitcast x86_mmx %1 to <2 x i32>
337*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i32> %2 to <1 x i64>
338*9880d681SAndroid Build Coastguard Worker  %4 = extractelement <1 x i64> %3, i32 0
339*9880d681SAndroid Build Coastguard Worker  ret i64 %4
340*9880d681SAndroid Build Coastguard Worker}
341*9880d681SAndroid Build Coastguard Worker
342*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrli.w(x86_mmx, i32) nounwind readnone
343*9880d681SAndroid Build Coastguard Worker
344*9880d681SAndroid Build Coastguard Workerdefine i64 @test69(<1 x i64> %a) nounwind readnone optsize ssp {
345*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test69
346*9880d681SAndroid Build Coastguard Worker; ALL: psrlw
347*9880d681SAndroid Build Coastguard Workerentry:
348*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <4 x i16>
349*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
350*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx @llvm.x86.mmx.psrli.w(x86_mmx %mmx_var.i, i32 3) nounwind
351*9880d681SAndroid Build Coastguard Worker  %2 = bitcast x86_mmx %1 to <4 x i16>
352*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i16> %2 to <1 x i64>
353*9880d681SAndroid Build Coastguard Worker  %4 = extractelement <1 x i64> %3, i32 0
354*9880d681SAndroid Build Coastguard Worker  ret i64 %4
355*9880d681SAndroid Build Coastguard Worker}
356*9880d681SAndroid Build Coastguard Worker
357*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pslli.q(x86_mmx, i32) nounwind readnone
358*9880d681SAndroid Build Coastguard Worker
359*9880d681SAndroid Build Coastguard Workerdefine i64 @test68(<1 x i64> %a) nounwind readnone optsize ssp {
360*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test68
361*9880d681SAndroid Build Coastguard Worker; ALL: psllq
362*9880d681SAndroid Build Coastguard Workerentry:
363*9880d681SAndroid Build Coastguard Worker  %0 = extractelement <1 x i64> %a, i32 0
364*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast i64 %0 to x86_mmx
365*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx @llvm.x86.mmx.pslli.q(x86_mmx %mmx_var.i, i32 3) nounwind
366*9880d681SAndroid Build Coastguard Worker  %2 = bitcast x86_mmx %1 to i64
367*9880d681SAndroid Build Coastguard Worker  ret i64 %2
368*9880d681SAndroid Build Coastguard Worker}
369*9880d681SAndroid Build Coastguard Worker
370*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pslli.d(x86_mmx, i32) nounwind readnone
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Workerdefine i64 @test67(<1 x i64> %a) nounwind readnone optsize ssp {
373*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test67
374*9880d681SAndroid Build Coastguard Worker; ALL: pslld
375*9880d681SAndroid Build Coastguard Workerentry:
376*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <2 x i32>
377*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
378*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx @llvm.x86.mmx.pslli.d(x86_mmx %mmx_var.i, i32 3) nounwind
379*9880d681SAndroid Build Coastguard Worker  %2 = bitcast x86_mmx %1 to <2 x i32>
380*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i32> %2 to <1 x i64>
381*9880d681SAndroid Build Coastguard Worker  %4 = extractelement <1 x i64> %3, i32 0
382*9880d681SAndroid Build Coastguard Worker  ret i64 %4
383*9880d681SAndroid Build Coastguard Worker}
384*9880d681SAndroid Build Coastguard Worker
385*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pslli.w(x86_mmx, i32) nounwind readnone
386*9880d681SAndroid Build Coastguard Worker
387*9880d681SAndroid Build Coastguard Workerdefine i64 @test66(<1 x i64> %a) nounwind readnone optsize ssp {
388*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test66
389*9880d681SAndroid Build Coastguard Worker; ALL: psllw
390*9880d681SAndroid Build Coastguard Workerentry:
391*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <4 x i16>
392*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
393*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx @llvm.x86.mmx.pslli.w(x86_mmx %mmx_var.i, i32 3) nounwind
394*9880d681SAndroid Build Coastguard Worker  %2 = bitcast x86_mmx %1 to <4 x i16>
395*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i16> %2 to <1 x i64>
396*9880d681SAndroid Build Coastguard Worker  %4 = extractelement <1 x i64> %3, i32 0
397*9880d681SAndroid Build Coastguard Worker  ret i64 %4
398*9880d681SAndroid Build Coastguard Worker}
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psra.d(x86_mmx, x86_mmx) nounwind readnone
401*9880d681SAndroid Build Coastguard Worker
402*9880d681SAndroid Build Coastguard Workerdefine i64 @test65(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
403*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test65
404*9880d681SAndroid Build Coastguard Worker; ALL: psrad
405*9880d681SAndroid Build Coastguard Workerentry:
406*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <2 x i32>
407*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
408*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
409*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast i64 %1 to x86_mmx
410*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psra.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
411*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
412*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
413*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
414*9880d681SAndroid Build Coastguard Worker  ret i64 %5
415*9880d681SAndroid Build Coastguard Worker}
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psra.w(x86_mmx, x86_mmx) nounwind readnone
418*9880d681SAndroid Build Coastguard Worker
419*9880d681SAndroid Build Coastguard Workerdefine i64 @test64(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
420*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test64
421*9880d681SAndroid Build Coastguard Worker; ALL: psraw
422*9880d681SAndroid Build Coastguard Workerentry:
423*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <4 x i16>
424*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
425*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
426*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast i64 %1 to x86_mmx
427*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psra.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
428*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
429*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
430*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
431*9880d681SAndroid Build Coastguard Worker  ret i64 %5
432*9880d681SAndroid Build Coastguard Worker}
433*9880d681SAndroid Build Coastguard Worker
434*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrl.q(x86_mmx, x86_mmx) nounwind readnone
435*9880d681SAndroid Build Coastguard Worker
436*9880d681SAndroid Build Coastguard Workerdefine i64 @test63(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
437*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test63
438*9880d681SAndroid Build Coastguard Worker; ALL: psrlq
439*9880d681SAndroid Build Coastguard Workerentry:
440*9880d681SAndroid Build Coastguard Worker  %0 = extractelement <1 x i64> %a, i32 0
441*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast i64 %0 to x86_mmx
442*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
443*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast i64 %1 to x86_mmx
444*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psrl.q(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
445*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to i64
446*9880d681SAndroid Build Coastguard Worker  ret i64 %3
447*9880d681SAndroid Build Coastguard Worker}
448*9880d681SAndroid Build Coastguard Worker
449*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrl.d(x86_mmx, x86_mmx) nounwind readnone
450*9880d681SAndroid Build Coastguard Worker
451*9880d681SAndroid Build Coastguard Workerdefine i64 @test62(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
452*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test62
453*9880d681SAndroid Build Coastguard Worker; ALL: psrld
454*9880d681SAndroid Build Coastguard Workerentry:
455*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <2 x i32>
456*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
457*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
458*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast i64 %1 to x86_mmx
459*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psrl.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
460*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
461*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
462*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
463*9880d681SAndroid Build Coastguard Worker  ret i64 %5
464*9880d681SAndroid Build Coastguard Worker}
465*9880d681SAndroid Build Coastguard Worker
466*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrl.w(x86_mmx, x86_mmx) nounwind readnone
467*9880d681SAndroid Build Coastguard Worker
468*9880d681SAndroid Build Coastguard Workerdefine i64 @test61(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
469*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test61
470*9880d681SAndroid Build Coastguard Worker; ALL: psrlw
471*9880d681SAndroid Build Coastguard Workerentry:
472*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <4 x i16>
473*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
474*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
475*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast i64 %1 to x86_mmx
476*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psrl.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
477*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
478*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
479*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
480*9880d681SAndroid Build Coastguard Worker  ret i64 %5
481*9880d681SAndroid Build Coastguard Worker}
482*9880d681SAndroid Build Coastguard Worker
483*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psll.q(x86_mmx, x86_mmx) nounwind readnone
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Workerdefine i64 @test60(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
486*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test60
487*9880d681SAndroid Build Coastguard Worker; ALL: psllq
488*9880d681SAndroid Build Coastguard Workerentry:
489*9880d681SAndroid Build Coastguard Worker  %0 = extractelement <1 x i64> %a, i32 0
490*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast i64 %0 to x86_mmx
491*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
492*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast i64 %1 to x86_mmx
493*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psll.q(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
494*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to i64
495*9880d681SAndroid Build Coastguard Worker  ret i64 %3
496*9880d681SAndroid Build Coastguard Worker}
497*9880d681SAndroid Build Coastguard Worker
498*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psll.d(x86_mmx, x86_mmx) nounwind readnone
499*9880d681SAndroid Build Coastguard Worker
500*9880d681SAndroid Build Coastguard Workerdefine i64 @test59(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
501*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test59
502*9880d681SAndroid Build Coastguard Worker; ALL: pslld
503*9880d681SAndroid Build Coastguard Workerentry:
504*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <2 x i32>
505*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %0 to x86_mmx
506*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
507*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast i64 %1 to x86_mmx
508*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psll.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
509*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
510*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
511*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
512*9880d681SAndroid Build Coastguard Worker  ret i64 %5
513*9880d681SAndroid Build Coastguard Worker}
514*9880d681SAndroid Build Coastguard Worker
515*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psll.w(x86_mmx, x86_mmx) nounwind readnone
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Workerdefine i64 @test58(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
518*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test58
519*9880d681SAndroid Build Coastguard Worker; ALL: psllw
520*9880d681SAndroid Build Coastguard Workerentry:
521*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <4 x i16>
522*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %0 to x86_mmx
523*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
524*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast i64 %1 to x86_mmx
525*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psll.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
526*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
527*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
528*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
529*9880d681SAndroid Build Coastguard Worker  ret i64 %5
530*9880d681SAndroid Build Coastguard Worker}
531*9880d681SAndroid Build Coastguard Worker
532*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pxor(x86_mmx, x86_mmx) nounwind readnone
533*9880d681SAndroid Build Coastguard Worker
534*9880d681SAndroid Build Coastguard Workerdefine i64 @test56(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
535*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test56
536*9880d681SAndroid Build Coastguard Worker; ALL: pxor
537*9880d681SAndroid Build Coastguard Workerentry:
538*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
539*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
540*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
541*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
542*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pxor(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
543*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
544*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
545*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
546*9880d681SAndroid Build Coastguard Worker  ret i64 %5
547*9880d681SAndroid Build Coastguard Worker}
548*9880d681SAndroid Build Coastguard Worker
549*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.por(x86_mmx, x86_mmx) nounwind readnone
550*9880d681SAndroid Build Coastguard Worker
551*9880d681SAndroid Build Coastguard Workerdefine i64 @test55(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
552*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test55
553*9880d681SAndroid Build Coastguard Worker; ALL: por
554*9880d681SAndroid Build Coastguard Workerentry:
555*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
556*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
557*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
558*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
559*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.por(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
560*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
561*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
562*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
563*9880d681SAndroid Build Coastguard Worker  ret i64 %5
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Worker
566*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pandn(x86_mmx, x86_mmx) nounwind readnone
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Workerdefine i64 @test54(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
569*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test54
570*9880d681SAndroid Build Coastguard Worker; ALL: pandn
571*9880d681SAndroid Build Coastguard Workerentry:
572*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
573*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
574*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
575*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
576*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pandn(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
577*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
578*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
579*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
580*9880d681SAndroid Build Coastguard Worker  ret i64 %5
581*9880d681SAndroid Build Coastguard Worker}
582*9880d681SAndroid Build Coastguard Worker
583*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pand(x86_mmx, x86_mmx) nounwind readnone
584*9880d681SAndroid Build Coastguard Worker
585*9880d681SAndroid Build Coastguard Workerdefine i64 @test53(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
586*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test53
587*9880d681SAndroid Build Coastguard Worker; ALL: pand
588*9880d681SAndroid Build Coastguard Workerentry:
589*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
590*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
591*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
592*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
593*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pand(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
594*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
595*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
596*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
597*9880d681SAndroid Build Coastguard Worker  ret i64 %5
598*9880d681SAndroid Build Coastguard Worker}
599*9880d681SAndroid Build Coastguard Worker
600*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx, x86_mmx) nounwind readnone
601*9880d681SAndroid Build Coastguard Worker
602*9880d681SAndroid Build Coastguard Workerdefine i64 @test52(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
603*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test52
604*9880d681SAndroid Build Coastguard Worker; ALL: pmullw
605*9880d681SAndroid Build Coastguard Workerentry:
606*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
607*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
608*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
609*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
610*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
611*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
612*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
613*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
614*9880d681SAndroid Build Coastguard Worker  ret i64 %5
615*9880d681SAndroid Build Coastguard Worker}
616*9880d681SAndroid Build Coastguard Worker
617*9880d681SAndroid Build Coastguard Workerdefine i64 @test51(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
618*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test51
619*9880d681SAndroid Build Coastguard Worker; ALL: pmullw
620*9880d681SAndroid Build Coastguard Workerentry:
621*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
622*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
623*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
624*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
625*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
626*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
627*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
628*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
629*9880d681SAndroid Build Coastguard Worker  ret i64 %5
630*9880d681SAndroid Build Coastguard Worker}
631*9880d681SAndroid Build Coastguard Worker
632*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmulh.w(x86_mmx, x86_mmx) nounwind readnone
633*9880d681SAndroid Build Coastguard Worker
634*9880d681SAndroid Build Coastguard Workerdefine i64 @test50(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
635*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test50
636*9880d681SAndroid Build Coastguard Worker; ALL: pmulhw
637*9880d681SAndroid Build Coastguard Workerentry:
638*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
639*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
640*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
641*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
642*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pmulh.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
643*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
644*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
645*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
646*9880d681SAndroid Build Coastguard Worker  ret i64 %5
647*9880d681SAndroid Build Coastguard Worker}
648*9880d681SAndroid Build Coastguard Worker
649*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmadd.wd(x86_mmx, x86_mmx) nounwind readnone
650*9880d681SAndroid Build Coastguard Worker
651*9880d681SAndroid Build Coastguard Workerdefine i64 @test49(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
652*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test49
653*9880d681SAndroid Build Coastguard Worker; ALL: pmaddwd
654*9880d681SAndroid Build Coastguard Workerentry:
655*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
656*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
657*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
658*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
659*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pmadd.wd(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
660*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
661*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
662*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
663*9880d681SAndroid Build Coastguard Worker  ret i64 %5
664*9880d681SAndroid Build Coastguard Worker}
665*9880d681SAndroid Build Coastguard Worker
666*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx, x86_mmx) nounwind readnone
667*9880d681SAndroid Build Coastguard Worker
668*9880d681SAndroid Build Coastguard Workerdefine i64 @test48(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
669*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test48
670*9880d681SAndroid Build Coastguard Worker; ALL: psubusw
671*9880d681SAndroid Build Coastguard Workerentry:
672*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
673*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
674*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
675*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
676*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
677*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
678*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
679*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
680*9880d681SAndroid Build Coastguard Worker  ret i64 %5
681*9880d681SAndroid Build Coastguard Worker}
682*9880d681SAndroid Build Coastguard Worker
683*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx, x86_mmx) nounwind readnone
684*9880d681SAndroid Build Coastguard Worker
685*9880d681SAndroid Build Coastguard Workerdefine i64 @test47(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
686*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test47
687*9880d681SAndroid Build Coastguard Worker; ALL: psubusb
688*9880d681SAndroid Build Coastguard Workerentry:
689*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
690*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
691*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
692*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
693*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
694*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
695*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
696*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
697*9880d681SAndroid Build Coastguard Worker  ret i64 %5
698*9880d681SAndroid Build Coastguard Worker}
699*9880d681SAndroid Build Coastguard Worker
700*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx, x86_mmx) nounwind readnone
701*9880d681SAndroid Build Coastguard Worker
702*9880d681SAndroid Build Coastguard Workerdefine i64 @test46(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
703*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test46
704*9880d681SAndroid Build Coastguard Worker; ALL: psubsw
705*9880d681SAndroid Build Coastguard Workerentry:
706*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
707*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
708*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
709*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
710*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
711*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
712*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
713*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
714*9880d681SAndroid Build Coastguard Worker  ret i64 %5
715*9880d681SAndroid Build Coastguard Worker}
716*9880d681SAndroid Build Coastguard Worker
717*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx, x86_mmx) nounwind readnone
718*9880d681SAndroid Build Coastguard Worker
719*9880d681SAndroid Build Coastguard Workerdefine i64 @test45(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
720*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test45
721*9880d681SAndroid Build Coastguard Worker; ALL: psubsb
722*9880d681SAndroid Build Coastguard Workerentry:
723*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
724*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
725*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
726*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
727*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
728*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
729*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
730*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
731*9880d681SAndroid Build Coastguard Worker  ret i64 %5
732*9880d681SAndroid Build Coastguard Worker}
733*9880d681SAndroid Build Coastguard Worker
734*9880d681SAndroid Build Coastguard Workerdefine i64 @test44(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
735*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test44
736*9880d681SAndroid Build Coastguard Worker; ALL: psubq
737*9880d681SAndroid Build Coastguard Workerentry:
738*9880d681SAndroid Build Coastguard Worker  %0 = extractelement <1 x i64> %a, i32 0
739*9880d681SAndroid Build Coastguard Worker  %mmx_var = bitcast i64 %0 to x86_mmx
740*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
741*9880d681SAndroid Build Coastguard Worker  %mmx_var1 = bitcast i64 %1 to x86_mmx
742*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psub.q(x86_mmx %mmx_var, x86_mmx %mmx_var1)
743*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to i64
744*9880d681SAndroid Build Coastguard Worker  ret i64 %3
745*9880d681SAndroid Build Coastguard Worker}
746*9880d681SAndroid Build Coastguard Worker
747*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psub.q(x86_mmx, x86_mmx) nounwind readnone
748*9880d681SAndroid Build Coastguard Worker
749*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psub.d(x86_mmx, x86_mmx) nounwind readnone
750*9880d681SAndroid Build Coastguard Worker
751*9880d681SAndroid Build Coastguard Workerdefine i64 @test43(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
752*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test43
753*9880d681SAndroid Build Coastguard Worker; ALL: psubd
754*9880d681SAndroid Build Coastguard Workerentry:
755*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
756*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
757*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
758*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
759*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psub.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
760*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
761*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
762*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
763*9880d681SAndroid Build Coastguard Worker  ret i64 %5
764*9880d681SAndroid Build Coastguard Worker}
765*9880d681SAndroid Build Coastguard Worker
766*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psub.w(x86_mmx, x86_mmx) nounwind readnone
767*9880d681SAndroid Build Coastguard Worker
768*9880d681SAndroid Build Coastguard Workerdefine i64 @test42(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
769*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test42
770*9880d681SAndroid Build Coastguard Worker; ALL: psubw
771*9880d681SAndroid Build Coastguard Workerentry:
772*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
773*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
774*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
775*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
776*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psub.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
777*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
778*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
779*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
780*9880d681SAndroid Build Coastguard Worker  ret i64 %5
781*9880d681SAndroid Build Coastguard Worker}
782*9880d681SAndroid Build Coastguard Worker
783*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psub.b(x86_mmx, x86_mmx) nounwind readnone
784*9880d681SAndroid Build Coastguard Worker
785*9880d681SAndroid Build Coastguard Workerdefine i64 @test41(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
786*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test41
787*9880d681SAndroid Build Coastguard Worker; ALL: psubb
788*9880d681SAndroid Build Coastguard Workerentry:
789*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
790*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
791*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
792*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
793*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psub.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
794*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
795*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
796*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
797*9880d681SAndroid Build Coastguard Worker  ret i64 %5
798*9880d681SAndroid Build Coastguard Worker}
799*9880d681SAndroid Build Coastguard Worker
800*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.paddus.w(x86_mmx, x86_mmx) nounwind readnone
801*9880d681SAndroid Build Coastguard Worker
802*9880d681SAndroid Build Coastguard Workerdefine i64 @test40(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
803*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test40
804*9880d681SAndroid Build Coastguard Worker; ALL: paddusw
805*9880d681SAndroid Build Coastguard Workerentry:
806*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
807*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
808*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
809*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
810*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.paddus.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
811*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
812*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
813*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
814*9880d681SAndroid Build Coastguard Worker  ret i64 %5
815*9880d681SAndroid Build Coastguard Worker}
816*9880d681SAndroid Build Coastguard Worker
817*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.paddus.b(x86_mmx, x86_mmx) nounwind readnone
818*9880d681SAndroid Build Coastguard Worker
819*9880d681SAndroid Build Coastguard Workerdefine i64 @test39(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
820*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test39
821*9880d681SAndroid Build Coastguard Worker; ALL: paddusb
822*9880d681SAndroid Build Coastguard Workerentry:
823*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
824*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
825*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
826*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
827*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.paddus.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
828*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
829*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
830*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
831*9880d681SAndroid Build Coastguard Worker  ret i64 %5
832*9880d681SAndroid Build Coastguard Worker}
833*9880d681SAndroid Build Coastguard Worker
834*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padds.w(x86_mmx, x86_mmx) nounwind readnone
835*9880d681SAndroid Build Coastguard Worker
836*9880d681SAndroid Build Coastguard Workerdefine i64 @test38(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
837*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test38
838*9880d681SAndroid Build Coastguard Worker; ALL: paddsw
839*9880d681SAndroid Build Coastguard Workerentry:
840*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
841*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
842*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
843*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
844*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.padds.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
845*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
846*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
847*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
848*9880d681SAndroid Build Coastguard Worker  ret i64 %5
849*9880d681SAndroid Build Coastguard Worker}
850*9880d681SAndroid Build Coastguard Worker
851*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padds.b(x86_mmx, x86_mmx) nounwind readnone
852*9880d681SAndroid Build Coastguard Worker
853*9880d681SAndroid Build Coastguard Workerdefine i64 @test37(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
854*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test37
855*9880d681SAndroid Build Coastguard Worker; ALL: paddsb
856*9880d681SAndroid Build Coastguard Workerentry:
857*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
858*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
859*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
860*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
861*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.padds.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
862*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
863*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
864*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
865*9880d681SAndroid Build Coastguard Worker  ret i64 %5
866*9880d681SAndroid Build Coastguard Worker}
867*9880d681SAndroid Build Coastguard Worker
868*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padd.q(x86_mmx, x86_mmx) nounwind readnone
869*9880d681SAndroid Build Coastguard Worker
870*9880d681SAndroid Build Coastguard Workerdefine i64 @test36(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
871*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test36
872*9880d681SAndroid Build Coastguard Worker; ALL: paddq
873*9880d681SAndroid Build Coastguard Workerentry:
874*9880d681SAndroid Build Coastguard Worker  %0 = extractelement <1 x i64> %a, i32 0
875*9880d681SAndroid Build Coastguard Worker  %mmx_var = bitcast i64 %0 to x86_mmx
876*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
877*9880d681SAndroid Build Coastguard Worker  %mmx_var1 = bitcast i64 %1 to x86_mmx
878*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.padd.q(x86_mmx %mmx_var, x86_mmx %mmx_var1)
879*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to i64
880*9880d681SAndroid Build Coastguard Worker  ret i64 %3
881*9880d681SAndroid Build Coastguard Worker}
882*9880d681SAndroid Build Coastguard Worker
883*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padd.d(x86_mmx, x86_mmx) nounwind readnone
884*9880d681SAndroid Build Coastguard Worker
885*9880d681SAndroid Build Coastguard Workerdefine i64 @test35(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
886*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test35
887*9880d681SAndroid Build Coastguard Worker; ALL: paddd
888*9880d681SAndroid Build Coastguard Workerentry:
889*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
890*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
891*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
892*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
893*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.padd.d(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
894*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
895*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
896*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
897*9880d681SAndroid Build Coastguard Worker  ret i64 %5
898*9880d681SAndroid Build Coastguard Worker}
899*9880d681SAndroid Build Coastguard Worker
900*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padd.w(x86_mmx, x86_mmx) nounwind readnone
901*9880d681SAndroid Build Coastguard Worker
902*9880d681SAndroid Build Coastguard Workerdefine i64 @test34(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
903*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test34
904*9880d681SAndroid Build Coastguard Worker; ALL: paddw
905*9880d681SAndroid Build Coastguard Workerentry:
906*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
907*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
908*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
909*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
910*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.padd.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
911*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
912*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
913*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
914*9880d681SAndroid Build Coastguard Worker  ret i64 %5
915*9880d681SAndroid Build Coastguard Worker}
916*9880d681SAndroid Build Coastguard Worker
917*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padd.b(x86_mmx, x86_mmx) nounwind readnone
918*9880d681SAndroid Build Coastguard Worker
919*9880d681SAndroid Build Coastguard Workerdefine i64 @test33(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
920*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test33
921*9880d681SAndroid Build Coastguard Worker; ALL: paddb
922*9880d681SAndroid Build Coastguard Workerentry:
923*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
924*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
925*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
926*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
927*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.padd.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
928*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
929*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
930*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
931*9880d681SAndroid Build Coastguard Worker  ret i64 %5
932*9880d681SAndroid Build Coastguard Worker}
933*9880d681SAndroid Build Coastguard Worker
934*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psad.bw(x86_mmx, x86_mmx) nounwind readnone
935*9880d681SAndroid Build Coastguard Worker
936*9880d681SAndroid Build Coastguard Workerdefine i64 @test32(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
937*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test32
938*9880d681SAndroid Build Coastguard Worker; ALL: psadbw
939*9880d681SAndroid Build Coastguard Workerentry:
940*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
941*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
942*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
943*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
944*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.psad.bw(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
945*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to i64
946*9880d681SAndroid Build Coastguard Worker  ret i64 %3
947*9880d681SAndroid Build Coastguard Worker}
948*9880d681SAndroid Build Coastguard Worker
949*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmins.w(x86_mmx, x86_mmx) nounwind readnone
950*9880d681SAndroid Build Coastguard Worker
951*9880d681SAndroid Build Coastguard Workerdefine i64 @test31(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
952*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test31
953*9880d681SAndroid Build Coastguard Worker; ALL: pminsw
954*9880d681SAndroid Build Coastguard Workerentry:
955*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
956*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
957*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
958*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
959*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pmins.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
960*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
961*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
962*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
963*9880d681SAndroid Build Coastguard Worker  ret i64 %5
964*9880d681SAndroid Build Coastguard Worker}
965*9880d681SAndroid Build Coastguard Worker
966*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pminu.b(x86_mmx, x86_mmx) nounwind readnone
967*9880d681SAndroid Build Coastguard Worker
968*9880d681SAndroid Build Coastguard Workerdefine i64 @test30(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
969*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test30
970*9880d681SAndroid Build Coastguard Worker; ALL: pminub
971*9880d681SAndroid Build Coastguard Workerentry:
972*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
973*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
974*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
975*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
976*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pminu.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
977*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
978*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
979*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
980*9880d681SAndroid Build Coastguard Worker  ret i64 %5
981*9880d681SAndroid Build Coastguard Worker}
982*9880d681SAndroid Build Coastguard Worker
983*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmaxs.w(x86_mmx, x86_mmx) nounwind readnone
984*9880d681SAndroid Build Coastguard Worker
985*9880d681SAndroid Build Coastguard Workerdefine i64 @test29(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
986*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test29
987*9880d681SAndroid Build Coastguard Worker; ALL: pmaxsw
988*9880d681SAndroid Build Coastguard Workerentry:
989*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
990*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
991*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
992*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
993*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pmaxs.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
994*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
995*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
996*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
997*9880d681SAndroid Build Coastguard Worker  ret i64 %5
998*9880d681SAndroid Build Coastguard Worker}
999*9880d681SAndroid Build Coastguard Worker
1000*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmaxu.b(x86_mmx, x86_mmx) nounwind readnone
1001*9880d681SAndroid Build Coastguard Worker
1002*9880d681SAndroid Build Coastguard Workerdefine i64 @test28(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1003*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test28
1004*9880d681SAndroid Build Coastguard Worker; ALL: pmaxub
1005*9880d681SAndroid Build Coastguard Workerentry:
1006*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
1007*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
1008*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
1009*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
1010*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pmaxu.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
1011*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
1012*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
1013*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
1014*9880d681SAndroid Build Coastguard Worker  ret i64 %5
1015*9880d681SAndroid Build Coastguard Worker}
1016*9880d681SAndroid Build Coastguard Worker
1017*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pavg.w(x86_mmx, x86_mmx) nounwind readnone
1018*9880d681SAndroid Build Coastguard Worker
1019*9880d681SAndroid Build Coastguard Workerdefine i64 @test27(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1020*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test27
1021*9880d681SAndroid Build Coastguard Worker; ALL: pavgw
1022*9880d681SAndroid Build Coastguard Workerentry:
1023*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
1024*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
1025*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
1026*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
1027*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pavg.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
1028*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
1029*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
1030*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
1031*9880d681SAndroid Build Coastguard Worker  ret i64 %5
1032*9880d681SAndroid Build Coastguard Worker}
1033*9880d681SAndroid Build Coastguard Worker
1034*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pavg.b(x86_mmx, x86_mmx) nounwind readnone
1035*9880d681SAndroid Build Coastguard Worker
1036*9880d681SAndroid Build Coastguard Workerdefine i64 @test26(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1037*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test26
1038*9880d681SAndroid Build Coastguard Worker; ALL: pavgb
1039*9880d681SAndroid Build Coastguard Workerentry:
1040*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
1041*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
1042*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
1043*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
1044*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pavg.b(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
1045*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
1046*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
1047*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
1048*9880d681SAndroid Build Coastguard Worker  ret i64 %5
1049*9880d681SAndroid Build Coastguard Worker}
1050*9880d681SAndroid Build Coastguard Worker
1051*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.mmx.movnt.dq(x86_mmx*, x86_mmx) nounwind
1052*9880d681SAndroid Build Coastguard Worker
1053*9880d681SAndroid Build Coastguard Workerdefine void @test25(<1 x i64>* %p, <1 x i64> %a) nounwind optsize ssp {
1054*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test25
1055*9880d681SAndroid Build Coastguard Worker; ALL: movntq
1056*9880d681SAndroid Build Coastguard Workerentry:
1057*9880d681SAndroid Build Coastguard Worker  %mmx_ptr_var.i = bitcast <1 x i64>* %p to x86_mmx*
1058*9880d681SAndroid Build Coastguard Worker  %0 = extractelement <1 x i64> %a, i32 0
1059*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast i64 %0 to x86_mmx
1060*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.mmx.movnt.dq(x86_mmx* %mmx_ptr_var.i, x86_mmx %mmx_var.i) nounwind
1061*9880d681SAndroid Build Coastguard Worker  ret void
1062*9880d681SAndroid Build Coastguard Worker}
1063*9880d681SAndroid Build Coastguard Worker
1064*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.mmx.pmovmskb(x86_mmx) nounwind readnone
1065*9880d681SAndroid Build Coastguard Worker
1066*9880d681SAndroid Build Coastguard Workerdefine i32 @test24(<1 x i64> %a) nounwind readnone optsize ssp {
1067*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test24
1068*9880d681SAndroid Build Coastguard Worker; ALL: pmovmskb
1069*9880d681SAndroid Build Coastguard Workerentry:
1070*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <8 x i8>
1071*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %0 to x86_mmx
1072*9880d681SAndroid Build Coastguard Worker  %1 = tail call i32 @llvm.x86.mmx.pmovmskb(x86_mmx %mmx_var.i) nounwind
1073*9880d681SAndroid Build Coastguard Worker  ret i32 %1
1074*9880d681SAndroid Build Coastguard Worker}
1075*9880d681SAndroid Build Coastguard Worker
1076*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.mmx.maskmovq(x86_mmx, x86_mmx, i8*) nounwind
1077*9880d681SAndroid Build Coastguard Worker
1078*9880d681SAndroid Build Coastguard Workerdefine void @test23(<1 x i64> %d, <1 x i64> %n, i8* %p) nounwind optsize ssp {
1079*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test23
1080*9880d681SAndroid Build Coastguard Worker; ALL: maskmovq
1081*9880d681SAndroid Build Coastguard Workerentry:
1082*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %n to <8 x i8>
1083*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %d to <8 x i8>
1084*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <8 x i8> %1 to x86_mmx
1085*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <8 x i8> %0 to x86_mmx
1086*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.mmx.maskmovq(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i, i8* %p) nounwind
1087*9880d681SAndroid Build Coastguard Worker  ret void
1088*9880d681SAndroid Build Coastguard Worker}
1089*9880d681SAndroid Build Coastguard Worker
1090*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmulhu.w(x86_mmx, x86_mmx) nounwind readnone
1091*9880d681SAndroid Build Coastguard Worker
1092*9880d681SAndroid Build Coastguard Workerdefine i64 @test22(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1093*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test22
1094*9880d681SAndroid Build Coastguard Worker; ALL: pmulhuw
1095*9880d681SAndroid Build Coastguard Workerentry:
1096*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
1097*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
1098*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <4 x i16> %1 to x86_mmx
1099*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <4 x i16> %0 to x86_mmx
1100*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pmulhu.w(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
1101*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
1102*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
1103*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
1104*9880d681SAndroid Build Coastguard Worker  ret i64 %5
1105*9880d681SAndroid Build Coastguard Worker}
1106*9880d681SAndroid Build Coastguard Worker
1107*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx, i8) nounwind readnone
1108*9880d681SAndroid Build Coastguard Worker
1109*9880d681SAndroid Build Coastguard Workerdefine i64 @test21(<1 x i64> %a) nounwind readnone optsize ssp {
1110*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test21
1111*9880d681SAndroid Build Coastguard Worker; X86: pshufw {{.*#+}} mm0 = mem[3,0,0,0]
1112*9880d681SAndroid Build Coastguard Worker; X64: pshufw {{.*#+}} mm0 = mm0[3,0,0,0]
1113*9880d681SAndroid Build Coastguard Workerentry:
1114*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <4 x i16>
1115*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <4 x i16> %0 to x86_mmx
1116*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx %1, i8 3) nounwind readnone
1117*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
1118*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
1119*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
1120*9880d681SAndroid Build Coastguard Worker  ret i64 %5
1121*9880d681SAndroid Build Coastguard Worker}
1122*9880d681SAndroid Build Coastguard Worker
1123*9880d681SAndroid Build Coastguard Workerdefine i32 @test21_2(<1 x i64> %a) nounwind readnone optsize ssp {
1124*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test21_2
1125*9880d681SAndroid Build Coastguard Worker; X86: pshufw {{.*#+}} mm0 = mem[3,0,0,0]
1126*9880d681SAndroid Build Coastguard Worker; X64: pshufw {{.*#+}} mm0 = mm0[3,0,0,0]
1127*9880d681SAndroid Build Coastguard Worker; ALL: movd
1128*9880d681SAndroid Build Coastguard Workerentry:
1129*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <4 x i16>
1130*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <4 x i16> %0 to x86_mmx
1131*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx %1, i8 3) nounwind readnone
1132*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
1133*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <2 x i32>
1134*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <2 x i32> %4, i32 0
1135*9880d681SAndroid Build Coastguard Worker  ret i32 %5
1136*9880d681SAndroid Build Coastguard Worker}
1137*9880d681SAndroid Build Coastguard Worker
1138*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmulu.dq(x86_mmx, x86_mmx) nounwind readnone
1139*9880d681SAndroid Build Coastguard Worker
1140*9880d681SAndroid Build Coastguard Workerdefine i64 @test20(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1141*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test20
1142*9880d681SAndroid Build Coastguard Worker; ALL: pmuludq
1143*9880d681SAndroid Build Coastguard Workerentry:
1144*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
1145*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
1146*9880d681SAndroid Build Coastguard Worker  %mmx_var.i = bitcast <2 x i32> %1 to x86_mmx
1147*9880d681SAndroid Build Coastguard Worker  %mmx_var1.i = bitcast <2 x i32> %0 to x86_mmx
1148*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.pmulu.dq(x86_mmx %mmx_var.i, x86_mmx %mmx_var1.i) nounwind
1149*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to i64
1150*9880d681SAndroid Build Coastguard Worker  ret i64 %3
1151*9880d681SAndroid Build Coastguard Worker}
1152*9880d681SAndroid Build Coastguard Worker
1153*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse.cvtpi2pd(x86_mmx) nounwind readnone
1154*9880d681SAndroid Build Coastguard Worker
1155*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test19(<1 x i64> %a) nounwind readnone optsize ssp {
1156*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test19
1157*9880d681SAndroid Build Coastguard Worker; ALL: cvtpi2pd
1158*9880d681SAndroid Build Coastguard Workerentry:
1159*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <2 x i32>
1160*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <2 x i32> %0 to x86_mmx
1161*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x double> @llvm.x86.sse.cvtpi2pd(x86_mmx %1) nounwind readnone
1162*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1163*9880d681SAndroid Build Coastguard Worker}
1164*9880d681SAndroid Build Coastguard Worker
1165*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.sse.cvttpd2pi(<2 x double>) nounwind readnone
1166*9880d681SAndroid Build Coastguard Worker
1167*9880d681SAndroid Build Coastguard Workerdefine i64 @test18(<2 x double> %a) nounwind readnone optsize ssp {
1168*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test18
1169*9880d681SAndroid Build Coastguard Worker; ALL: cvttpd2pi
1170*9880d681SAndroid Build Coastguard Workerentry:
1171*9880d681SAndroid Build Coastguard Worker  %0 = tail call x86_mmx @llvm.x86.sse.cvttpd2pi(<2 x double> %a) nounwind readnone
1172*9880d681SAndroid Build Coastguard Worker  %1 = bitcast x86_mmx %0 to <2 x i32>
1173*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x i32> %1 to <1 x i64>
1174*9880d681SAndroid Build Coastguard Worker  %3 = extractelement <1 x i64> %2, i32 0
1175*9880d681SAndroid Build Coastguard Worker  ret i64 %3
1176*9880d681SAndroid Build Coastguard Worker}
1177*9880d681SAndroid Build Coastguard Worker
1178*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.sse.cvtpd2pi(<2 x double>) nounwind readnone
1179*9880d681SAndroid Build Coastguard Worker
1180*9880d681SAndroid Build Coastguard Workerdefine i64 @test17(<2 x double> %a) nounwind readnone optsize ssp {
1181*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test17
1182*9880d681SAndroid Build Coastguard Worker; ALL: cvtpd2pi
1183*9880d681SAndroid Build Coastguard Workerentry:
1184*9880d681SAndroid Build Coastguard Worker  %0 = tail call x86_mmx @llvm.x86.sse.cvtpd2pi(<2 x double> %a) nounwind readnone
1185*9880d681SAndroid Build Coastguard Worker  %1 = bitcast x86_mmx %0 to <2 x i32>
1186*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x i32> %1 to <1 x i64>
1187*9880d681SAndroid Build Coastguard Worker  %3 = extractelement <1 x i64> %2, i32 0
1188*9880d681SAndroid Build Coastguard Worker  ret i64 %3
1189*9880d681SAndroid Build Coastguard Worker}
1190*9880d681SAndroid Build Coastguard Worker
1191*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.palignr.b(x86_mmx, x86_mmx, i8) nounwind readnone
1192*9880d681SAndroid Build Coastguard Worker
1193*9880d681SAndroid Build Coastguard Workerdefine i64 @test16(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1194*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test16
1195*9880d681SAndroid Build Coastguard Worker; ALL: palignr
1196*9880d681SAndroid Build Coastguard Workerentry:
1197*9880d681SAndroid Build Coastguard Worker  %0 = extractelement <1 x i64> %a, i32 0
1198*9880d681SAndroid Build Coastguard Worker  %mmx_var = bitcast i64 %0 to x86_mmx
1199*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <1 x i64> %b, i32 0
1200*9880d681SAndroid Build Coastguard Worker  %mmx_var1 = bitcast i64 %1 to x86_mmx
1201*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.mmx.palignr.b(x86_mmx %mmx_var, x86_mmx %mmx_var1, i8 16)
1202*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to i64
1203*9880d681SAndroid Build Coastguard Worker  ret i64 %3
1204*9880d681SAndroid Build Coastguard Worker}
1205*9880d681SAndroid Build Coastguard Worker
1206*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pabs.d(x86_mmx) nounwind readnone
1207*9880d681SAndroid Build Coastguard Worker
1208*9880d681SAndroid Build Coastguard Workerdefine i64 @test15(<1 x i64> %a) nounwind readnone optsize ssp {
1209*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test15
1210*9880d681SAndroid Build Coastguard Worker; ALL: pabsd
1211*9880d681SAndroid Build Coastguard Workerentry:
1212*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <2 x i32>
1213*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <2 x i32> %0 to x86_mmx
1214*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.ssse3.pabs.d(x86_mmx %1) nounwind readnone
1215*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <2 x i32>
1216*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <2 x i32> %3 to <1 x i64>
1217*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
1218*9880d681SAndroid Build Coastguard Worker  ret i64 %5
1219*9880d681SAndroid Build Coastguard Worker}
1220*9880d681SAndroid Build Coastguard Worker
1221*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pabs.w(x86_mmx) nounwind readnone
1222*9880d681SAndroid Build Coastguard Worker
1223*9880d681SAndroid Build Coastguard Workerdefine i64 @test14(<1 x i64> %a) nounwind readnone optsize ssp {
1224*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test14
1225*9880d681SAndroid Build Coastguard Worker; ALL: pabsw
1226*9880d681SAndroid Build Coastguard Workerentry:
1227*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <4 x i16>
1228*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <4 x i16> %0 to x86_mmx
1229*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.ssse3.pabs.w(x86_mmx %1) nounwind readnone
1230*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <4 x i16>
1231*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <4 x i16> %3 to <1 x i64>
1232*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
1233*9880d681SAndroid Build Coastguard Worker  ret i64 %5
1234*9880d681SAndroid Build Coastguard Worker}
1235*9880d681SAndroid Build Coastguard Worker
1236*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pabs.b(x86_mmx) nounwind readnone
1237*9880d681SAndroid Build Coastguard Worker
1238*9880d681SAndroid Build Coastguard Workerdefine i64 @test13(<1 x i64> %a) nounwind readnone optsize ssp {
1239*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test13
1240*9880d681SAndroid Build Coastguard Worker; ALL: pabsb
1241*9880d681SAndroid Build Coastguard Workerentry:
1242*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %a to <8 x i8>
1243*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <8 x i8> %0 to x86_mmx
1244*9880d681SAndroid Build Coastguard Worker  %2 = tail call x86_mmx @llvm.x86.ssse3.pabs.b(x86_mmx %1) nounwind readnone
1245*9880d681SAndroid Build Coastguard Worker  %3 = bitcast x86_mmx %2 to <8 x i8>
1246*9880d681SAndroid Build Coastguard Worker  %4 = bitcast <8 x i8> %3 to <1 x i64>
1247*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <1 x i64> %4, i32 0
1248*9880d681SAndroid Build Coastguard Worker  ret i64 %5
1249*9880d681SAndroid Build Coastguard Worker}
1250*9880d681SAndroid Build Coastguard Worker
1251*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.psign.d(x86_mmx, x86_mmx) nounwind readnone
1252*9880d681SAndroid Build Coastguard Worker
1253*9880d681SAndroid Build Coastguard Workerdefine i64 @test12(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1254*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test12
1255*9880d681SAndroid Build Coastguard Worker; ALL: psignd
1256*9880d681SAndroid Build Coastguard Workerentry:
1257*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
1258*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
1259*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x i32> %1 to x86_mmx
1260*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i32> %0 to x86_mmx
1261*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.psign.d(x86_mmx %2, x86_mmx %3) nounwind readnone
1262*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <2 x i32>
1263*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <2 x i32> %5 to <1 x i64>
1264*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1265*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1266*9880d681SAndroid Build Coastguard Worker}
1267*9880d681SAndroid Build Coastguard Worker
1268*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.psign.w(x86_mmx, x86_mmx) nounwind readnone
1269*9880d681SAndroid Build Coastguard Worker
1270*9880d681SAndroid Build Coastguard Workerdefine i64 @test11(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1271*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test11
1272*9880d681SAndroid Build Coastguard Worker; ALL: psignw
1273*9880d681SAndroid Build Coastguard Workerentry:
1274*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
1275*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
1276*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i16> %1 to x86_mmx
1277*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i16> %0 to x86_mmx
1278*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.psign.w(x86_mmx %2, x86_mmx %3) nounwind readnone
1279*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <4 x i16>
1280*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <4 x i16> %5 to <1 x i64>
1281*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1282*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1283*9880d681SAndroid Build Coastguard Worker}
1284*9880d681SAndroid Build Coastguard Worker
1285*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.psign.b(x86_mmx, x86_mmx) nounwind readnone
1286*9880d681SAndroid Build Coastguard Worker
1287*9880d681SAndroid Build Coastguard Workerdefine i64 @test10(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1288*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test10
1289*9880d681SAndroid Build Coastguard Worker; ALL: psignb
1290*9880d681SAndroid Build Coastguard Workerentry:
1291*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
1292*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
1293*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x i8> %1 to x86_mmx
1294*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x i8> %0 to x86_mmx
1295*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.psign.b(x86_mmx %2, x86_mmx %3) nounwind readnone
1296*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <8 x i8>
1297*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <8 x i8> %5 to <1 x i64>
1298*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1299*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1300*9880d681SAndroid Build Coastguard Worker}
1301*9880d681SAndroid Build Coastguard Worker
1302*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pshuf.b(x86_mmx, x86_mmx) nounwind readnone
1303*9880d681SAndroid Build Coastguard Worker
1304*9880d681SAndroid Build Coastguard Workerdefine i64 @test9(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1305*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test9
1306*9880d681SAndroid Build Coastguard Worker; ALL: pshufb
1307*9880d681SAndroid Build Coastguard Workerentry:
1308*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
1309*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
1310*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x i8> %1 to x86_mmx
1311*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x i8> %0 to x86_mmx
1312*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.pshuf.b(x86_mmx %2, x86_mmx %3) nounwind readnone
1313*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <8 x i8>
1314*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <8 x i8> %5 to <1 x i64>
1315*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1316*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1317*9880d681SAndroid Build Coastguard Worker}
1318*9880d681SAndroid Build Coastguard Worker
1319*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pmul.hr.sw(x86_mmx, x86_mmx) nounwind readnone
1320*9880d681SAndroid Build Coastguard Worker
1321*9880d681SAndroid Build Coastguard Workerdefine i64 @test8(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1322*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test8
1323*9880d681SAndroid Build Coastguard Worker; ALL: pmulhrsw
1324*9880d681SAndroid Build Coastguard Workerentry:
1325*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
1326*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
1327*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i16> %1 to x86_mmx
1328*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i16> %0 to x86_mmx
1329*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.pmul.hr.sw(x86_mmx %2, x86_mmx %3) nounwind readnone
1330*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <4 x i16>
1331*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <4 x i16> %5 to <1 x i64>
1332*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1333*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1334*9880d681SAndroid Build Coastguard Worker}
1335*9880d681SAndroid Build Coastguard Worker
1336*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pmadd.ub.sw(x86_mmx, x86_mmx) nounwind readnone
1337*9880d681SAndroid Build Coastguard Worker
1338*9880d681SAndroid Build Coastguard Workerdefine i64 @test7(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1339*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test7
1340*9880d681SAndroid Build Coastguard Worker; ALL: pmaddubsw
1341*9880d681SAndroid Build Coastguard Workerentry:
1342*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <8 x i8>
1343*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <8 x i8>
1344*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x i8> %1 to x86_mmx
1345*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x i8> %0 to x86_mmx
1346*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.pmadd.ub.sw(x86_mmx %2, x86_mmx %3) nounwind readnone
1347*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <8 x i8>
1348*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <8 x i8> %5 to <1 x i64>
1349*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1350*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1351*9880d681SAndroid Build Coastguard Worker}
1352*9880d681SAndroid Build Coastguard Worker
1353*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx, x86_mmx) nounwind readnone
1354*9880d681SAndroid Build Coastguard Worker
1355*9880d681SAndroid Build Coastguard Workerdefine i64 @test6(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1356*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test6
1357*9880d681SAndroid Build Coastguard Worker; ALL: phsubsw
1358*9880d681SAndroid Build Coastguard Workerentry:
1359*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
1360*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
1361*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i16> %1 to x86_mmx
1362*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i16> %0 to x86_mmx
1363*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx %2, x86_mmx %3) nounwind readnone
1364*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <4 x i16>
1365*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <4 x i16> %5 to <1 x i64>
1366*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1367*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1368*9880d681SAndroid Build Coastguard Worker}
1369*9880d681SAndroid Build Coastguard Worker
1370*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phsub.d(x86_mmx, x86_mmx) nounwind readnone
1371*9880d681SAndroid Build Coastguard Worker
1372*9880d681SAndroid Build Coastguard Workerdefine i64 @test5(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1373*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test5
1374*9880d681SAndroid Build Coastguard Worker; ALL: phsubd
1375*9880d681SAndroid Build Coastguard Workerentry:
1376*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
1377*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
1378*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x i32> %1 to x86_mmx
1379*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i32> %0 to x86_mmx
1380*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.phsub.d(x86_mmx %2, x86_mmx %3) nounwind readnone
1381*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <2 x i32>
1382*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <2 x i32> %5 to <1 x i64>
1383*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1384*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1385*9880d681SAndroid Build Coastguard Worker}
1386*9880d681SAndroid Build Coastguard Worker
1387*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phsub.w(x86_mmx, x86_mmx) nounwind readnone
1388*9880d681SAndroid Build Coastguard Worker
1389*9880d681SAndroid Build Coastguard Workerdefine i64 @test4(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1390*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test4
1391*9880d681SAndroid Build Coastguard Worker; ALL: phsubw
1392*9880d681SAndroid Build Coastguard Workerentry:
1393*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
1394*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
1395*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i16> %1 to x86_mmx
1396*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i16> %0 to x86_mmx
1397*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.phsub.w(x86_mmx %2, x86_mmx %3) nounwind readnone
1398*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <4 x i16>
1399*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <4 x i16> %5 to <1 x i64>
1400*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1401*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1402*9880d681SAndroid Build Coastguard Worker}
1403*9880d681SAndroid Build Coastguard Worker
1404*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phadd.sw(x86_mmx, x86_mmx) nounwind readnone
1405*9880d681SAndroid Build Coastguard Worker
1406*9880d681SAndroid Build Coastguard Workerdefine i64 @test3(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1407*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test3
1408*9880d681SAndroid Build Coastguard Worker; ALL: phaddsw
1409*9880d681SAndroid Build Coastguard Workerentry:
1410*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <4 x i16>
1411*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <4 x i16>
1412*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i16> %1 to x86_mmx
1413*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i16> %0 to x86_mmx
1414*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.phadd.sw(x86_mmx %2, x86_mmx %3) nounwind readnone
1415*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <4 x i16>
1416*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <4 x i16> %5 to <1 x i64>
1417*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1418*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1419*9880d681SAndroid Build Coastguard Worker}
1420*9880d681SAndroid Build Coastguard Worker
1421*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phadd.d(x86_mmx, x86_mmx) nounwind readnone
1422*9880d681SAndroid Build Coastguard Worker
1423*9880d681SAndroid Build Coastguard Workerdefine i64 @test2(<1 x i64> %a, <1 x i64> %b) nounwind readnone optsize ssp {
1424*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test2
1425*9880d681SAndroid Build Coastguard Worker; ALL: phaddd
1426*9880d681SAndroid Build Coastguard Workerentry:
1427*9880d681SAndroid Build Coastguard Worker  %0 = bitcast <1 x i64> %b to <2 x i32>
1428*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <1 x i64> %a to <2 x i32>
1429*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x i32> %1 to x86_mmx
1430*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i32> %0 to x86_mmx
1431*9880d681SAndroid Build Coastguard Worker  %4 = tail call x86_mmx @llvm.x86.ssse3.phadd.d(x86_mmx %2, x86_mmx %3) nounwind readnone
1432*9880d681SAndroid Build Coastguard Worker  %5 = bitcast x86_mmx %4 to <2 x i32>
1433*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <2 x i32> %5 to <1 x i64>
1434*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <1 x i64> %6, i32 0
1435*9880d681SAndroid Build Coastguard Worker  ret i64 %7
1436*9880d681SAndroid Build Coastguard Worker}
1437*9880d681SAndroid Build Coastguard Worker
1438*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test89(<4 x float> %a, x86_mmx %b) nounwind {
1439*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test89
1440*9880d681SAndroid Build Coastguard Worker; ALL: cvtpi2ps
1441*9880d681SAndroid Build Coastguard Worker  %c = tail call <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float> %a, x86_mmx %b)
1442*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %c
1443*9880d681SAndroid Build Coastguard Worker}
1444*9880d681SAndroid Build Coastguard Worker
1445*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float>, x86_mmx) nounwind readnone
1446*9880d681SAndroid Build Coastguard Worker
1447*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: test90
1448*9880d681SAndroid Build Coastguard Workerdefine void @test90() {
1449*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: @test90
1450*9880d681SAndroid Build Coastguard Worker; ALL: emms
1451*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.mmx.emms()
1452*9880d681SAndroid Build Coastguard Worker  ret void
1453*9880d681SAndroid Build Coastguard Worker}
1454*9880d681SAndroid Build Coastguard Worker
1455*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.mmx.emms()
1456