xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=i386-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=ALL --check-prefix=X32
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=ALL --check-prefix=X64
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/sse2-builtins.c
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_add_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
8*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_epi8:
9*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
10*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    paddb %xmm1, %xmm0
11*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
12*9880d681SAndroid Build Coastguard Worker;
13*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_epi8:
14*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
15*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    paddb %xmm1, %xmm0
16*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
17*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
18*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
19*9880d681SAndroid Build Coastguard Worker  %res = add <16 x i8> %arg0, %arg1
20*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
21*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
22*9880d681SAndroid Build Coastguard Worker}
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_add_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
25*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_epi16:
26*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
27*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    paddw %xmm1, %xmm0
28*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
29*9880d681SAndroid Build Coastguard Worker;
30*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_epi16:
31*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
32*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    paddw %xmm1, %xmm0
33*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
34*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
35*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
36*9880d681SAndroid Build Coastguard Worker  %res = add <8 x i16> %arg0, %arg1
37*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
38*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
39*9880d681SAndroid Build Coastguard Worker}
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_add_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {
42*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_epi32:
43*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
44*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    paddd %xmm1, %xmm0
45*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
46*9880d681SAndroid Build Coastguard Worker;
47*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_epi32:
48*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
49*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    paddd %xmm1, %xmm0
50*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
51*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
52*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
53*9880d681SAndroid Build Coastguard Worker  %res = add <4 x i32> %arg0, %arg1
54*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
55*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
56*9880d681SAndroid Build Coastguard Worker}
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_add_epi64(<2 x i64> %a0, <2 x i64> %a1) nounwind {
59*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_epi64:
60*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
61*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    paddq %xmm1, %xmm0
62*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
63*9880d681SAndroid Build Coastguard Worker;
64*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_epi64:
65*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
66*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    paddq %xmm1, %xmm0
67*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
68*9880d681SAndroid Build Coastguard Worker  %res = add <2 x i64> %a0, %a1
69*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
70*9880d681SAndroid Build Coastguard Worker}
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_add_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
73*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_pd:
74*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
75*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    addpd %xmm1, %xmm0
76*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
77*9880d681SAndroid Build Coastguard Worker;
78*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_pd:
79*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
80*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    addpd %xmm1, %xmm0
81*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
82*9880d681SAndroid Build Coastguard Worker  %res = fadd <2 x double> %a0, %a1
83*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
84*9880d681SAndroid Build Coastguard Worker}
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_add_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
87*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_sd:
88*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
89*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    addsd %xmm1, %xmm0
90*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
91*9880d681SAndroid Build Coastguard Worker;
92*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_sd:
93*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
94*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    addsd %xmm1, %xmm0
95*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
96*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %a0, i32 0
97*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a1, i32 0
98*9880d681SAndroid Build Coastguard Worker  %fadd = fadd double %ext0, %ext1
99*9880d681SAndroid Build Coastguard Worker  %res = insertelement <2 x double> %a0, double %fadd, i32 0
100*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
101*9880d681SAndroid Build Coastguard Worker}
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_adds_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
104*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_adds_epi8:
105*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
106*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    paddsb %xmm1, %xmm0
107*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
108*9880d681SAndroid Build Coastguard Worker;
109*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_adds_epi8:
110*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
111*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    paddsb %xmm1, %xmm0
112*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
113*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
114*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
115*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8> %arg0, <16 x i8> %arg1)
116*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
117*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
118*9880d681SAndroid Build Coastguard Worker}
119*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8>, <16 x i8>) nounwind readnone
120*9880d681SAndroid Build Coastguard Worker
121*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_adds_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
122*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_adds_epi16:
123*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
124*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    paddsw %xmm1, %xmm0
125*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
126*9880d681SAndroid Build Coastguard Worker;
127*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_adds_epi16:
128*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
129*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    paddsw %xmm1, %xmm0
130*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
131*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
132*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
133*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %arg0, <8 x i16> %arg1)
134*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
135*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
136*9880d681SAndroid Build Coastguard Worker}
137*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_adds_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
140*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_adds_epu8:
141*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
142*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    paddusb %xmm1, %xmm0
143*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
144*9880d681SAndroid Build Coastguard Worker;
145*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_adds_epu8:
146*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
147*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    paddusb %xmm1, %xmm0
148*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
149*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
150*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
151*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8> %arg0, <16 x i8> %arg1)
152*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
153*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
154*9880d681SAndroid Build Coastguard Worker}
155*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8>, <16 x i8>) nounwind readnone
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_adds_epu16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
158*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_adds_epu16:
159*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
160*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    paddusw %xmm1, %xmm0
161*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
162*9880d681SAndroid Build Coastguard Worker;
163*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_adds_epu16:
164*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
165*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    paddusw %xmm1, %xmm0
166*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
167*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
168*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
169*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16> %arg0, <8 x i16> %arg1)
170*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
171*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
172*9880d681SAndroid Build Coastguard Worker}
173*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16>, <8 x i16>) nounwind readnone
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_and_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
176*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_and_pd:
177*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
178*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andps %xmm1, %xmm0
179*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
180*9880d681SAndroid Build Coastguard Worker;
181*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_and_pd:
182*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
183*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andps %xmm1, %xmm0
184*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
185*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x double> %a0 to <4 x i32>
186*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x double> %a1 to <4 x i32>
187*9880d681SAndroid Build Coastguard Worker  %res = and <4 x i32> %arg0, %arg1
188*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x double>
189*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %bc
190*9880d681SAndroid Build Coastguard Worker}
191*9880d681SAndroid Build Coastguard Worker
192*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_and_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind {
193*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_and_si128:
194*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
195*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andps %xmm1, %xmm0
196*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
197*9880d681SAndroid Build Coastguard Worker;
198*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_and_si128:
199*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
200*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andps %xmm1, %xmm0
201*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
202*9880d681SAndroid Build Coastguard Worker  %res = and <2 x i64> %a0, %a1
203*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
204*9880d681SAndroid Build Coastguard Worker}
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_andnot_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
207*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_andnot_pd:
208*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
209*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andnps %xmm1, %xmm0
210*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
211*9880d681SAndroid Build Coastguard Worker;
212*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_andnot_pd:
213*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
214*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andnps %xmm1, %xmm0
215*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
216*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x double> %a0 to <4 x i32>
217*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x double> %a1 to <4 x i32>
218*9880d681SAndroid Build Coastguard Worker  %not = xor <4 x i32> %arg0, <i32 -1, i32 -1, i32 -1, i32 -1>
219*9880d681SAndroid Build Coastguard Worker  %res = and <4 x i32> %not, %arg1
220*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x double>
221*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %bc
222*9880d681SAndroid Build Coastguard Worker}
223*9880d681SAndroid Build Coastguard Worker
224*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_andnot_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind {
225*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_andnot_si128:
226*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
227*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpeqd %xmm2, %xmm2
228*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pxor %xmm2, %xmm0
229*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pand %xmm1, %xmm0
230*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
231*9880d681SAndroid Build Coastguard Worker;
232*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_andnot_si128:
233*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
234*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpeqd %xmm2, %xmm2
235*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pxor %xmm2, %xmm0
236*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pand %xmm1, %xmm0
237*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
238*9880d681SAndroid Build Coastguard Worker  %not = xor <2 x i64> %a0, <i64 -1, i64 -1>
239*9880d681SAndroid Build Coastguard Worker  %res = and <2 x i64> %not, %a1
240*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
241*9880d681SAndroid Build Coastguard Worker}
242*9880d681SAndroid Build Coastguard Worker
243*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_avg_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
244*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_avg_epu8:
245*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
246*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pavgb %xmm1, %xmm0
247*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
248*9880d681SAndroid Build Coastguard Worker;
249*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_avg_epu8:
250*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
251*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pavgb %xmm1, %xmm0
252*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
253*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
254*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
255*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %arg0, <16 x i8> %arg1)
256*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
257*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
258*9880d681SAndroid Build Coastguard Worker}
259*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %arg0, <16 x i8> %arg1) nounwind readnone
260*9880d681SAndroid Build Coastguard Worker
261*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_avg_epu16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
262*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_avg_epu16:
263*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
264*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pavgw %xmm1, %xmm0
265*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
266*9880d681SAndroid Build Coastguard Worker;
267*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_avg_epu16:
268*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
269*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pavgw %xmm1, %xmm0
270*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
271*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
272*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
273*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %arg0, <8 x i16> %arg1)
274*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
275*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
276*9880d681SAndroid Build Coastguard Worker}
277*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_bslli_si128(<2 x i64> %a0) nounwind {
280*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_bslli_si128:
281*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
282*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]
283*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
284*9880d681SAndroid Build Coastguard Worker;
285*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_bslli_si128:
286*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
287*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]
288*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
289*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
290*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <16 x i8> zeroinitializer, <16 x i8> %arg0, <16 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26>
291*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
292*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
293*9880d681SAndroid Build Coastguard Worker}
294*9880d681SAndroid Build Coastguard Worker
295*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_bsrli_si128(<2 x i64> %a0) nounwind {
296*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_bsrli_si128:
297*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
298*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero
299*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
300*9880d681SAndroid Build Coastguard Worker;
301*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_bsrli_si128:
302*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
303*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero
304*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
305*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
306*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <16 x i8> %arg0, <16 x i8> zeroinitializer, <16 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20>
307*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
308*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
309*9880d681SAndroid Build Coastguard Worker}
310*9880d681SAndroid Build Coastguard Worker
311*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_castpd_ps(<2 x double> %a0) nounwind {
312*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castpd_ps:
313*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
314*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
315*9880d681SAndroid Build Coastguard Worker;
316*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castpd_ps:
317*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
318*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
319*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x double> %a0 to <4 x float>
320*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
321*9880d681SAndroid Build Coastguard Worker}
322*9880d681SAndroid Build Coastguard Worker
323*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_castpd_si128(<2 x double> %a0) nounwind {
324*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castpd_si128:
325*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
326*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
327*9880d681SAndroid Build Coastguard Worker;
328*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castpd_si128:
329*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
330*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
331*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x double> %a0 to <2 x i64>
332*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
333*9880d681SAndroid Build Coastguard Worker}
334*9880d681SAndroid Build Coastguard Worker
335*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_castps_pd(<4 x float> %a0) nounwind {
336*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castps_pd:
337*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
338*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
339*9880d681SAndroid Build Coastguard Worker;
340*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castps_pd:
341*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
342*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
343*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x float> %a0 to <2 x double>
344*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
345*9880d681SAndroid Build Coastguard Worker}
346*9880d681SAndroid Build Coastguard Worker
347*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_castps_si128(<4 x float> %a0) nounwind {
348*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castps_si128:
349*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
350*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
351*9880d681SAndroid Build Coastguard Worker;
352*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castps_si128:
353*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
354*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
355*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x float> %a0 to <2 x i64>
356*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
357*9880d681SAndroid Build Coastguard Worker}
358*9880d681SAndroid Build Coastguard Worker
359*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_castsi128_pd(<2 x i64> %a0) nounwind {
360*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castsi128_pd:
361*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
362*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
363*9880d681SAndroid Build Coastguard Worker;
364*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castsi128_pd:
365*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
366*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
367*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %a0 to <2 x double>
368*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
369*9880d681SAndroid Build Coastguard Worker}
370*9880d681SAndroid Build Coastguard Worker
371*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_castsi128_ps(<2 x i64> %a0) nounwind {
372*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castsi128_ps:
373*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
374*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
375*9880d681SAndroid Build Coastguard Worker;
376*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castsi128_ps:
377*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
378*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
379*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %a0 to <4 x float>
380*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
381*9880d681SAndroid Build Coastguard Worker}
382*9880d681SAndroid Build Coastguard Worker
383*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_clflush(i8* %a0) nounwind {
384*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_clflush:
385*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
386*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
387*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    clflush (%eax)
388*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
389*9880d681SAndroid Build Coastguard Worker;
390*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_clflush:
391*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
392*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    clflush (%rdi)
393*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
394*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.sse2.clflush(i8* %a0)
395*9880d681SAndroid Build Coastguard Worker  ret void
396*9880d681SAndroid Build Coastguard Worker}
397*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.clflush(i8*) nounwind readnone
398*9880d681SAndroid Build Coastguard Worker
399*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpeq_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
400*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_epi8:
401*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
402*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpeqb %xmm1, %xmm0
403*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
404*9880d681SAndroid Build Coastguard Worker;
405*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_epi8:
406*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
407*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpeqb %xmm1, %xmm0
408*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
409*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
410*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
411*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq <16 x i8> %arg0, %arg1
412*9880d681SAndroid Build Coastguard Worker  %res = sext <16 x i1> %cmp to <16 x i8>
413*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
414*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
415*9880d681SAndroid Build Coastguard Worker}
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpeq_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
418*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_epi16:
419*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
420*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpeqw %xmm1, %xmm0
421*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
422*9880d681SAndroid Build Coastguard Worker;
423*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_epi16:
424*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
425*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpeqw %xmm1, %xmm0
426*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
427*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
428*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
429*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq <8 x i16> %arg0, %arg1
430*9880d681SAndroid Build Coastguard Worker  %res = sext <8 x i1> %cmp to <8 x i16>
431*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
432*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
433*9880d681SAndroid Build Coastguard Worker}
434*9880d681SAndroid Build Coastguard Worker
435*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpeq_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {
436*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_epi32:
437*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
438*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpeqd %xmm1, %xmm0
439*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
440*9880d681SAndroid Build Coastguard Worker;
441*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_epi32:
442*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
443*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpeqd %xmm1, %xmm0
444*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
445*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
446*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
447*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq <4 x i32> %arg0, %arg1
448*9880d681SAndroid Build Coastguard Worker  %res = sext <4 x i1> %cmp to <4 x i32>
449*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
450*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
451*9880d681SAndroid Build Coastguard Worker}
452*9880d681SAndroid Build Coastguard Worker
453*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpeq_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
454*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_pd:
455*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
456*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpeqpd %xmm1, %xmm0
457*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
458*9880d681SAndroid Build Coastguard Worker;
459*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_pd:
460*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
461*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpeqpd %xmm1, %xmm0
462*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
463*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp oeq <2 x double> %a0, %a1
464*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
465*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
466*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
467*9880d681SAndroid Build Coastguard Worker}
468*9880d681SAndroid Build Coastguard Worker
469*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpeq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
470*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_sd:
471*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
472*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpeqsd %xmm1, %xmm0
473*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
474*9880d681SAndroid Build Coastguard Worker;
475*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_sd:
476*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
477*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpeqsd %xmm1, %xmm0
478*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
479*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 0)
480*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
481*9880d681SAndroid Build Coastguard Worker}
482*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone
483*9880d681SAndroid Build Coastguard Worker
484*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpge_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
485*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpge_pd:
486*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
487*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmplepd %xmm0, %xmm1
488*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movapd %xmm1, %xmm0
489*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
490*9880d681SAndroid Build Coastguard Worker;
491*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpge_pd:
492*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
493*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmplepd %xmm0, %xmm1
494*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movapd %xmm1, %xmm0
495*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
496*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp ole <2 x double> %a1, %a0
497*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
498*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
499*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
500*9880d681SAndroid Build Coastguard Worker}
501*9880d681SAndroid Build Coastguard Worker
502*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpge_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
503*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpge_sd:
504*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
505*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmplesd %xmm0, %xmm1
506*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
507*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
508*9880d681SAndroid Build Coastguard Worker;
509*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpge_sd:
510*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
511*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmplesd %xmm0, %xmm1
512*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
513*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
514*9880d681SAndroid Build Coastguard Worker  %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 2)
515*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %cmp, i32 0
516*9880d681SAndroid Build Coastguard Worker  %ins0 = insertelement <2 x double> undef, double %ext0, i32 0
517*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a0, i32 1
518*9880d681SAndroid Build Coastguard Worker  %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1
519*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %ins1
520*9880d681SAndroid Build Coastguard Worker}
521*9880d681SAndroid Build Coastguard Worker
522*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpgt_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
523*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_epi8:
524*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
525*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpgtb %xmm1, %xmm0
526*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
527*9880d681SAndroid Build Coastguard Worker;
528*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_epi8:
529*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
530*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpgtb %xmm1, %xmm0
531*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
532*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
533*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
534*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt <16 x i8> %arg0, %arg1
535*9880d681SAndroid Build Coastguard Worker  %res = sext <16 x i1> %cmp to <16 x i8>
536*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
537*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
538*9880d681SAndroid Build Coastguard Worker}
539*9880d681SAndroid Build Coastguard Worker
540*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpgt_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
541*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_epi16:
542*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
543*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpgtw %xmm1, %xmm0
544*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
545*9880d681SAndroid Build Coastguard Worker;
546*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_epi16:
547*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
548*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpgtw %xmm1, %xmm0
549*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
550*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
551*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
552*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt <8 x i16> %arg0, %arg1
553*9880d681SAndroid Build Coastguard Worker  %res = sext <8 x i1> %cmp to <8 x i16>
554*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
555*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
556*9880d681SAndroid Build Coastguard Worker}
557*9880d681SAndroid Build Coastguard Worker
558*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpgt_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {
559*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_epi32:
560*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
561*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpgtd %xmm1, %xmm0
562*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
563*9880d681SAndroid Build Coastguard Worker;
564*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_epi32:
565*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
566*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpgtd %xmm1, %xmm0
567*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
568*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
569*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
570*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt <4 x i32> %arg0, %arg1
571*9880d681SAndroid Build Coastguard Worker  %res = sext <4 x i1> %cmp to <4 x i32>
572*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
573*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
574*9880d681SAndroid Build Coastguard Worker}
575*9880d681SAndroid Build Coastguard Worker
576*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpgt_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
577*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_pd:
578*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
579*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpltpd %xmm0, %xmm1
580*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movapd %xmm1, %xmm0
581*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
582*9880d681SAndroid Build Coastguard Worker;
583*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_pd:
584*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
585*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpltpd %xmm0, %xmm1
586*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movapd %xmm1, %xmm0
587*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
588*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp olt <2 x double> %a1, %a0
589*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
590*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
591*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
592*9880d681SAndroid Build Coastguard Worker}
593*9880d681SAndroid Build Coastguard Worker
594*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpgt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
595*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_sd:
596*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
597*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpltsd %xmm0, %xmm1
598*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
599*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
600*9880d681SAndroid Build Coastguard Worker;
601*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_sd:
602*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
603*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpltsd %xmm0, %xmm1
604*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
605*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
606*9880d681SAndroid Build Coastguard Worker  %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 1)
607*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %cmp, i32 0
608*9880d681SAndroid Build Coastguard Worker  %ins0 = insertelement <2 x double> undef, double %ext0, i32 0
609*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a0, i32 1
610*9880d681SAndroid Build Coastguard Worker  %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1
611*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %ins1
612*9880d681SAndroid Build Coastguard Worker}
613*9880d681SAndroid Build Coastguard Worker
614*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmple_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
615*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmple_pd:
616*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
617*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmplepd %xmm1, %xmm0
618*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
619*9880d681SAndroid Build Coastguard Worker;
620*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmple_pd:
621*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
622*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmplepd %xmm1, %xmm0
623*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
624*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp ole <2 x double> %a0, %a1
625*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
626*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
627*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
628*9880d681SAndroid Build Coastguard Worker}
629*9880d681SAndroid Build Coastguard Worker
630*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmple_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
631*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmple_sd:
632*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
633*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmplesd %xmm1, %xmm0
634*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
635*9880d681SAndroid Build Coastguard Worker;
636*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmple_sd:
637*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
638*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmplesd %xmm1, %xmm0
639*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
640*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 2)
641*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
642*9880d681SAndroid Build Coastguard Worker}
643*9880d681SAndroid Build Coastguard Worker
644*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmplt_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
645*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_epi8:
646*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
647*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpgtb %xmm0, %xmm1
648*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movdqa %xmm1, %xmm0
649*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
650*9880d681SAndroid Build Coastguard Worker;
651*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_epi8:
652*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
653*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpgtb %xmm0, %xmm1
654*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movdqa %xmm1, %xmm0
655*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
656*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
657*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
658*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt <16 x i8> %arg1, %arg0
659*9880d681SAndroid Build Coastguard Worker  %res = sext <16 x i1> %cmp to <16 x i8>
660*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
661*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
662*9880d681SAndroid Build Coastguard Worker}
663*9880d681SAndroid Build Coastguard Worker
664*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmplt_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
665*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_epi16:
666*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
667*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpgtw %xmm0, %xmm1
668*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movdqa %xmm1, %xmm0
669*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
670*9880d681SAndroid Build Coastguard Worker;
671*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_epi16:
672*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
673*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpgtw %xmm0, %xmm1
674*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movdqa %xmm1, %xmm0
675*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
676*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
677*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
678*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt <8 x i16> %arg1, %arg0
679*9880d681SAndroid Build Coastguard Worker  %res = sext <8 x i1> %cmp to <8 x i16>
680*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
681*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
682*9880d681SAndroid Build Coastguard Worker}
683*9880d681SAndroid Build Coastguard Worker
684*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmplt_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {
685*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_epi32:
686*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
687*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pcmpgtd %xmm0, %xmm1
688*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movdqa %xmm1, %xmm0
689*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
690*9880d681SAndroid Build Coastguard Worker;
691*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_epi32:
692*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
693*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pcmpgtd %xmm0, %xmm1
694*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movdqa %xmm1, %xmm0
695*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
696*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
697*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
698*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt <4 x i32> %arg1, %arg0
699*9880d681SAndroid Build Coastguard Worker  %res = sext <4 x i1> %cmp to <4 x i32>
700*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
701*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
702*9880d681SAndroid Build Coastguard Worker}
703*9880d681SAndroid Build Coastguard Worker
704*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmplt_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
705*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_pd:
706*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
707*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpltpd %xmm1, %xmm0
708*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
709*9880d681SAndroid Build Coastguard Worker;
710*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_pd:
711*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
712*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpltpd %xmm1, %xmm0
713*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
714*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp olt <2 x double> %a0, %a1
715*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
716*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
717*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
718*9880d681SAndroid Build Coastguard Worker}
719*9880d681SAndroid Build Coastguard Worker
720*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmplt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
721*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_sd:
722*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
723*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpltsd %xmm1, %xmm0
724*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
725*9880d681SAndroid Build Coastguard Worker;
726*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_sd:
727*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
728*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpltsd %xmm1, %xmm0
729*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
730*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 1)
731*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
732*9880d681SAndroid Build Coastguard Worker}
733*9880d681SAndroid Build Coastguard Worker
734*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpneq_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
735*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpneq_pd:
736*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
737*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpneqpd %xmm1, %xmm0
738*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
739*9880d681SAndroid Build Coastguard Worker;
740*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpneq_pd:
741*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
742*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpneqpd %xmm1, %xmm0
743*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
744*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp une <2 x double> %a0, %a1
745*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
746*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
747*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
748*9880d681SAndroid Build Coastguard Worker}
749*9880d681SAndroid Build Coastguard Worker
750*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpneq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
751*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpneq_sd:
752*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
753*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpneqsd %xmm1, %xmm0
754*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
755*9880d681SAndroid Build Coastguard Worker;
756*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpneq_sd:
757*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
758*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpneqsd %xmm1, %xmm0
759*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
760*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 4)
761*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
762*9880d681SAndroid Build Coastguard Worker}
763*9880d681SAndroid Build Coastguard Worker
764*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnge_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
765*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnge_pd:
766*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
767*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpnlepd %xmm0, %xmm1
768*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movapd %xmm1, %xmm0
769*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
770*9880d681SAndroid Build Coastguard Worker;
771*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnge_pd:
772*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
773*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpnlepd %xmm0, %xmm1
774*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movapd %xmm1, %xmm0
775*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
776*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp ugt <2 x double> %a1, %a0
777*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
778*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
779*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
780*9880d681SAndroid Build Coastguard Worker}
781*9880d681SAndroid Build Coastguard Worker
782*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnge_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
783*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnge_sd:
784*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
785*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpnlesd %xmm0, %xmm1
786*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
787*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
788*9880d681SAndroid Build Coastguard Worker;
789*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnge_sd:
790*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
791*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpnlesd %xmm0, %xmm1
792*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
793*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
794*9880d681SAndroid Build Coastguard Worker  %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 6)
795*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %cmp, i32 0
796*9880d681SAndroid Build Coastguard Worker  %ins0 = insertelement <2 x double> undef, double %ext0, i32 0
797*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a0, i32 1
798*9880d681SAndroid Build Coastguard Worker  %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1
799*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %ins1
800*9880d681SAndroid Build Coastguard Worker}
801*9880d681SAndroid Build Coastguard Worker
802*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpngt_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
803*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpngt_pd:
804*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
805*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpnltpd %xmm0, %xmm1
806*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movapd %xmm1, %xmm0
807*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
808*9880d681SAndroid Build Coastguard Worker;
809*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpngt_pd:
810*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
811*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpnltpd %xmm0, %xmm1
812*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movapd %xmm1, %xmm0
813*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
814*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp uge <2 x double> %a1, %a0
815*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
816*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
817*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
818*9880d681SAndroid Build Coastguard Worker}
819*9880d681SAndroid Build Coastguard Worker
820*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpngt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
821*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpngt_sd:
822*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
823*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpnltsd %xmm0, %xmm1
824*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
825*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
826*9880d681SAndroid Build Coastguard Worker;
827*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpngt_sd:
828*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
829*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpnltsd %xmm0, %xmm1
830*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
831*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
832*9880d681SAndroid Build Coastguard Worker  %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 5)
833*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %cmp, i32 0
834*9880d681SAndroid Build Coastguard Worker  %ins0 = insertelement <2 x double> undef, double %ext0, i32 0
835*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a0, i32 1
836*9880d681SAndroid Build Coastguard Worker  %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1
837*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %ins1
838*9880d681SAndroid Build Coastguard Worker}
839*9880d681SAndroid Build Coastguard Worker
840*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnle_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
841*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnle_pd:
842*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
843*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpnlepd %xmm1, %xmm0
844*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
845*9880d681SAndroid Build Coastguard Worker;
846*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnle_pd:
847*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
848*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpnlepd %xmm1, %xmm0
849*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
850*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp ugt <2 x double> %a0, %a1
851*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
852*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
853*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
854*9880d681SAndroid Build Coastguard Worker}
855*9880d681SAndroid Build Coastguard Worker
856*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnle_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
857*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnle_sd:
858*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
859*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpnlesd %xmm1, %xmm0
860*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
861*9880d681SAndroid Build Coastguard Worker;
862*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnle_sd:
863*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
864*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpnlesd %xmm1, %xmm0
865*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
866*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 6)
867*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
868*9880d681SAndroid Build Coastguard Worker}
869*9880d681SAndroid Build Coastguard Worker
870*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnlt_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
871*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnlt_pd:
872*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
873*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpnltpd %xmm1, %xmm0
874*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
875*9880d681SAndroid Build Coastguard Worker;
876*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnlt_pd:
877*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
878*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpnltpd %xmm1, %xmm0
879*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
880*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp uge <2 x double> %a0, %a1
881*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
882*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
883*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
884*9880d681SAndroid Build Coastguard Worker}
885*9880d681SAndroid Build Coastguard Worker
886*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnlt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
887*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnlt_sd:
888*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
889*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpnltsd %xmm1, %xmm0
890*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
891*9880d681SAndroid Build Coastguard Worker;
892*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnlt_sd:
893*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
894*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpnltsd %xmm1, %xmm0
895*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
896*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 5)
897*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
898*9880d681SAndroid Build Coastguard Worker}
899*9880d681SAndroid Build Coastguard Worker
900*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpord_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
901*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpord_pd:
902*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
903*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpordpd %xmm1, %xmm0
904*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
905*9880d681SAndroid Build Coastguard Worker;
906*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpord_pd:
907*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
908*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpordpd %xmm1, %xmm0
909*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
910*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp ord <2 x double> %a0, %a1
911*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
912*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
913*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
914*9880d681SAndroid Build Coastguard Worker}
915*9880d681SAndroid Build Coastguard Worker
916*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpord_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
917*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpord_sd:
918*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
919*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpordsd %xmm1, %xmm0
920*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
921*9880d681SAndroid Build Coastguard Worker;
922*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpord_sd:
923*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
924*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpordsd %xmm1, %xmm0
925*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
926*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 7)
927*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
928*9880d681SAndroid Build Coastguard Worker}
929*9880d681SAndroid Build Coastguard Worker
930*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpunord_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
931*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpunord_pd:
932*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
933*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpunordpd %xmm1, %xmm0
934*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
935*9880d681SAndroid Build Coastguard Worker;
936*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpunord_pd:
937*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
938*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpunordpd %xmm1, %xmm0
939*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
940*9880d681SAndroid Build Coastguard Worker  %fcmp = fcmp uno <2 x double> %a0, %a1
941*9880d681SAndroid Build Coastguard Worker  %sext = sext <2 x i1> %fcmp to <2 x i64>
942*9880d681SAndroid Build Coastguard Worker  %res = bitcast <2 x i64> %sext to <2 x double>
943*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
944*9880d681SAndroid Build Coastguard Worker}
945*9880d681SAndroid Build Coastguard Worker
946*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpunord_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
947*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpunord_sd:
948*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
949*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cmpunordsd %xmm1, %xmm0
950*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
951*9880d681SAndroid Build Coastguard Worker;
952*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpunord_sd:
953*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
954*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cmpunordsd %xmm1, %xmm0
955*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
956*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 3)
957*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
958*9880d681SAndroid Build Coastguard Worker}
959*9880d681SAndroid Build Coastguard Worker
960*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comieq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
961*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comieq_sd:
962*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
963*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    comisd %xmm1, %xmm0
964*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setnp %al
965*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sete %cl
966*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andb %al, %cl
967*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl %cl, %eax
968*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
969*9880d681SAndroid Build Coastguard Worker;
970*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comieq_sd:
971*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
972*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    comisd %xmm1, %xmm0
973*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setnp %al
974*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sete %cl
975*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andb %al, %cl
976*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %cl, %eax
977*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
978*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %a0, <2 x double> %a1)
979*9880d681SAndroid Build Coastguard Worker  ret i32 %res
980*9880d681SAndroid Build Coastguard Worker}
981*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) nounwind readnone
982*9880d681SAndroid Build Coastguard Worker
983*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comige_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
984*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comige_sd:
985*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
986*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
987*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    comisd %xmm1, %xmm0
988*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setae %al
989*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
990*9880d681SAndroid Build Coastguard Worker;
991*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comige_sd:
992*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
993*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
994*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    comisd %xmm1, %xmm0
995*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setae %al
996*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
997*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comige.sd(<2 x double> %a0, <2 x double> %a1)
998*9880d681SAndroid Build Coastguard Worker  ret i32 %res
999*9880d681SAndroid Build Coastguard Worker}
1000*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>) nounwind readnone
1001*9880d681SAndroid Build Coastguard Worker
1002*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comigt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
1003*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comigt_sd:
1004*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1005*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
1006*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    comisd %xmm1, %xmm0
1007*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    seta %al
1008*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1009*9880d681SAndroid Build Coastguard Worker;
1010*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comigt_sd:
1011*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1012*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
1013*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    comisd %xmm1, %xmm0
1014*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    seta %al
1015*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1016*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %a0, <2 x double> %a1)
1017*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1018*9880d681SAndroid Build Coastguard Worker}
1019*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>) nounwind readnone
1020*9880d681SAndroid Build Coastguard Worker
1021*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comile_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
1022*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comile_sd:
1023*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1024*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
1025*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    comisd %xmm0, %xmm1
1026*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setae %al
1027*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1028*9880d681SAndroid Build Coastguard Worker;
1029*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comile_sd:
1030*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1031*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
1032*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    comisd %xmm0, %xmm1
1033*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setae %al
1034*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1035*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comile.sd(<2 x double> %a0, <2 x double> %a1)
1036*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1037*9880d681SAndroid Build Coastguard Worker}
1038*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>) nounwind readnone
1039*9880d681SAndroid Build Coastguard Worker
1040*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comilt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
1041*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comilt_sd:
1042*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1043*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
1044*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    comisd %xmm0, %xmm1
1045*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    seta %al
1046*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1047*9880d681SAndroid Build Coastguard Worker;
1048*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comilt_sd:
1049*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1050*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
1051*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    comisd %xmm0, %xmm1
1052*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    seta %al
1053*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1054*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %a0, <2 x double> %a1)
1055*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1056*9880d681SAndroid Build Coastguard Worker}
1057*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>) nounwind readnone
1058*9880d681SAndroid Build Coastguard Worker
1059*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comineq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
1060*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comineq_sd:
1061*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1062*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    comisd %xmm1, %xmm0
1063*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setp %al
1064*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setne %cl
1065*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    orb %al, %cl
1066*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl %cl, %eax
1067*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1068*9880d681SAndroid Build Coastguard Worker;
1069*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comineq_sd:
1070*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1071*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    comisd %xmm1, %xmm0
1072*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setp %al
1073*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setne %cl
1074*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    orb %al, %cl
1075*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %cl, %eax
1076*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1077*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %a0, <2 x double> %a1)
1078*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1079*9880d681SAndroid Build Coastguard Worker}
1080*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>) nounwind readnone
1081*9880d681SAndroid Build Coastguard Worker
1082*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cvtepi32_pd(<2 x i64> %a0) nounwind {
1083*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtepi32_pd:
1084*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1085*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvtdq2pd %xmm0, %xmm0
1086*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1087*9880d681SAndroid Build Coastguard Worker;
1088*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtepi32_pd:
1089*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1090*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvtdq2pd %xmm0, %xmm0
1091*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1092*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
1093*9880d681SAndroid Build Coastguard Worker  %ext = shufflevector <4 x i32> %arg0, <4 x i32> %arg0, <2 x i32> <i32 0, i32 1>
1094*9880d681SAndroid Build Coastguard Worker  %res = sitofp <2 x i32> %ext to <2 x double>
1095*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1096*9880d681SAndroid Build Coastguard Worker}
1097*9880d681SAndroid Build Coastguard Worker
1098*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_cvtepi32_ps(<2 x i64> %a0) nounwind {
1099*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtepi32_ps:
1100*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1101*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvtdq2ps %xmm0, %xmm0
1102*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1103*9880d681SAndroid Build Coastguard Worker;
1104*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtepi32_ps:
1105*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1106*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvtdq2ps %xmm0, %xmm0
1107*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1108*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
1109*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32> %arg0)
1110*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1111*9880d681SAndroid Build Coastguard Worker}
1112*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32>) nounwind readnone
1113*9880d681SAndroid Build Coastguard Worker
1114*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvtpd_epi32(<2 x double> %a0) nounwind {
1115*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtpd_epi32:
1116*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1117*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvtpd2dq %xmm0, %xmm0
1118*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1119*9880d681SAndroid Build Coastguard Worker;
1120*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtpd_epi32:
1121*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1122*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvtpd2dq %xmm0, %xmm0
1123*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1124*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double> %a0)
1125*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
1126*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1127*9880d681SAndroid Build Coastguard Worker}
1128*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double>) nounwind readnone
1129*9880d681SAndroid Build Coastguard Worker
1130*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_cvtpd_ps(<2 x double> %a0) nounwind {
1131*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtpd_ps:
1132*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1133*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvtpd2ps %xmm0, %xmm0
1134*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1135*9880d681SAndroid Build Coastguard Worker;
1136*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtpd_ps:
1137*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1138*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvtpd2ps %xmm0, %xmm0
1139*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1140*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0)
1141*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1142*9880d681SAndroid Build Coastguard Worker}
1143*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double>) nounwind readnone
1144*9880d681SAndroid Build Coastguard Worker
1145*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvtps_epi32(<4 x float> %a0) nounwind {
1146*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtps_epi32:
1147*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1148*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvtps2dq %xmm0, %xmm0
1149*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1150*9880d681SAndroid Build Coastguard Worker;
1151*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtps_epi32:
1152*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1153*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvtps2dq %xmm0, %xmm0
1154*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1155*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %a0)
1156*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
1157*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1158*9880d681SAndroid Build Coastguard Worker}
1159*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float>) nounwind readnone
1160*9880d681SAndroid Build Coastguard Worker
1161*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cvtps_pd(<4 x float> %a0) nounwind {
1162*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtps_pd:
1163*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1164*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvtps2pd %xmm0, %xmm0
1165*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1166*9880d681SAndroid Build Coastguard Worker;
1167*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtps_pd:
1168*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1169*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvtps2pd %xmm0, %xmm0
1170*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1171*9880d681SAndroid Build Coastguard Worker  %ext = shufflevector <4 x float> %a0, <4 x float> %a0, <2 x i32> <i32 0, i32 1>
1172*9880d681SAndroid Build Coastguard Worker  %res = fpext <2 x float> %ext to <2 x double>
1173*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1174*9880d681SAndroid Build Coastguard Worker}
1175*9880d681SAndroid Build Coastguard Worker
1176*9880d681SAndroid Build Coastguard Workerdefine double @test_mm_cvtsd_f64(<2 x double> %a0) nounwind {
1177*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsd_f64:
1178*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1179*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pushl %ebp
1180*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl %esp, %ebp
1181*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andl $-8, %esp
1182*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    subl $8, %esp
1183*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movlps %xmm0, (%esp)
1184*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    fldl (%esp)
1185*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl %ebp, %esp
1186*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    popl %ebp
1187*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1188*9880d681SAndroid Build Coastguard Worker;
1189*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsd_f64:
1190*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1191*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1192*9880d681SAndroid Build Coastguard Worker  %res = extractelement <2 x double> %a0, i32 0
1193*9880d681SAndroid Build Coastguard Worker  ret double %res
1194*9880d681SAndroid Build Coastguard Worker}
1195*9880d681SAndroid Build Coastguard Worker
1196*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_cvtsd_si32(<2 x double> %a0) nounwind {
1197*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsd_si32:
1198*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1199*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvtsd2si %xmm0, %eax
1200*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1201*9880d681SAndroid Build Coastguard Worker;
1202*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsd_si32:
1203*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1204*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvtsd2si %xmm0, %eax
1205*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1206*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %a0)
1207*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1208*9880d681SAndroid Build Coastguard Worker}
1209*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone
1210*9880d681SAndroid Build Coastguard Worker
1211*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_cvtsi128_si32(<2 x i64> %a0) nounwind {
1212*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsi128_si32:
1213*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1214*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %xmm0, %eax
1215*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1216*9880d681SAndroid Build Coastguard Worker;
1217*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsi128_si32:
1218*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1219*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %xmm0, %eax
1220*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1221*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
1222*9880d681SAndroid Build Coastguard Worker  %res = extractelement <4 x i32> %arg0, i32 0
1223*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1224*9880d681SAndroid Build Coastguard Worker}
1225*9880d681SAndroid Build Coastguard Worker
1226*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cvtsi32_sd(<2 x double> %a0, i32 %a1) nounwind {
1227*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsi32_sd:
1228*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1229*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1230*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvtsi2sdl %eax, %xmm1
1231*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
1232*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1233*9880d681SAndroid Build Coastguard Worker;
1234*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsi32_sd:
1235*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1236*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvtsi2sdl %edi, %xmm1
1237*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
1238*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1239*9880d681SAndroid Build Coastguard Worker  %cvt = sitofp i32 %a1 to double
1240*9880d681SAndroid Build Coastguard Worker  %res = insertelement <2 x double> %a0, double %cvt, i32 0
1241*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1242*9880d681SAndroid Build Coastguard Worker}
1243*9880d681SAndroid Build Coastguard Worker
1244*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvtsi32_si128(i32 %a0) nounwind {
1245*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsi32_si128:
1246*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1247*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
1248*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1249*9880d681SAndroid Build Coastguard Worker;
1250*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsi32_si128:
1251*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1252*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edi, %xmm0
1253*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1254*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <4 x i32> undef, i32 %a0, i32 0
1255*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <4 x i32> %res0, i32 0, i32 1
1256*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <4 x i32> %res1, i32 0, i32 2
1257*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <4 x i32> %res2, i32 0, i32 3
1258*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x i32> %res3 to <2 x i64>
1259*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
1260*9880d681SAndroid Build Coastguard Worker}
1261*9880d681SAndroid Build Coastguard Worker
1262*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cvtss_sd(<2 x double> %a0, <4 x float> %a1) nounwind {
1263*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtss_sd:
1264*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1265*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvtss2sd %xmm1, %xmm1
1266*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
1267*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1268*9880d681SAndroid Build Coastguard Worker;
1269*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtss_sd:
1270*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1271*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvtss2sd %xmm1, %xmm1
1272*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
1273*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1274*9880d681SAndroid Build Coastguard Worker  %ext = extractelement <4 x float> %a1, i32 0
1275*9880d681SAndroid Build Coastguard Worker  %cvt = fpext float %ext to double
1276*9880d681SAndroid Build Coastguard Worker  %res = insertelement <2 x double> %a0, double %cvt, i32 0
1277*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1278*9880d681SAndroid Build Coastguard Worker}
1279*9880d681SAndroid Build Coastguard Worker
1280*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvttpd_epi32(<2 x double> %a0) nounwind {
1281*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvttpd_epi32:
1282*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1283*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvttpd2dq %xmm0, %xmm0
1284*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1285*9880d681SAndroid Build Coastguard Worker;
1286*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvttpd_epi32:
1287*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1288*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvttpd2dq %xmm0, %xmm0
1289*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1290*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double> %a0)
1291*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
1292*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1293*9880d681SAndroid Build Coastguard Worker}
1294*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double>) nounwind readnone
1295*9880d681SAndroid Build Coastguard Worker
1296*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvttps_epi32(<4 x float> %a0) nounwind {
1297*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvttps_epi32:
1298*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1299*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvttps2dq %xmm0, %xmm0
1300*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1301*9880d681SAndroid Build Coastguard Worker;
1302*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvttps_epi32:
1303*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1304*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvttps2dq %xmm0, %xmm0
1305*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1306*9880d681SAndroid Build Coastguard Worker  %res = fptosi <4 x float> %a0 to <4 x i32>
1307*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
1308*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1309*9880d681SAndroid Build Coastguard Worker}
1310*9880d681SAndroid Build Coastguard Worker
1311*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_cvttsd_si32(<2 x double> %a0) nounwind {
1312*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvttsd_si32:
1313*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1314*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    cvttsd2si %xmm0, %eax
1315*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1316*9880d681SAndroid Build Coastguard Worker;
1317*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvttsd_si32:
1318*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1319*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    cvttsd2si %xmm0, %eax
1320*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1321*9880d681SAndroid Build Coastguard Worker  %ext = extractelement <2 x double> %a0, i32 0
1322*9880d681SAndroid Build Coastguard Worker  %res = fptosi double %ext to i32
1323*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1324*9880d681SAndroid Build Coastguard Worker}
1325*9880d681SAndroid Build Coastguard Worker
1326*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_div_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
1327*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_div_pd:
1328*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1329*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    divpd %xmm1, %xmm0
1330*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1331*9880d681SAndroid Build Coastguard Worker;
1332*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_div_pd:
1333*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1334*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    divpd %xmm1, %xmm0
1335*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1336*9880d681SAndroid Build Coastguard Worker  %res = fdiv <2 x double> %a0, %a1
1337*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1338*9880d681SAndroid Build Coastguard Worker}
1339*9880d681SAndroid Build Coastguard Worker
1340*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_div_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
1341*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_div_sd:
1342*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1343*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    divsd %xmm1, %xmm0
1344*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1345*9880d681SAndroid Build Coastguard Worker;
1346*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_div_sd:
1347*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1348*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    divsd %xmm1, %xmm0
1349*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1350*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %a0, i32 0
1351*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a1, i32 0
1352*9880d681SAndroid Build Coastguard Worker  %fdiv = fdiv double %ext0, %ext1
1353*9880d681SAndroid Build Coastguard Worker  %res = insertelement <2 x double> %a0, double %fdiv, i32 0
1354*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1355*9880d681SAndroid Build Coastguard Worker}
1356*9880d681SAndroid Build Coastguard Worker
1357*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_extract_epi16(<2 x i64> %a0) nounwind {
1358*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_extract_epi16:
1359*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1360*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pextrw $1, %xmm0, %eax
1361*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzwl %ax, %eax
1362*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1363*9880d681SAndroid Build Coastguard Worker;
1364*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_extract_epi16:
1365*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1366*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pextrw $1, %xmm0, %eax
1367*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzwl %ax, %eax
1368*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1369*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
1370*9880d681SAndroid Build Coastguard Worker  %ext = extractelement <8 x i16> %arg0, i32 1
1371*9880d681SAndroid Build Coastguard Worker  %res = zext i16 %ext to i32
1372*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1373*9880d681SAndroid Build Coastguard Worker}
1374*9880d681SAndroid Build Coastguard Worker
1375*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_insert_epi16(<2 x i64> %a0, i16 %a1) nounwind {
1376*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_insert_epi16:
1377*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1378*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
1379*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pinsrw $1, %eax, %xmm0
1380*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1381*9880d681SAndroid Build Coastguard Worker;
1382*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_insert_epi16:
1383*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1384*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pinsrw $1, %edi, %xmm0
1385*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1386*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
1387*9880d681SAndroid Build Coastguard Worker  %res = insertelement <8 x i16> %arg0, i16 %a1,i32 1
1388*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
1389*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1390*9880d681SAndroid Build Coastguard Worker}
1391*9880d681SAndroid Build Coastguard Worker
1392*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_lfence() nounwind {
1393*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_lfence:
1394*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1395*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    lfence
1396*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1397*9880d681SAndroid Build Coastguard Worker;
1398*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_lfence:
1399*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1400*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    lfence
1401*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1402*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.sse2.lfence()
1403*9880d681SAndroid Build Coastguard Worker  ret void
1404*9880d681SAndroid Build Coastguard Worker}
1405*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.lfence() nounwind readnone
1406*9880d681SAndroid Build Coastguard Worker
1407*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_load_pd(double* %a0) nounwind {
1408*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_load_pd:
1409*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1410*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1411*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movaps (%eax), %xmm0
1412*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1413*9880d681SAndroid Build Coastguard Worker;
1414*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_load_pd:
1415*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1416*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movaps (%rdi), %xmm0
1417*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1418*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <2 x double>*
1419*9880d681SAndroid Build Coastguard Worker  %res = load <2 x double>, <2 x double>* %arg0, align 16
1420*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1421*9880d681SAndroid Build Coastguard Worker}
1422*9880d681SAndroid Build Coastguard Worker
1423*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_load_sd(double* %a0) nounwind {
1424*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_load_sd:
1425*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1426*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1427*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
1428*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1429*9880d681SAndroid Build Coastguard Worker;
1430*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_load_sd:
1431*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1432*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
1433*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1434*9880d681SAndroid Build Coastguard Worker  %ld = load double, double* %a0, align 1
1435*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <2 x double> undef, double %ld, i32 0
1436*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <2 x double> %res0, double 0.0, i32 1
1437*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res1
1438*9880d681SAndroid Build Coastguard Worker}
1439*9880d681SAndroid Build Coastguard Worker
1440*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_load_si128(<2 x i64>* %a0) nounwind {
1441*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_load_si128:
1442*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1443*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1444*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movaps (%eax), %xmm0
1445*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1446*9880d681SAndroid Build Coastguard Worker;
1447*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_load_si128:
1448*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1449*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movaps (%rdi), %xmm0
1450*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1451*9880d681SAndroid Build Coastguard Worker  %res = load <2 x i64>, <2 x i64>* %a0, align 16
1452*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
1453*9880d681SAndroid Build Coastguard Worker}
1454*9880d681SAndroid Build Coastguard Worker
1455*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_load1_pd(double* %a0) nounwind {
1456*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_load1_pd:
1457*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1458*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1459*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
1460*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0,0]
1461*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1462*9880d681SAndroid Build Coastguard Worker;
1463*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_load1_pd:
1464*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1465*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
1466*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0,0]
1467*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1468*9880d681SAndroid Build Coastguard Worker  %ld = load double, double* %a0, align 8
1469*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <2 x double> undef, double %ld, i32 0
1470*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <2 x double> %res0, double %ld, i32 1
1471*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res1
1472*9880d681SAndroid Build Coastguard Worker}
1473*9880d681SAndroid Build Coastguard Worker
1474*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_loadh_pd(<2 x double> %a0, double* %a1) nounwind {
1475*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadh_pd:
1476*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1477*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1478*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movhpd {{.*#+}} xmm0 = xmm0[0],mem[0]
1479*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1480*9880d681SAndroid Build Coastguard Worker;
1481*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadh_pd:
1482*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1483*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movhpd {{.*#+}} xmm0 = xmm0[0],mem[0]
1484*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1485*9880d681SAndroid Build Coastguard Worker  %ld = load double, double* %a1, align 8
1486*9880d681SAndroid Build Coastguard Worker  %res = insertelement <2 x double> %a0, double %ld, i32 1
1487*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1488*9880d681SAndroid Build Coastguard Worker}
1489*9880d681SAndroid Build Coastguard Worker
1490*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_loadl_epi64(<2 x i64> %a0, <2 x i64>* %a1) nounwind {
1491*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadl_epi64:
1492*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1493*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1494*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
1495*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1496*9880d681SAndroid Build Coastguard Worker;
1497*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadl_epi64:
1498*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1499*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
1500*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1501*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <2 x i64>* %a1 to i64*
1502*9880d681SAndroid Build Coastguard Worker  %ld = load i64, i64* %bc, align 1
1503*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <2 x i64> undef, i64 %ld, i32 0
1504*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <2 x i64> %res0, i64 0, i32 1
1505*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res1
1506*9880d681SAndroid Build Coastguard Worker}
1507*9880d681SAndroid Build Coastguard Worker
1508*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_loadl_pd(<2 x double> %a0, double* %a1) nounwind {
1509*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadl_pd:
1510*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1511*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1512*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movlpd {{.*#+}} xmm0 = mem[0],xmm0[1]
1513*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1514*9880d681SAndroid Build Coastguard Worker;
1515*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadl_pd:
1516*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1517*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movlpd {{.*#+}} xmm0 = mem[0],xmm0[1]
1518*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1519*9880d681SAndroid Build Coastguard Worker  %ld = load double, double* %a1, align 8
1520*9880d681SAndroid Build Coastguard Worker  %res = insertelement <2 x double> %a0, double %ld, i32 0
1521*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1522*9880d681SAndroid Build Coastguard Worker}
1523*9880d681SAndroid Build Coastguard Worker
1524*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_loadr_pd(double* %a0) nounwind {
1525*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadr_pd:
1526*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1527*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1528*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movapd (%eax), %xmm0
1529*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    shufpd {{.*#+}} xmm0 = xmm0[1,0]
1530*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1531*9880d681SAndroid Build Coastguard Worker;
1532*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadr_pd:
1533*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1534*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movapd (%rdi), %xmm0
1535*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    shufpd {{.*#+}} xmm0 = xmm0[1,0]
1536*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1537*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <2 x double>*
1538*9880d681SAndroid Build Coastguard Worker  %ld = load <2 x double>, <2 x double>* %arg0, align 16
1539*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x double> %ld, <2 x double> undef, <2 x i32> <i32 1, i32 0>
1540*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1541*9880d681SAndroid Build Coastguard Worker}
1542*9880d681SAndroid Build Coastguard Worker
1543*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_loadu_pd(double* %a0) nounwind {
1544*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadu_pd:
1545*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1546*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1547*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movups (%eax), %xmm0
1548*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1549*9880d681SAndroid Build Coastguard Worker;
1550*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadu_pd:
1551*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1552*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movups (%rdi), %xmm0
1553*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1554*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <2 x double>*
1555*9880d681SAndroid Build Coastguard Worker  %res = load <2 x double>, <2 x double>* %arg0, align 1
1556*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1557*9880d681SAndroid Build Coastguard Worker}
1558*9880d681SAndroid Build Coastguard Worker
1559*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_loadu_si128(<2 x i64>* %a0) nounwind {
1560*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadu_si128:
1561*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1562*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1563*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movups (%eax), %xmm0
1564*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1565*9880d681SAndroid Build Coastguard Worker;
1566*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadu_si128:
1567*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1568*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movups (%rdi), %xmm0
1569*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1570*9880d681SAndroid Build Coastguard Worker  %res = load <2 x i64>, <2 x i64>* %a0, align 1
1571*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
1572*9880d681SAndroid Build Coastguard Worker}
1573*9880d681SAndroid Build Coastguard Worker
1574*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_madd_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
1575*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_madd_epi16:
1576*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1577*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pmaddwd %xmm1, %xmm0
1578*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1579*9880d681SAndroid Build Coastguard Worker;
1580*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_madd_epi16:
1581*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1582*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pmaddwd %xmm1, %xmm0
1583*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1584*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
1585*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
1586*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16> %arg0, <8 x i16> %arg1)
1587*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
1588*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1589*9880d681SAndroid Build Coastguard Worker}
1590*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) nounwind readnone
1591*9880d681SAndroid Build Coastguard Worker
1592*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_maskmoveu_si128(<2 x i64> %a0, <2 x i64> %a1, i8* %a2) nounwind {
1593*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maskmoveu_si128:
1594*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1595*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pushl %edi
1596*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %edi
1597*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    maskmovdqu %xmm1, %xmm0
1598*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    popl %edi
1599*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1600*9880d681SAndroid Build Coastguard Worker;
1601*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maskmoveu_si128:
1602*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1603*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    maskmovdqu %xmm1, %xmm0
1604*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1605*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
1606*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
1607*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.sse2.maskmov.dqu(<16 x i8> %arg0, <16 x i8> %arg1, i8* %a2)
1608*9880d681SAndroid Build Coastguard Worker  ret void
1609*9880d681SAndroid Build Coastguard Worker}
1610*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.maskmov.dqu(<16 x i8>, <16 x i8>, i8*) nounwind
1611*9880d681SAndroid Build Coastguard Worker
1612*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_max_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
1613*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_max_epi16:
1614*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1615*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pmaxsw %xmm1, %xmm0
1616*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1617*9880d681SAndroid Build Coastguard Worker;
1618*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_max_epi16:
1619*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1620*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pmaxsw %xmm1, %xmm0
1621*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1622*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
1623*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
1624*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt <8 x i16> %arg0, %arg1
1625*9880d681SAndroid Build Coastguard Worker  %sel = select <8 x i1> %cmp, <8 x i16> %arg0, <8 x i16> %arg1
1626*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %sel to <2 x i64>
1627*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1628*9880d681SAndroid Build Coastguard Worker}
1629*9880d681SAndroid Build Coastguard Worker
1630*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_max_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
1631*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_max_epu8:
1632*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1633*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pmaxub %xmm1, %xmm0
1634*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1635*9880d681SAndroid Build Coastguard Worker;
1636*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_max_epu8:
1637*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1638*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pmaxub %xmm1, %xmm0
1639*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1640*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
1641*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
1642*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ugt <16 x i8> %arg0, %arg1
1643*9880d681SAndroid Build Coastguard Worker  %sel = select <16 x i1> %cmp, <16 x i8> %arg0, <16 x i8> %arg1
1644*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %sel to <2 x i64>
1645*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1646*9880d681SAndroid Build Coastguard Worker}
1647*9880d681SAndroid Build Coastguard Worker
1648*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_max_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
1649*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_max_pd:
1650*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1651*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    maxpd %xmm1, %xmm0
1652*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1653*9880d681SAndroid Build Coastguard Worker;
1654*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_max_pd:
1655*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1656*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    maxpd %xmm1, %xmm0
1657*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1658*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %a0, <2 x double> %a1)
1659*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1660*9880d681SAndroid Build Coastguard Worker}
1661*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.pd(<2 x double>, <2 x double>) nounwind readnone
1662*9880d681SAndroid Build Coastguard Worker
1663*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_max_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
1664*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_max_sd:
1665*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1666*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    maxsd %xmm1, %xmm0
1667*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1668*9880d681SAndroid Build Coastguard Worker;
1669*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_max_sd:
1670*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1671*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    maxsd %xmm1, %xmm0
1672*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1673*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a0, <2 x double> %a1)
1674*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1675*9880d681SAndroid Build Coastguard Worker}
1676*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) nounwind readnone
1677*9880d681SAndroid Build Coastguard Worker
1678*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_mfence() nounwind {
1679*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mfence:
1680*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1681*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    mfence
1682*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1683*9880d681SAndroid Build Coastguard Worker;
1684*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mfence:
1685*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1686*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    mfence
1687*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1688*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.sse2.mfence()
1689*9880d681SAndroid Build Coastguard Worker  ret void
1690*9880d681SAndroid Build Coastguard Worker}
1691*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.mfence() nounwind readnone
1692*9880d681SAndroid Build Coastguard Worker
1693*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_min_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
1694*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_min_epi16:
1695*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1696*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pminsw %xmm1, %xmm0
1697*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1698*9880d681SAndroid Build Coastguard Worker;
1699*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_min_epi16:
1700*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1701*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pminsw %xmm1, %xmm0
1702*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1703*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
1704*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
1705*9880d681SAndroid Build Coastguard Worker  %cmp = icmp slt <8 x i16> %arg0, %arg1
1706*9880d681SAndroid Build Coastguard Worker  %sel = select <8 x i1> %cmp, <8 x i16> %arg0, <8 x i16> %arg1
1707*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %sel to <2 x i64>
1708*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1709*9880d681SAndroid Build Coastguard Worker}
1710*9880d681SAndroid Build Coastguard Worker
1711*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_min_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
1712*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_min_epu8:
1713*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1714*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pminub %xmm1, %xmm0
1715*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1716*9880d681SAndroid Build Coastguard Worker;
1717*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_min_epu8:
1718*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1719*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pminub %xmm1, %xmm0
1720*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1721*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
1722*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
1723*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ult <16 x i8> %arg0, %arg1
1724*9880d681SAndroid Build Coastguard Worker  %sel = select <16 x i1> %cmp, <16 x i8> %arg0, <16 x i8> %arg1
1725*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %sel to <2 x i64>
1726*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1727*9880d681SAndroid Build Coastguard Worker}
1728*9880d681SAndroid Build Coastguard Worker
1729*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_min_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
1730*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_min_pd:
1731*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1732*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    minpd %xmm1, %xmm0
1733*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1734*9880d681SAndroid Build Coastguard Worker;
1735*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_min_pd:
1736*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1737*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    minpd %xmm1, %xmm0
1738*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1739*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %a0, <2 x double> %a1)
1740*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1741*9880d681SAndroid Build Coastguard Worker}
1742*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.pd(<2 x double>, <2 x double>) nounwind readnone
1743*9880d681SAndroid Build Coastguard Worker
1744*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_min_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
1745*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_min_sd:
1746*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1747*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    minsd %xmm1, %xmm0
1748*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1749*9880d681SAndroid Build Coastguard Worker;
1750*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_min_sd:
1751*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1752*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    minsd %xmm1, %xmm0
1753*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1754*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a0, <2 x double> %a1)
1755*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1756*9880d681SAndroid Build Coastguard Worker}
1757*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) nounwind readnone
1758*9880d681SAndroid Build Coastguard Worker
1759*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_move_epi64(<2 x i64> %a0) nounwind {
1760*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_move_epi64:
1761*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1762*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movq {{.*#+}} xmm0 = xmm0[0],zero
1763*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1764*9880d681SAndroid Build Coastguard Worker;
1765*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_move_epi64:
1766*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1767*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movq {{.*#+}} xmm0 = xmm0[0],zero
1768*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1769*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i32> <i32 0, i32 2>
1770*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
1771*9880d681SAndroid Build Coastguard Worker}
1772*9880d681SAndroid Build Coastguard Worker
1773*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_move_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
1774*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_move_sd:
1775*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1776*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
1777*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1778*9880d681SAndroid Build Coastguard Worker;
1779*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_move_sd:
1780*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1781*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
1782*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1783*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %a1, i32 0
1784*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <2 x double> undef, double %ext0, i32 0
1785*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a0, i32 1
1786*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <2 x double> %res0, double %ext1, i32 1
1787*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res1
1788*9880d681SAndroid Build Coastguard Worker}
1789*9880d681SAndroid Build Coastguard Worker
1790*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_movemask_epi8(<2 x i64> %a0) nounwind {
1791*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_movemask_epi8:
1792*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1793*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pmovmskb %xmm0, %eax
1794*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1795*9880d681SAndroid Build Coastguard Worker;
1796*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_movemask_epi8:
1797*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1798*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pmovmskb %xmm0, %eax
1799*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1800*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
1801*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %arg0)
1802*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1803*9880d681SAndroid Build Coastguard Worker}
1804*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8>) nounwind readnone
1805*9880d681SAndroid Build Coastguard Worker
1806*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_movemask_pd(<2 x double> %a0) nounwind {
1807*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_movemask_pd:
1808*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1809*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movmskpd %xmm0, %eax
1810*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1811*9880d681SAndroid Build Coastguard Worker;
1812*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_movemask_pd:
1813*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1814*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movmskpd %xmm0, %eax
1815*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1816*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.movmsk.pd(<2 x double> %a0)
1817*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1818*9880d681SAndroid Build Coastguard Worker}
1819*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.movmsk.pd(<2 x double>) nounwind readnone
1820*9880d681SAndroid Build Coastguard Worker
1821*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mul_epu32(<2 x i64> %a0, <2 x i64> %a1) {
1822*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mul_epu32:
1823*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1824*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pmuludq %xmm1, %xmm0
1825*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1826*9880d681SAndroid Build Coastguard Worker;
1827*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mul_epu32:
1828*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1829*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pmuludq %xmm1, %xmm0
1830*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1831*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
1832*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
1833*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32> %arg0, <4 x i32> %arg1)
1834*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
1835*9880d681SAndroid Build Coastguard Worker}
1836*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32>, <4 x i32>) nounwind readnone
1837*9880d681SAndroid Build Coastguard Worker
1838*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_mul_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
1839*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mul_pd:
1840*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1841*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    mulpd %xmm1, %xmm0
1842*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1843*9880d681SAndroid Build Coastguard Worker;
1844*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mul_pd:
1845*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1846*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    mulpd %xmm1, %xmm0
1847*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1848*9880d681SAndroid Build Coastguard Worker  %res = fmul <2 x double> %a0, %a1
1849*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1850*9880d681SAndroid Build Coastguard Worker}
1851*9880d681SAndroid Build Coastguard Worker
1852*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_mul_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
1853*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mul_sd:
1854*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1855*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    mulsd %xmm1, %xmm0
1856*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1857*9880d681SAndroid Build Coastguard Worker;
1858*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mul_sd:
1859*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1860*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    mulsd %xmm1, %xmm0
1861*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1862*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %a0, i32 0
1863*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a1, i32 0
1864*9880d681SAndroid Build Coastguard Worker  %fmul = fmul double %ext0, %ext1
1865*9880d681SAndroid Build Coastguard Worker  %res = insertelement <2 x double> %a0, double %fmul, i32 0
1866*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1867*9880d681SAndroid Build Coastguard Worker}
1868*9880d681SAndroid Build Coastguard Worker
1869*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mulhi_epi16(<2 x i64> %a0, <2 x i64> %a1) {
1870*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mulhi_epi16:
1871*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1872*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pmulhw %xmm1, %xmm0
1873*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1874*9880d681SAndroid Build Coastguard Worker;
1875*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mulhi_epi16:
1876*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1877*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pmulhw %xmm1, %xmm0
1878*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1879*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
1880*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
1881*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16> %arg0, <8 x i16> %arg1)
1882*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
1883*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1884*9880d681SAndroid Build Coastguard Worker}
1885*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) nounwind readnone
1886*9880d681SAndroid Build Coastguard Worker
1887*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mulhi_epu16(<2 x i64> %a0, <2 x i64> %a1) {
1888*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mulhi_epu16:
1889*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1890*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pmulhuw %xmm1, %xmm0
1891*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1892*9880d681SAndroid Build Coastguard Worker;
1893*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mulhi_epu16:
1894*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1895*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pmulhuw %xmm1, %xmm0
1896*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1897*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
1898*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
1899*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16> %arg0, <8 x i16> %arg1)
1900*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
1901*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1902*9880d681SAndroid Build Coastguard Worker}
1903*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16>, <8 x i16>) nounwind readnone
1904*9880d681SAndroid Build Coastguard Worker
1905*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mullo_epi16(<2 x i64> %a0, <2 x i64> %a1) {
1906*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mullo_epi16:
1907*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1908*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pmullw %xmm1, %xmm0
1909*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1910*9880d681SAndroid Build Coastguard Worker;
1911*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mullo_epi16:
1912*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1913*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pmullw %xmm1, %xmm0
1914*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1915*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
1916*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
1917*9880d681SAndroid Build Coastguard Worker  %res = mul <8 x i16> %arg0, %arg1
1918*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
1919*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1920*9880d681SAndroid Build Coastguard Worker}
1921*9880d681SAndroid Build Coastguard Worker
1922*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_or_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
1923*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_or_pd:
1924*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1925*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    orps %xmm1, %xmm0
1926*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1927*9880d681SAndroid Build Coastguard Worker;
1928*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_or_pd:
1929*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1930*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    orps %xmm1, %xmm0
1931*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1932*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x double> %a0 to <4 x i32>
1933*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x double> %a1 to <4 x i32>
1934*9880d681SAndroid Build Coastguard Worker  %res = or <4 x i32> %arg0, %arg1
1935*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x double>
1936*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %bc
1937*9880d681SAndroid Build Coastguard Worker}
1938*9880d681SAndroid Build Coastguard Worker
1939*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_or_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind {
1940*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_or_si128:
1941*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1942*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    orps %xmm1, %xmm0
1943*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1944*9880d681SAndroid Build Coastguard Worker;
1945*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_or_si128:
1946*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1947*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    orps %xmm1, %xmm0
1948*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1949*9880d681SAndroid Build Coastguard Worker  %res = or <2 x i64> %a0, %a1
1950*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
1951*9880d681SAndroid Build Coastguard Worker}
1952*9880d681SAndroid Build Coastguard Worker
1953*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_packs_epi16(<2 x i64> %a0, <2 x i64> %a1) {
1954*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_packs_epi16:
1955*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1956*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    packsswb %xmm1, %xmm0
1957*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1958*9880d681SAndroid Build Coastguard Worker;
1959*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_packs_epi16:
1960*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1961*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    packsswb %xmm1, %xmm0
1962*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1963*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
1964*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
1965*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %arg0, <8 x i16> %arg1)
1966*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
1967*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1968*9880d681SAndroid Build Coastguard Worker}
1969*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16>, <8 x i16>) nounwind readnone
1970*9880d681SAndroid Build Coastguard Worker
1971*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_packs_epi32(<2 x i64> %a0, <2 x i64> %a1) {
1972*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_packs_epi32:
1973*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1974*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    packssdw %xmm1, %xmm0
1975*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1976*9880d681SAndroid Build Coastguard Worker;
1977*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_packs_epi32:
1978*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1979*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    packssdw %xmm1, %xmm0
1980*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1981*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
1982*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
1983*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %arg0, <4 x i32> %arg1)
1984*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
1985*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
1986*9880d681SAndroid Build Coastguard Worker}
1987*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32>, <4 x i32>) nounwind readnone
1988*9880d681SAndroid Build Coastguard Worker
1989*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_packus_epi16(<2 x i64> %a0, <2 x i64> %a1) {
1990*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_packus_epi16:
1991*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1992*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    packuswb %xmm1, %xmm0
1993*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1994*9880d681SAndroid Build Coastguard Worker;
1995*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_packus_epi16:
1996*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1997*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    packuswb %xmm1, %xmm0
1998*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1999*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
2000*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
2001*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16> %arg0, <8 x i16> %arg1)
2002*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
2003*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2004*9880d681SAndroid Build Coastguard Worker}
2005*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) nounwind readnone
2006*9880d681SAndroid Build Coastguard Worker
2007*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_pause() nounwind {
2008*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_pause:
2009*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2010*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pause
2011*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2012*9880d681SAndroid Build Coastguard Worker;
2013*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_pause:
2014*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2015*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pause
2016*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2017*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.sse2.pause()
2018*9880d681SAndroid Build Coastguard Worker  ret void
2019*9880d681SAndroid Build Coastguard Worker}
2020*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.pause() nounwind readnone
2021*9880d681SAndroid Build Coastguard Worker
2022*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sad_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
2023*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sad_epu8:
2024*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2025*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psadbw %xmm1, %xmm0
2026*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2027*9880d681SAndroid Build Coastguard Worker;
2028*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sad_epu8:
2029*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2030*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psadbw %xmm1, %xmm0
2031*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2032*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
2033*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
2034*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %arg0, <16 x i8> %arg1)
2035*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2036*9880d681SAndroid Build Coastguard Worker}
2037*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) nounwind readnone
2038*9880d681SAndroid Build Coastguard Worker
2039*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set_epi8(i8 %a0, i8 %a1, i8 %a2, i8 %a3, i8 %a4, i8 %a5, i8 %a6, i8 %a7, i8 %a8, i8 %a9, i8 %a10, i8 %a11, i8 %a12, i8 %a13, i8 %a14, i8 %a15) nounwind {
2040*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_epi8:
2041*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2042*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2043*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2044*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2045*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm1
2046*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2047*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2048*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2049*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2050*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm2
2051*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2052*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2053*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2054*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2055*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2056*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm3
2057*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2058*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2059*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2060*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2061*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm1
2062*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2063*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2064*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
2065*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2066*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2067*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2068*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm2
2069*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2070*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2071*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2072*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2073*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm3
2074*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2075*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2076*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2077*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2078*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2079*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm2
2080*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2081*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2082*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm4
2083*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2084*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2085*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
2086*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2087*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2088*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2089*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2090*9880d681SAndroid Build Coastguard Worker;
2091*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_epi8:
2092*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2093*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dil, %eax
2094*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2095*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2096*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm1
2097*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2098*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %r8b, %eax
2099*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2100*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2101*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm2
2102*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2103*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2104*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dl, %eax
2105*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2106*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2107*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm3
2108*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2109*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2110*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2111*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2112*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm1
2113*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2114*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2115*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
2116*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %sil, %eax
2117*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2118*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2119*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm2
2120*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2121*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %r9b, %eax
2122*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2123*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2124*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm3
2125*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2126*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2127*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %cl, %eax
2128*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2129*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2130*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm2
2131*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2132*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2133*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm4
2134*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2135*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2136*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
2137*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2138*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2139*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2140*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2141*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <16 x i8> undef,  i8 %a15, i32 0
2142*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <16 x i8> %res0,  i8 %a14, i32 1
2143*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <16 x i8> %res1,  i8 %a13, i32 2
2144*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <16 x i8> %res2,  i8 %a12, i32 3
2145*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <16 x i8> %res3,  i8 %a11, i32 4
2146*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <16 x i8> %res4,  i8 %a10, i32 5
2147*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <16 x i8> %res5,  i8 %a9 , i32 6
2148*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <16 x i8> %res6,  i8 %a8 , i32 7
2149*9880d681SAndroid Build Coastguard Worker  %res8  = insertelement <16 x i8> %res7,  i8 %a7 , i32 8
2150*9880d681SAndroid Build Coastguard Worker  %res9  = insertelement <16 x i8> %res8,  i8 %a6 , i32 9
2151*9880d681SAndroid Build Coastguard Worker  %res10 = insertelement <16 x i8> %res9,  i8 %a5 , i32 10
2152*9880d681SAndroid Build Coastguard Worker  %res11 = insertelement <16 x i8> %res10, i8 %a4 , i32 11
2153*9880d681SAndroid Build Coastguard Worker  %res12 = insertelement <16 x i8> %res11, i8 %a3 , i32 12
2154*9880d681SAndroid Build Coastguard Worker  %res13 = insertelement <16 x i8> %res12, i8 %a2 , i32 13
2155*9880d681SAndroid Build Coastguard Worker  %res14 = insertelement <16 x i8> %res13, i8 %a1 , i32 14
2156*9880d681SAndroid Build Coastguard Worker  %res15 = insertelement <16 x i8> %res14, i8 %a0 , i32 15
2157*9880d681SAndroid Build Coastguard Worker  %res = bitcast <16 x i8> %res15 to <2 x i64>
2158*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2159*9880d681SAndroid Build Coastguard Worker}
2160*9880d681SAndroid Build Coastguard Worker
2161*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set_epi16(i16 %a0, i16 %a1, i16 %a2, i16 %a3, i16 %a4, i16 %a5, i16 %a6, i16 %a7) nounwind {
2162*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_epi16:
2163*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2164*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2165*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm1
2166*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2167*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm2
2168*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2169*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm3
2170*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2171*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm4
2172*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2173*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm5
2174*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2175*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm6
2176*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2177*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm7
2178*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2179*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2180*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
2181*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
2182*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]
2183*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3]
2184*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3]
2185*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]
2186*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3]
2187*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2188*9880d681SAndroid Build Coastguard Worker;
2189*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_epi16:
2190*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2191*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %r10w
2192*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2193*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edi, %xmm0
2194*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %r8d, %xmm1
2195*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
2196*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edx, %xmm0
2197*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm2
2198*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
2199*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
2200*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %esi, %xmm0
2201*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %r9d, %xmm1
2202*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
2203*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %ecx, %xmm3
2204*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %r10d, %xmm0
2205*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
2206*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
2207*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
2208*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2209*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <8 x i16> undef, i16 %a7, i32 0
2210*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <8 x i16> %res0, i16 %a6, i32 1
2211*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <8 x i16> %res1, i16 %a5, i32 2
2212*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <8 x i16> %res2, i16 %a4, i32 3
2213*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <8 x i16> %res3, i16 %a3, i32 4
2214*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <8 x i16> %res4, i16 %a2, i32 5
2215*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <8 x i16> %res5, i16 %a1, i32 6
2216*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <8 x i16> %res6, i16 %a0, i32 7
2217*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x i16> %res7 to <2 x i64>
2218*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2219*9880d681SAndroid Build Coastguard Worker}
2220*9880d681SAndroid Build Coastguard Worker
2221*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set_epi32(i32 %a0, i32 %a1, i32 %a2, i32 %a3) nounwind {
2222*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_epi32:
2223*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2224*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2225*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2226*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
2227*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
2228*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2229*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2230*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
2231*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2232*9880d681SAndroid Build Coastguard Worker;
2233*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_epi32:
2234*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2235*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edi, %xmm0
2236*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edx, %xmm1
2237*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
2238*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %esi, %xmm2
2239*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %ecx, %xmm0
2240*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2241*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
2242*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2243*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <4 x i32> undef, i32 %a3, i32 0
2244*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <4 x i32> %res0, i32 %a2, i32 1
2245*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <4 x i32> %res1, i32 %a1, i32 2
2246*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <4 x i32> %res2, i32 %a0, i32 3
2247*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x i32> %res3 to <2 x i64>
2248*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2249*9880d681SAndroid Build Coastguard Worker}
2250*9880d681SAndroid Build Coastguard Worker
2251*9880d681SAndroid Build Coastguard Worker; TODO test_mm_set_epi64
2252*9880d681SAndroid Build Coastguard Worker
2253*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set_epi64x(i64 %a0, i64 %a1) nounwind {
2254*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_epi64x:
2255*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2256*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2257*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2258*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
2259*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2260*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
2261*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
2262*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2263*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2264*9880d681SAndroid Build Coastguard Worker;
2265*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_epi64x:
2266*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2267*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %rdi, %xmm1
2268*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %rsi, %xmm0
2269*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2270*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2271*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <2 x i64> undef, i64 %a1, i32 0
2272*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <2 x i64> %res0, i64 %a0, i32 1
2273*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res1
2274*9880d681SAndroid Build Coastguard Worker}
2275*9880d681SAndroid Build Coastguard Worker
2276*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_set_pd(double %a0, double %a1) nounwind {
2277*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_pd:
2278*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2279*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
2280*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm1 = mem[0],zero
2281*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2282*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2283*9880d681SAndroid Build Coastguard Worker;
2284*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_pd:
2285*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2286*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2287*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movapd %xmm1, %xmm0
2288*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2289*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <2 x double> undef, double %a1, i32 0
2290*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <2 x double> %res0, double %a0, i32 1
2291*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res1
2292*9880d681SAndroid Build Coastguard Worker}
2293*9880d681SAndroid Build Coastguard Worker
2294*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_set_sd(double %a0) nounwind {
2295*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_sd:
2296*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2297*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
2298*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movq {{.*#+}} xmm0 = xmm0[0],zero
2299*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2300*9880d681SAndroid Build Coastguard Worker;
2301*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_sd:
2302*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2303*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movq {{.*#+}} xmm0 = xmm0[0],zero
2304*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2305*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <2 x double> undef, double %a0, i32 0
2306*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <2 x double> %res0, double 0.0, i32 1
2307*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res1
2308*9880d681SAndroid Build Coastguard Worker}
2309*9880d681SAndroid Build Coastguard Worker
2310*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set1_epi8(i8 %a0) nounwind {
2311*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_epi8:
2312*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2313*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2314*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2315*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2316*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2317*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2318*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2319*9880d681SAndroid Build Coastguard Worker;
2320*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_epi8:
2321*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2322*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dil, %eax
2323*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2324*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2325*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2326*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2327*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2328*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <16 x i8> undef,  i8 %a0, i32 0
2329*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <16 x i8> %res0,  i8 %a0, i32 1
2330*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <16 x i8> %res1,  i8 %a0, i32 2
2331*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <16 x i8> %res2,  i8 %a0, i32 3
2332*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <16 x i8> %res3,  i8 %a0, i32 4
2333*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <16 x i8> %res4,  i8 %a0, i32 5
2334*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <16 x i8> %res5,  i8 %a0, i32 6
2335*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <16 x i8> %res6,  i8 %a0, i32 7
2336*9880d681SAndroid Build Coastguard Worker  %res8  = insertelement <16 x i8> %res7,  i8 %a0, i32 8
2337*9880d681SAndroid Build Coastguard Worker  %res9  = insertelement <16 x i8> %res8,  i8 %a0, i32 9
2338*9880d681SAndroid Build Coastguard Worker  %res10 = insertelement <16 x i8> %res9,  i8 %a0, i32 10
2339*9880d681SAndroid Build Coastguard Worker  %res11 = insertelement <16 x i8> %res10, i8 %a0, i32 11
2340*9880d681SAndroid Build Coastguard Worker  %res12 = insertelement <16 x i8> %res11, i8 %a0, i32 12
2341*9880d681SAndroid Build Coastguard Worker  %res13 = insertelement <16 x i8> %res12, i8 %a0, i32 13
2342*9880d681SAndroid Build Coastguard Worker  %res14 = insertelement <16 x i8> %res13, i8 %a0, i32 14
2343*9880d681SAndroid Build Coastguard Worker  %res15 = insertelement <16 x i8> %res14, i8 %a0, i32 15
2344*9880d681SAndroid Build Coastguard Worker  %res = bitcast <16 x i8> %res15 to <2 x i64>
2345*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2346*9880d681SAndroid Build Coastguard Worker}
2347*9880d681SAndroid Build Coastguard Worker
2348*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set1_epi16(i16 %a0) nounwind {
2349*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_epi16:
2350*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2351*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2352*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2353*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2354*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2355*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2356*9880d681SAndroid Build Coastguard Worker;
2357*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_epi16:
2358*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2359*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edi, %xmm0
2360*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2361*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2362*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2363*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <8 x i16> undef, i16 %a0, i32 0
2364*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <8 x i16> %res0, i16 %a0, i32 1
2365*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <8 x i16> %res1, i16 %a0, i32 2
2366*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <8 x i16> %res2, i16 %a0, i32 3
2367*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <8 x i16> %res3, i16 %a0, i32 4
2368*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <8 x i16> %res4, i16 %a0, i32 5
2369*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <8 x i16> %res5, i16 %a0, i32 6
2370*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <8 x i16> %res6, i16 %a0, i32 7
2371*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x i16> %res7 to <2 x i64>
2372*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2373*9880d681SAndroid Build Coastguard Worker}
2374*9880d681SAndroid Build Coastguard Worker
2375*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set1_epi32(i32 %a0) nounwind {
2376*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_epi32:
2377*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2378*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2379*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
2380*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2381*9880d681SAndroid Build Coastguard Worker;
2382*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_epi32:
2383*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2384*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edi, %xmm0
2385*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
2386*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2387*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <4 x i32> undef, i32 %a0, i32 0
2388*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <4 x i32> %res0, i32 %a0, i32 1
2389*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <4 x i32> %res1, i32 %a0, i32 2
2390*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <4 x i32> %res2, i32 %a0, i32 3
2391*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x i32> %res3 to <2 x i64>
2392*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2393*9880d681SAndroid Build Coastguard Worker}
2394*9880d681SAndroid Build Coastguard Worker
2395*9880d681SAndroid Build Coastguard Worker; TODO test_mm_set1_epi64
2396*9880d681SAndroid Build Coastguard Worker
2397*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set1_epi64x(i64 %a0) nounwind {
2398*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_epi64x:
2399*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2400*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2401*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2402*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2403*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
2404*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
2405*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2406*9880d681SAndroid Build Coastguard Worker;
2407*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_epi64x:
2408*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2409*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %rdi, %xmm0
2410*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
2411*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2412*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <2 x i64> undef, i64 %a0, i32 0
2413*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <2 x i64> %res0, i64 %a0, i32 1
2414*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res1
2415*9880d681SAndroid Build Coastguard Worker}
2416*9880d681SAndroid Build Coastguard Worker
2417*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_set1_pd(double %a0) nounwind {
2418*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_pd:
2419*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2420*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
2421*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0,0]
2422*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2423*9880d681SAndroid Build Coastguard Worker;
2424*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_pd:
2425*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2426*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0,0]
2427*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2428*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <2 x double> undef, double %a0, i32 0
2429*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <2 x double> %res0, double %a0, i32 1
2430*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res1
2431*9880d681SAndroid Build Coastguard Worker}
2432*9880d681SAndroid Build Coastguard Worker
2433*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setr_epi8(i8 %a0, i8 %a1, i8 %a2, i8 %a3, i8 %a4, i8 %a5, i8 %a6, i8 %a7, i8 %a8, i8 %a9, i8 %a10, i8 %a11, i8 %a12, i8 %a13, i8 %a14, i8 %a15) nounwind {
2434*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_epi8:
2435*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2436*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2437*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2438*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2439*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm1
2440*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2441*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2442*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2443*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2444*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm2
2445*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2446*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2447*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2448*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2449*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2450*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm3
2451*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2452*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2453*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2454*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2455*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm1
2456*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2457*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2458*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
2459*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2460*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2461*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2462*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm2
2463*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2464*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2465*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2466*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2467*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm3
2468*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2469*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2470*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2471*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2472*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2473*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm2
2474*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2475*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2476*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm4
2477*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2478*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2479*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
2480*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2481*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2482*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2483*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2484*9880d681SAndroid Build Coastguard Worker;
2485*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_epi8:
2486*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2487*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2488*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2489*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2490*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm1
2491*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2492*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2493*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2494*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %cl, %eax
2495*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm2
2496*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2497*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2498*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2499*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2500*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %r9b, %eax
2501*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm3
2502*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2503*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2504*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2505*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %sil, %eax
2506*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm1
2507*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2508*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2509*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
2510*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2511*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2512*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2513*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm2
2514*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2515*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2516*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2517*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dl, %eax
2518*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm3
2519*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2520*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2521*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2522*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2523*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %r8b, %eax
2524*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm2
2525*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2526*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2527*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm4
2528*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dil, %eax
2529*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2530*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
2531*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2532*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2533*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2534*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2535*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <16 x i8> undef,  i8 %a0 , i32 0
2536*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <16 x i8> %res0,  i8 %a1 , i32 1
2537*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <16 x i8> %res1,  i8 %a2 , i32 2
2538*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <16 x i8> %res2,  i8 %a3 , i32 3
2539*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <16 x i8> %res3,  i8 %a4 , i32 4
2540*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <16 x i8> %res4,  i8 %a5 , i32 5
2541*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <16 x i8> %res5,  i8 %a6 , i32 6
2542*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <16 x i8> %res6,  i8 %a7 , i32 7
2543*9880d681SAndroid Build Coastguard Worker  %res8  = insertelement <16 x i8> %res7,  i8 %a8 , i32 8
2544*9880d681SAndroid Build Coastguard Worker  %res9  = insertelement <16 x i8> %res8,  i8 %a9 , i32 9
2545*9880d681SAndroid Build Coastguard Worker  %res10 = insertelement <16 x i8> %res9,  i8 %a10, i32 10
2546*9880d681SAndroid Build Coastguard Worker  %res11 = insertelement <16 x i8> %res10, i8 %a11, i32 11
2547*9880d681SAndroid Build Coastguard Worker  %res12 = insertelement <16 x i8> %res11, i8 %a12, i32 12
2548*9880d681SAndroid Build Coastguard Worker  %res13 = insertelement <16 x i8> %res12, i8 %a13, i32 13
2549*9880d681SAndroid Build Coastguard Worker  %res14 = insertelement <16 x i8> %res13, i8 %a14, i32 14
2550*9880d681SAndroid Build Coastguard Worker  %res15 = insertelement <16 x i8> %res14, i8 %a15, i32 15
2551*9880d681SAndroid Build Coastguard Worker  %res = bitcast <16 x i8> %res15 to <2 x i64>
2552*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2553*9880d681SAndroid Build Coastguard Worker}
2554*9880d681SAndroid Build Coastguard Worker
2555*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setr_epi16(i16 %a0, i16 %a1, i16 %a2, i16 %a3, i16 %a4, i16 %a5, i16 %a6, i16 %a7) nounwind {
2556*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_epi16:
2557*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2558*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2559*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm1
2560*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2561*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm2
2562*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2563*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm3
2564*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2565*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm4
2566*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2567*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm5
2568*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2569*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm6
2570*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2571*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm7
2572*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2573*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd %eax, %xmm0
2574*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
2575*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
2576*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]
2577*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3]
2578*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3]
2579*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]
2580*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3]
2581*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2582*9880d681SAndroid Build Coastguard Worker;
2583*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_epi16:
2584*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2585*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2586*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %r10w
2587*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %eax, %xmm0
2588*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %ecx, %xmm1
2589*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
2590*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %r9d, %xmm0
2591*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %esi, %xmm2
2592*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
2593*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
2594*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %r10d, %xmm0
2595*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edx, %xmm1
2596*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
2597*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %r8d, %xmm3
2598*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edi, %xmm0
2599*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
2600*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
2601*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
2602*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2603*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <8 x i16> undef, i16 %a0, i32 0
2604*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <8 x i16> %res0, i16 %a1, i32 1
2605*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <8 x i16> %res1, i16 %a2, i32 2
2606*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <8 x i16> %res2, i16 %a3, i32 3
2607*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <8 x i16> %res3, i16 %a4, i32 4
2608*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <8 x i16> %res4, i16 %a5, i32 5
2609*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <8 x i16> %res5, i16 %a6, i32 6
2610*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <8 x i16> %res6, i16 %a7, i32 7
2611*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x i16> %res7 to <2 x i64>
2612*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2613*9880d681SAndroid Build Coastguard Worker}
2614*9880d681SAndroid Build Coastguard Worker
2615*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setr_epi32(i32 %a0, i32 %a1, i32 %a2, i32 %a3) nounwind {
2616*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_epi32:
2617*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2618*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2619*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2620*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
2621*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
2622*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2623*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2624*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
2625*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2626*9880d681SAndroid Build Coastguard Worker;
2627*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_epi32:
2628*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2629*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %ecx, %xmm0
2630*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %esi, %xmm1
2631*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
2632*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edx, %xmm2
2633*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %edi, %xmm0
2634*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2635*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
2636*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2637*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <4 x i32> undef, i32 %a0, i32 0
2638*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <4 x i32> %res0, i32 %a1, i32 1
2639*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <4 x i32> %res1, i32 %a2, i32 2
2640*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <4 x i32> %res2, i32 %a3, i32 3
2641*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x i32> %res3 to <2 x i64>
2642*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2643*9880d681SAndroid Build Coastguard Worker}
2644*9880d681SAndroid Build Coastguard Worker
2645*9880d681SAndroid Build Coastguard Worker; TODO test_mm_setr_epi64
2646*9880d681SAndroid Build Coastguard Worker
2647*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setr_epi64x(i64 %a0, i64 %a1) nounwind {
2648*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_epi64x:
2649*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2650*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2651*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2652*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
2653*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2654*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
2655*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
2656*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2657*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2658*9880d681SAndroid Build Coastguard Worker;
2659*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_epi64x:
2660*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2661*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %rsi, %xmm1
2662*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %rdi, %xmm0
2663*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2664*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2665*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <2 x i64> undef, i64 %a0, i32 0
2666*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <2 x i64> %res0, i64 %a1, i32 1
2667*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res1
2668*9880d681SAndroid Build Coastguard Worker}
2669*9880d681SAndroid Build Coastguard Worker
2670*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_setr_pd(double %a0, double %a1) nounwind {
2671*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_pd:
2672*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2673*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm1 = mem[0],zero
2674*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
2675*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2676*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2677*9880d681SAndroid Build Coastguard Worker;
2678*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_pd:
2679*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2680*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2681*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2682*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <2 x double> undef, double %a0, i32 0
2683*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <2 x double> %res0, double %a1, i32 1
2684*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res1
2685*9880d681SAndroid Build Coastguard Worker}
2686*9880d681SAndroid Build Coastguard Worker
2687*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_setzero_pd() {
2688*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setzero_pd:
2689*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2690*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorps %xmm0, %xmm0
2691*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2692*9880d681SAndroid Build Coastguard Worker;
2693*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setzero_pd:
2694*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2695*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorps %xmm0, %xmm0
2696*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2697*9880d681SAndroid Build Coastguard Worker  ret <2 x double> zeroinitializer
2698*9880d681SAndroid Build Coastguard Worker}
2699*9880d681SAndroid Build Coastguard Worker
2700*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setzero_si128() {
2701*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setzero_si128:
2702*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2703*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorps %xmm0, %xmm0
2704*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2705*9880d681SAndroid Build Coastguard Worker;
2706*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setzero_si128:
2707*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2708*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorps %xmm0, %xmm0
2709*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2710*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> zeroinitializer
2711*9880d681SAndroid Build Coastguard Worker}
2712*9880d681SAndroid Build Coastguard Worker
2713*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shuffle_epi32(<2 x i64> %a0) {
2714*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shuffle_epi32:
2715*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2716*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
2717*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2718*9880d681SAndroid Build Coastguard Worker;
2719*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shuffle_epi32:
2720*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2721*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
2722*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2723*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
2724*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x i32> %arg0, <4 x i32> undef, <4 x i32> zeroinitializer
2725*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
2726*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2727*9880d681SAndroid Build Coastguard Worker}
2728*9880d681SAndroid Build Coastguard Worker
2729*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_shuffle_pd(<2 x double> %a0, <2 x double> %a1) {
2730*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shuffle_pd:
2731*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2732*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    shufpd {{.*#+}} xmm0 = xmm0[1],xmm1[0]
2733*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2734*9880d681SAndroid Build Coastguard Worker;
2735*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shuffle_pd:
2736*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2737*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    shufpd {{.*#+}} xmm0 = xmm0[1],xmm1[0]
2738*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2739*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 2>
2740*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
2741*9880d681SAndroid Build Coastguard Worker}
2742*9880d681SAndroid Build Coastguard Worker
2743*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shufflehi_epi16(<2 x i64> %a0) {
2744*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shufflehi_epi16:
2745*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2746*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
2747*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2748*9880d681SAndroid Build Coastguard Worker;
2749*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shufflehi_epi16:
2750*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2751*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
2752*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2753*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
2754*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x i16> %arg0, <8 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 4, i32 4, i32 4>
2755*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
2756*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2757*9880d681SAndroid Build Coastguard Worker}
2758*9880d681SAndroid Build Coastguard Worker
2759*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shufflelo_epi16(<2 x i64> %a0) {
2760*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shufflelo_epi16:
2761*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2762*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2763*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2764*9880d681SAndroid Build Coastguard Worker;
2765*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shufflelo_epi16:
2766*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2767*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2768*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2769*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
2770*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x i16> %arg0, <8 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>
2771*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
2772*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2773*9880d681SAndroid Build Coastguard Worker}
2774*9880d681SAndroid Build Coastguard Worker
2775*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sll_epi16(<2 x i64> %a0, <2 x i64> %a1) {
2776*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sll_epi16:
2777*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2778*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psllw %xmm1, %xmm0
2779*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2780*9880d681SAndroid Build Coastguard Worker;
2781*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sll_epi16:
2782*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2783*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psllw %xmm1, %xmm0
2784*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2785*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
2786*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
2787*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16> %arg0, <8 x i16> %arg1)
2788*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
2789*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2790*9880d681SAndroid Build Coastguard Worker}
2791*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16>, <8 x i16>) nounwind readnone
2792*9880d681SAndroid Build Coastguard Worker
2793*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sll_epi32(<2 x i64> %a0, <2 x i64> %a1) {
2794*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sll_epi32:
2795*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2796*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pslld %xmm1, %xmm0
2797*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2798*9880d681SAndroid Build Coastguard Worker;
2799*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sll_epi32:
2800*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2801*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pslld %xmm1, %xmm0
2802*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2803*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
2804*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
2805*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32> %arg0, <4 x i32> %arg1)
2806*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
2807*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2808*9880d681SAndroid Build Coastguard Worker}
2809*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32>, <4 x i32>) nounwind readnone
2810*9880d681SAndroid Build Coastguard Worker
2811*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sll_epi64(<2 x i64> %a0, <2 x i64> %a1) {
2812*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sll_epi64:
2813*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2814*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psllq %xmm1, %xmm0
2815*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2816*9880d681SAndroid Build Coastguard Worker;
2817*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sll_epi64:
2818*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2819*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psllq %xmm1, %xmm0
2820*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2821*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %a0, <2 x i64> %a1)
2822*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2823*9880d681SAndroid Build Coastguard Worker}
2824*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64>, <2 x i64>) nounwind readnone
2825*9880d681SAndroid Build Coastguard Worker
2826*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_slli_epi16(<2 x i64> %a0) {
2827*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_slli_epi16:
2828*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2829*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psllw $1, %xmm0
2830*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2831*9880d681SAndroid Build Coastguard Worker;
2832*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_slli_epi16:
2833*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2834*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psllw $1, %xmm0
2835*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2836*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
2837*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16> %arg0, i32 1)
2838*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
2839*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2840*9880d681SAndroid Build Coastguard Worker}
2841*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16>, i32) nounwind readnone
2842*9880d681SAndroid Build Coastguard Worker
2843*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_slli_epi32(<2 x i64> %a0) {
2844*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_slli_epi32:
2845*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2846*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pslld $1, %xmm0
2847*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2848*9880d681SAndroid Build Coastguard Worker;
2849*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_slli_epi32:
2850*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2851*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pslld $1, %xmm0
2852*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2853*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
2854*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32> %arg0, i32 1)
2855*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
2856*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2857*9880d681SAndroid Build Coastguard Worker}
2858*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32>, i32) nounwind readnone
2859*9880d681SAndroid Build Coastguard Worker
2860*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_slli_epi64(<2 x i64> %a0) {
2861*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_slli_epi64:
2862*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2863*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psllq $1, %xmm0
2864*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2865*9880d681SAndroid Build Coastguard Worker;
2866*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_slli_epi64:
2867*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2868*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psllq $1, %xmm0
2869*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2870*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %a0, i32 1)
2871*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2872*9880d681SAndroid Build Coastguard Worker}
2873*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64>, i32) nounwind readnone
2874*9880d681SAndroid Build Coastguard Worker
2875*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_slli_si128(<2 x i64> %a0) nounwind {
2876*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_slli_si128:
2877*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2878*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]
2879*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2880*9880d681SAndroid Build Coastguard Worker;
2881*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_slli_si128:
2882*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2883*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]
2884*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2885*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
2886*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <16 x i8> zeroinitializer, <16 x i8> %arg0, <16 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26>
2887*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
2888*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2889*9880d681SAndroid Build Coastguard Worker}
2890*9880d681SAndroid Build Coastguard Worker
2891*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_sqrt_pd(<2 x double> %a0) nounwind {
2892*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sqrt_pd:
2893*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2894*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sqrtpd %xmm0, %xmm0
2895*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2896*9880d681SAndroid Build Coastguard Worker;
2897*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sqrt_pd:
2898*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2899*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sqrtpd %xmm0, %xmm0
2900*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2901*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double> %a0)
2902*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
2903*9880d681SAndroid Build Coastguard Worker}
2904*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double>) nounwind readnone
2905*9880d681SAndroid Build Coastguard Worker
2906*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_sqrt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
2907*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sqrt_sd:
2908*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2909*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sqrtsd %xmm0, %xmm1
2910*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movaps %xmm1, %xmm0
2911*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2912*9880d681SAndroid Build Coastguard Worker;
2913*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sqrt_sd:
2914*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2915*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sqrtsd %xmm0, %xmm1
2916*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movaps %xmm1, %xmm0
2917*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2918*9880d681SAndroid Build Coastguard Worker  %call = call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %a0)
2919*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %call, i32 0
2920*9880d681SAndroid Build Coastguard Worker  %ins0 = insertelement <2 x double> undef, double %ext0, i32 0
2921*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a1, i32 1
2922*9880d681SAndroid Build Coastguard Worker  %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1
2923*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %ins1
2924*9880d681SAndroid Build Coastguard Worker}
2925*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double>) nounwind readnone
2926*9880d681SAndroid Build Coastguard Worker
2927*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sra_epi16(<2 x i64> %a0, <2 x i64> %a1) {
2928*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sra_epi16:
2929*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2930*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psraw %xmm1, %xmm0
2931*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2932*9880d681SAndroid Build Coastguard Worker;
2933*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sra_epi16:
2934*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2935*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psraw %xmm1, %xmm0
2936*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2937*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
2938*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
2939*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16> %arg0, <8 x i16> %arg1)
2940*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
2941*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2942*9880d681SAndroid Build Coastguard Worker}
2943*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16>, <8 x i16>) nounwind readnone
2944*9880d681SAndroid Build Coastguard Worker
2945*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sra_epi32(<2 x i64> %a0, <2 x i64> %a1) {
2946*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sra_epi32:
2947*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2948*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrad %xmm1, %xmm0
2949*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2950*9880d681SAndroid Build Coastguard Worker;
2951*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sra_epi32:
2952*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2953*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrad %xmm1, %xmm0
2954*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2955*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
2956*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
2957*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32> %arg0, <4 x i32> %arg1)
2958*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
2959*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2960*9880d681SAndroid Build Coastguard Worker}
2961*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32>, <4 x i32>) nounwind readnone
2962*9880d681SAndroid Build Coastguard Worker
2963*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srai_epi16(<2 x i64> %a0) {
2964*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srai_epi16:
2965*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2966*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psraw $1, %xmm0
2967*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2968*9880d681SAndroid Build Coastguard Worker;
2969*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srai_epi16:
2970*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2971*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psraw $1, %xmm0
2972*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2973*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
2974*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16> %arg0, i32 1)
2975*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
2976*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2977*9880d681SAndroid Build Coastguard Worker}
2978*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16>, i32) nounwind readnone
2979*9880d681SAndroid Build Coastguard Worker
2980*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srai_epi32(<2 x i64> %a0) {
2981*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srai_epi32:
2982*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2983*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrad $1, %xmm0
2984*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2985*9880d681SAndroid Build Coastguard Worker;
2986*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srai_epi32:
2987*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2988*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrad $1, %xmm0
2989*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2990*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
2991*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32> %arg0, i32 1)
2992*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
2993*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
2994*9880d681SAndroid Build Coastguard Worker}
2995*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32>, i32) nounwind readnone
2996*9880d681SAndroid Build Coastguard Worker
2997*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srl_epi16(<2 x i64> %a0, <2 x i64> %a1) {
2998*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srl_epi16:
2999*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3000*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrlw %xmm1, %xmm0
3001*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3002*9880d681SAndroid Build Coastguard Worker;
3003*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srl_epi16:
3004*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3005*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrlw %xmm1, %xmm0
3006*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3007*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
3008*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
3009*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16> %arg0, <8 x i16> %arg1)
3010*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
3011*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3012*9880d681SAndroid Build Coastguard Worker}
3013*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16>, <8 x i16>) nounwind readnone
3014*9880d681SAndroid Build Coastguard Worker
3015*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srl_epi32(<2 x i64> %a0, <2 x i64> %a1) {
3016*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srl_epi32:
3017*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3018*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrld %xmm1, %xmm0
3019*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3020*9880d681SAndroid Build Coastguard Worker;
3021*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srl_epi32:
3022*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3023*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrld %xmm1, %xmm0
3024*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3025*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
3026*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
3027*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32> %arg0, <4 x i32> %arg1)
3028*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
3029*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3030*9880d681SAndroid Build Coastguard Worker}
3031*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32>, <4 x i32>) nounwind readnone
3032*9880d681SAndroid Build Coastguard Worker
3033*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srl_epi64(<2 x i64> %a0, <2 x i64> %a1) {
3034*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srl_epi64:
3035*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3036*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrlq %xmm1, %xmm0
3037*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3038*9880d681SAndroid Build Coastguard Worker;
3039*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srl_epi64:
3040*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3041*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrlq %xmm1, %xmm0
3042*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3043*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %a0, <2 x i64> %a1)
3044*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
3045*9880d681SAndroid Build Coastguard Worker}
3046*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64>, <2 x i64>) nounwind readnone
3047*9880d681SAndroid Build Coastguard Worker
3048*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srli_epi16(<2 x i64> %a0) {
3049*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srli_epi16:
3050*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3051*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrlw $1, %xmm0
3052*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3053*9880d681SAndroid Build Coastguard Worker;
3054*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srli_epi16:
3055*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3056*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrlw $1, %xmm0
3057*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3058*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
3059*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16> %arg0, i32 1)
3060*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
3061*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3062*9880d681SAndroid Build Coastguard Worker}
3063*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16>, i32) nounwind readnone
3064*9880d681SAndroid Build Coastguard Worker
3065*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srli_epi32(<2 x i64> %a0) {
3066*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srli_epi32:
3067*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3068*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrld $1, %xmm0
3069*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3070*9880d681SAndroid Build Coastguard Worker;
3071*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srli_epi32:
3072*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3073*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrld $1, %xmm0
3074*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3075*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
3076*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32> %arg0, i32 1)
3077*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
3078*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3079*9880d681SAndroid Build Coastguard Worker}
3080*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32>, i32) nounwind readnone
3081*9880d681SAndroid Build Coastguard Worker
3082*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srli_epi64(<2 x i64> %a0) {
3083*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srli_epi64:
3084*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3085*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrlq $1, %xmm0
3086*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3087*9880d681SAndroid Build Coastguard Worker;
3088*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srli_epi64:
3089*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3090*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrlq $1, %xmm0
3091*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3092*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %a0, i32 1)
3093*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
3094*9880d681SAndroid Build Coastguard Worker}
3095*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64>, i32) nounwind readnone
3096*9880d681SAndroid Build Coastguard Worker
3097*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srli_si128(<2 x i64> %a0) nounwind {
3098*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srli_si128:
3099*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3100*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero
3101*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3102*9880d681SAndroid Build Coastguard Worker;
3103*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srli_si128:
3104*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3105*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero
3106*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3107*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
3108*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <16 x i8> %arg0, <16 x i8> zeroinitializer, <16 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20>
3109*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
3110*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3111*9880d681SAndroid Build Coastguard Worker}
3112*9880d681SAndroid Build Coastguard Worker
3113*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store_pd(double *%a0, <2 x double> %a1) {
3114*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store_pd:
3115*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3116*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3117*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movaps %xmm0, (%eax)
3118*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3119*9880d681SAndroid Build Coastguard Worker;
3120*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store_pd:
3121*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3122*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movaps %xmm0, (%rdi)
3123*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3124*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <2 x double>*
3125*9880d681SAndroid Build Coastguard Worker  store <2 x double> %a1, <2 x double>* %arg0, align 16
3126*9880d681SAndroid Build Coastguard Worker  ret void
3127*9880d681SAndroid Build Coastguard Worker}
3128*9880d681SAndroid Build Coastguard Worker
3129*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store_pd1(double *%a0, <2 x double> %a1) {
3130*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store_pd1:
3131*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3132*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3133*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0,0]
3134*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movaps %xmm0, (%eax)
3135*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3136*9880d681SAndroid Build Coastguard Worker;
3137*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store_pd1:
3138*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3139*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0,0]
3140*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movaps %xmm0, (%rdi)
3141*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3142*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double * %a0 to <2 x double>*
3143*9880d681SAndroid Build Coastguard Worker  %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> zeroinitializer
3144*9880d681SAndroid Build Coastguard Worker  store <2 x double> %shuf, <2 x double>* %arg0, align 16
3145*9880d681SAndroid Build Coastguard Worker  ret void
3146*9880d681SAndroid Build Coastguard Worker}
3147*9880d681SAndroid Build Coastguard Worker
3148*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store_sd(double *%a0, <2 x double> %a1) {
3149*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store_sd:
3150*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3151*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3152*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd %xmm0, (%eax)
3153*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3154*9880d681SAndroid Build Coastguard Worker;
3155*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store_sd:
3156*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3157*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd %xmm0, (%rdi)
3158*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3159*9880d681SAndroid Build Coastguard Worker  %ext = extractelement <2 x double> %a1, i32 0
3160*9880d681SAndroid Build Coastguard Worker  store double %ext, double* %a0, align 1
3161*9880d681SAndroid Build Coastguard Worker  ret void
3162*9880d681SAndroid Build Coastguard Worker}
3163*9880d681SAndroid Build Coastguard Worker
3164*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store_si128(<2 x i64> *%a0, <2 x i64> %a1) {
3165*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store_si128:
3166*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3167*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3168*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movaps %xmm0, (%eax)
3169*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3170*9880d681SAndroid Build Coastguard Worker;
3171*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store_si128:
3172*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3173*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movaps %xmm0, (%rdi)
3174*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3175*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %a1, <2 x i64>* %a0, align 16
3176*9880d681SAndroid Build Coastguard Worker  ret void
3177*9880d681SAndroid Build Coastguard Worker}
3178*9880d681SAndroid Build Coastguard Worker
3179*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store1_pd(double *%a0, <2 x double> %a1) {
3180*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store1_pd:
3181*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3182*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3183*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0,0]
3184*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movaps %xmm0, (%eax)
3185*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3186*9880d681SAndroid Build Coastguard Worker;
3187*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store1_pd:
3188*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3189*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0,0]
3190*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movaps %xmm0, (%rdi)
3191*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3192*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double * %a0 to <2 x double>*
3193*9880d681SAndroid Build Coastguard Worker  %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> zeroinitializer
3194*9880d681SAndroid Build Coastguard Worker  store <2 x double> %shuf, <2 x double>* %arg0, align 16
3195*9880d681SAndroid Build Coastguard Worker  ret void
3196*9880d681SAndroid Build Coastguard Worker}
3197*9880d681SAndroid Build Coastguard Worker
3198*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storeh_sd(double *%a0, <2 x double> %a1) {
3199*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storeh_sd:
3200*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3201*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3202*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    shufpd {{.*#+}} xmm0 = xmm0[1,0]
3203*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd %xmm0, (%eax)
3204*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3205*9880d681SAndroid Build Coastguard Worker;
3206*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storeh_sd:
3207*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3208*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    shufpd {{.*#+}} xmm0 = xmm0[1,0]
3209*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd %xmm0, (%rdi)
3210*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3211*9880d681SAndroid Build Coastguard Worker  %ext = extractelement <2 x double> %a1, i32 1
3212*9880d681SAndroid Build Coastguard Worker  store double %ext, double* %a0, align 8
3213*9880d681SAndroid Build Coastguard Worker  ret void
3214*9880d681SAndroid Build Coastguard Worker}
3215*9880d681SAndroid Build Coastguard Worker
3216*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storel_epi64(<2 x i64> *%a0, <2 x i64> %a1) {
3217*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storel_epi64:
3218*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3219*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3220*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movlps %xmm0, (%eax)
3221*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3222*9880d681SAndroid Build Coastguard Worker;
3223*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storel_epi64:
3224*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3225*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movd %xmm0, %rax
3226*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movq %rax, (%rdi)
3227*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3228*9880d681SAndroid Build Coastguard Worker  %ext = extractelement <2 x i64> %a1, i32 0
3229*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <2 x i64> *%a0 to i64*
3230*9880d681SAndroid Build Coastguard Worker  store i64 %ext, i64* %bc, align 8
3231*9880d681SAndroid Build Coastguard Worker  ret void
3232*9880d681SAndroid Build Coastguard Worker}
3233*9880d681SAndroid Build Coastguard Worker
3234*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storel_sd(double *%a0, <2 x double> %a1) {
3235*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storel_sd:
3236*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3237*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3238*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movsd %xmm0, (%eax)
3239*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3240*9880d681SAndroid Build Coastguard Worker;
3241*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storel_sd:
3242*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3243*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movsd %xmm0, (%rdi)
3244*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3245*9880d681SAndroid Build Coastguard Worker  %ext = extractelement <2 x double> %a1, i32 0
3246*9880d681SAndroid Build Coastguard Worker  store double %ext, double* %a0, align 8
3247*9880d681SAndroid Build Coastguard Worker  ret void
3248*9880d681SAndroid Build Coastguard Worker}
3249*9880d681SAndroid Build Coastguard Worker
3250*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storer_pd(double *%a0, <2 x double> %a1) {
3251*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storer_pd:
3252*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3253*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3254*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    shufpd {{.*#+}} xmm0 = xmm0[1,0]
3255*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movapd %xmm0, (%eax)
3256*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3257*9880d681SAndroid Build Coastguard Worker;
3258*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storer_pd:
3259*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3260*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    shufpd {{.*#+}} xmm0 = xmm0[1,0]
3261*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movapd %xmm0, (%rdi)
3262*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3263*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <2 x double>*
3264*9880d681SAndroid Build Coastguard Worker  %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> <i32 1, i32 0>
3265*9880d681SAndroid Build Coastguard Worker  store <2 x double> %shuf, <2 x double>* %arg0, align 16
3266*9880d681SAndroid Build Coastguard Worker  ret void
3267*9880d681SAndroid Build Coastguard Worker}
3268*9880d681SAndroid Build Coastguard Worker
3269*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storeu_pd(double *%a0, <2 x double> %a1) {
3270*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storeu_pd:
3271*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3272*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3273*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movups %xmm0, (%eax)
3274*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3275*9880d681SAndroid Build Coastguard Worker;
3276*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storeu_pd:
3277*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3278*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movups %xmm0, (%rdi)
3279*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3280*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <2 x double>*
3281*9880d681SAndroid Build Coastguard Worker  store <2 x double> %a1, <2 x double>* %arg0, align 1
3282*9880d681SAndroid Build Coastguard Worker  ret void
3283*9880d681SAndroid Build Coastguard Worker}
3284*9880d681SAndroid Build Coastguard Worker
3285*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storeu_si128(<2 x i64> *%a0, <2 x i64> %a1) {
3286*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storeu_si128:
3287*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3288*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3289*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movups %xmm0, (%eax)
3290*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3291*9880d681SAndroid Build Coastguard Worker;
3292*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storeu_si128:
3293*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3294*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movups %xmm0, (%rdi)
3295*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3296*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %a1, <2 x i64>* %a0, align 1
3297*9880d681SAndroid Build Coastguard Worker  ret void
3298*9880d681SAndroid Build Coastguard Worker}
3299*9880d681SAndroid Build Coastguard Worker
3300*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_stream_pd(double *%a0, <2 x double> %a1) {
3301*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_stream_pd:
3302*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3303*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3304*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movntps %xmm0, (%eax)
3305*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3306*9880d681SAndroid Build Coastguard Worker;
3307*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_stream_pd:
3308*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3309*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movntps %xmm0, (%rdi)
3310*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3311*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <2 x double>*
3312*9880d681SAndroid Build Coastguard Worker  store <2 x double> %a1, <2 x double>* %arg0, align 16, !nontemporal !0
3313*9880d681SAndroid Build Coastguard Worker  ret void
3314*9880d681SAndroid Build Coastguard Worker}
3315*9880d681SAndroid Build Coastguard Worker
3316*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_stream_si32(i32 *%a0, i32 %a1) {
3317*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_stream_si32:
3318*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3319*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3320*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3321*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movntil %eax, (%ecx)
3322*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3323*9880d681SAndroid Build Coastguard Worker;
3324*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_stream_si32:
3325*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3326*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movntil %esi, (%rdi)
3327*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3328*9880d681SAndroid Build Coastguard Worker  store i32 %a1, i32* %a0, align 1, !nontemporal !0
3329*9880d681SAndroid Build Coastguard Worker  ret void
3330*9880d681SAndroid Build Coastguard Worker}
3331*9880d681SAndroid Build Coastguard Worker
3332*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_stream_si128(<2 x i64> *%a0, <2 x i64> %a1) {
3333*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_stream_si128:
3334*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3335*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3336*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movntps %xmm0, (%eax)
3337*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3338*9880d681SAndroid Build Coastguard Worker;
3339*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_stream_si128:
3340*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3341*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movntps %xmm0, (%rdi)
3342*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3343*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %a1, <2 x i64>* %a0, align 16, !nontemporal !0
3344*9880d681SAndroid Build Coastguard Worker  ret void
3345*9880d681SAndroid Build Coastguard Worker}
3346*9880d681SAndroid Build Coastguard Worker
3347*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sub_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
3348*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_epi8:
3349*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3350*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psubb %xmm1, %xmm0
3351*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3352*9880d681SAndroid Build Coastguard Worker;
3353*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_epi8:
3354*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3355*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psubb %xmm1, %xmm0
3356*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3357*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
3358*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
3359*9880d681SAndroid Build Coastguard Worker  %res = sub <16 x i8> %arg0, %arg1
3360*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
3361*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3362*9880d681SAndroid Build Coastguard Worker}
3363*9880d681SAndroid Build Coastguard Worker
3364*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sub_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
3365*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_epi16:
3366*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3367*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psubw %xmm1, %xmm0
3368*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3369*9880d681SAndroid Build Coastguard Worker;
3370*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_epi16:
3371*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3372*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psubw %xmm1, %xmm0
3373*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3374*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
3375*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
3376*9880d681SAndroid Build Coastguard Worker  %res = sub <8 x i16> %arg0, %arg1
3377*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
3378*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3379*9880d681SAndroid Build Coastguard Worker}
3380*9880d681SAndroid Build Coastguard Worker
3381*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sub_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {
3382*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_epi32:
3383*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3384*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psubd %xmm1, %xmm0
3385*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3386*9880d681SAndroid Build Coastguard Worker;
3387*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_epi32:
3388*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3389*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psubd %xmm1, %xmm0
3390*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3391*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
3392*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
3393*9880d681SAndroid Build Coastguard Worker  %res = sub <4 x i32> %arg0, %arg1
3394*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
3395*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3396*9880d681SAndroid Build Coastguard Worker}
3397*9880d681SAndroid Build Coastguard Worker
3398*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sub_epi64(<2 x i64> %a0, <2 x i64> %a1) nounwind {
3399*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_epi64:
3400*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3401*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psubq %xmm1, %xmm0
3402*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3403*9880d681SAndroid Build Coastguard Worker;
3404*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_epi64:
3405*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3406*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psubq %xmm1, %xmm0
3407*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3408*9880d681SAndroid Build Coastguard Worker  %res = sub <2 x i64> %a0, %a1
3409*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
3410*9880d681SAndroid Build Coastguard Worker}
3411*9880d681SAndroid Build Coastguard Worker
3412*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_sub_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
3413*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_pd:
3414*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3415*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    subpd %xmm1, %xmm0
3416*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3417*9880d681SAndroid Build Coastguard Worker;
3418*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_pd:
3419*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3420*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    subpd %xmm1, %xmm0
3421*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3422*9880d681SAndroid Build Coastguard Worker  %res = fsub <2 x double> %a0, %a1
3423*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3424*9880d681SAndroid Build Coastguard Worker}
3425*9880d681SAndroid Build Coastguard Worker
3426*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_sub_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
3427*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_sd:
3428*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3429*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    subsd %xmm1, %xmm0
3430*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3431*9880d681SAndroid Build Coastguard Worker;
3432*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_sd:
3433*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3434*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    subsd %xmm1, %xmm0
3435*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3436*9880d681SAndroid Build Coastguard Worker  %ext0 = extractelement <2 x double> %a0, i32 0
3437*9880d681SAndroid Build Coastguard Worker  %ext1 = extractelement <2 x double> %a1, i32 0
3438*9880d681SAndroid Build Coastguard Worker  %fsub = fsub double %ext0, %ext1
3439*9880d681SAndroid Build Coastguard Worker  %res = insertelement <2 x double> %a0, double %fsub, i32 0
3440*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3441*9880d681SAndroid Build Coastguard Worker}
3442*9880d681SAndroid Build Coastguard Worker
3443*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_subs_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
3444*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_subs_epi8:
3445*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3446*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psubsb %xmm1, %xmm0
3447*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3448*9880d681SAndroid Build Coastguard Worker;
3449*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_subs_epi8:
3450*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3451*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psubsb %xmm1, %xmm0
3452*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3453*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
3454*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
3455*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8> %arg0, <16 x i8> %arg1)
3456*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
3457*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3458*9880d681SAndroid Build Coastguard Worker}
3459*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8>, <16 x i8>) nounwind readnone
3460*9880d681SAndroid Build Coastguard Worker
3461*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_subs_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
3462*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_subs_epi16:
3463*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3464*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psubsw %xmm1, %xmm0
3465*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3466*9880d681SAndroid Build Coastguard Worker;
3467*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_subs_epi16:
3468*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3469*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psubsw %xmm1, %xmm0
3470*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3471*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
3472*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
3473*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %arg0, <8 x i16> %arg1)
3474*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
3475*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3476*9880d681SAndroid Build Coastguard Worker}
3477*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone
3478*9880d681SAndroid Build Coastguard Worker
3479*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_subs_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {
3480*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_subs_epu8:
3481*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3482*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psubusb %xmm1, %xmm0
3483*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3484*9880d681SAndroid Build Coastguard Worker;
3485*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_subs_epu8:
3486*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3487*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psubusb %xmm1, %xmm0
3488*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3489*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
3490*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
3491*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8> %arg0, <16 x i8> %arg1)
3492*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
3493*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3494*9880d681SAndroid Build Coastguard Worker}
3495*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8>, <16 x i8>) nounwind readnone
3496*9880d681SAndroid Build Coastguard Worker
3497*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_subs_epu16(<2 x i64> %a0, <2 x i64> %a1) nounwind {
3498*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_subs_epu16:
3499*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3500*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    psubusw %xmm1, %xmm0
3501*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3502*9880d681SAndroid Build Coastguard Worker;
3503*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_subs_epu16:
3504*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3505*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    psubusw %xmm1, %xmm0
3506*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3507*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
3508*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
3509*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16> %arg0, <8 x i16> %arg1)
3510*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
3511*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3512*9880d681SAndroid Build Coastguard Worker}
3513*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16>, <8 x i16>) nounwind readnone
3514*9880d681SAndroid Build Coastguard Worker
3515*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomieq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
3516*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomieq_sd:
3517*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3518*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    ucomisd %xmm1, %xmm0
3519*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setnp %al
3520*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sete %cl
3521*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andb %al, %cl
3522*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl %cl, %eax
3523*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3524*9880d681SAndroid Build Coastguard Worker;
3525*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomieq_sd:
3526*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3527*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    ucomisd %xmm1, %xmm0
3528*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setnp %al
3529*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sete %cl
3530*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andb %al, %cl
3531*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %cl, %eax
3532*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3533*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %a0, <2 x double> %a1)
3534*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3535*9880d681SAndroid Build Coastguard Worker}
3536*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) nounwind readnone
3537*9880d681SAndroid Build Coastguard Worker
3538*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomige_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
3539*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomige_sd:
3540*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3541*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3542*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    ucomisd %xmm1, %xmm0
3543*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setae %al
3544*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3545*9880d681SAndroid Build Coastguard Worker;
3546*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomige_sd:
3547*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3548*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3549*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    ucomisd %xmm1, %xmm0
3550*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setae %al
3551*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3552*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %a0, <2 x double> %a1)
3553*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3554*9880d681SAndroid Build Coastguard Worker}
3555*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>) nounwind readnone
3556*9880d681SAndroid Build Coastguard Worker
3557*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomigt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
3558*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomigt_sd:
3559*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3560*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3561*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    ucomisd %xmm1, %xmm0
3562*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    seta %al
3563*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3564*9880d681SAndroid Build Coastguard Worker;
3565*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomigt_sd:
3566*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3567*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3568*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    ucomisd %xmm1, %xmm0
3569*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    seta %al
3570*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3571*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %a0, <2 x double> %a1)
3572*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3573*9880d681SAndroid Build Coastguard Worker}
3574*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>) nounwind readnone
3575*9880d681SAndroid Build Coastguard Worker
3576*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomile_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
3577*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomile_sd:
3578*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3579*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3580*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    ucomisd %xmm0, %xmm1
3581*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setae %al
3582*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3583*9880d681SAndroid Build Coastguard Worker;
3584*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomile_sd:
3585*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3586*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3587*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    ucomisd %xmm0, %xmm1
3588*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setae %al
3589*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3590*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %a0, <2 x double> %a1)
3591*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3592*9880d681SAndroid Build Coastguard Worker}
3593*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>) nounwind readnone
3594*9880d681SAndroid Build Coastguard Worker
3595*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomilt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
3596*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomilt_sd:
3597*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3598*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3599*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    ucomisd %xmm0, %xmm1
3600*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    seta %al
3601*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3602*9880d681SAndroid Build Coastguard Worker;
3603*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomilt_sd:
3604*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3605*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3606*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    ucomisd %xmm0, %xmm1
3607*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    seta %al
3608*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3609*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %a0, <2 x double> %a1)
3610*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3611*9880d681SAndroid Build Coastguard Worker}
3612*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>) nounwind readnone
3613*9880d681SAndroid Build Coastguard Worker
3614*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomineq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
3615*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomineq_sd:
3616*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3617*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    ucomisd %xmm1, %xmm0
3618*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setp %al
3619*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    setne %cl
3620*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    orb %al, %cl
3621*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl %cl, %eax
3622*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3623*9880d681SAndroid Build Coastguard Worker;
3624*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomineq_sd:
3625*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3626*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    ucomisd %xmm1, %xmm0
3627*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setp %al
3628*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    setne %cl
3629*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    orb %al, %cl
3630*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %cl, %eax
3631*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3632*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %a0, <2 x double> %a1)
3633*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3634*9880d681SAndroid Build Coastguard Worker}
3635*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>) nounwind readnone
3636*9880d681SAndroid Build Coastguard Worker
3637*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_undefined_pd() {
3638*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_undefined_pd:
3639*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3640*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3641*9880d681SAndroid Build Coastguard Worker;
3642*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_undefined_pd:
3643*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3644*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3645*9880d681SAndroid Build Coastguard Worker  ret <2 x double> undef
3646*9880d681SAndroid Build Coastguard Worker}
3647*9880d681SAndroid Build Coastguard Worker
3648*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_undefined_si128() {
3649*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_undefined_si128:
3650*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3651*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3652*9880d681SAndroid Build Coastguard Worker;
3653*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_undefined_si128:
3654*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3655*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3656*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> undef
3657*9880d681SAndroid Build Coastguard Worker}
3658*9880d681SAndroid Build Coastguard Worker
3659*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpackhi_epi8(<2 x i64> %a0, <2 x i64> %a1) {
3660*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_epi8:
3661*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3662*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
3663*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3664*9880d681SAndroid Build Coastguard Worker;
3665*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_epi8:
3666*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3667*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
3668*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3669*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
3670*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
3671*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <16 x i8> %arg0, <16 x i8> %arg1, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
3672*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
3673*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3674*9880d681SAndroid Build Coastguard Worker}
3675*9880d681SAndroid Build Coastguard Worker
3676*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpackhi_epi16(<2 x i64> %a0, <2 x i64> %a1) {
3677*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_epi16:
3678*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3679*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
3680*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3681*9880d681SAndroid Build Coastguard Worker;
3682*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_epi16:
3683*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3684*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
3685*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3686*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
3687*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
3688*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x i16> %arg0, <8 x i16> %arg1, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
3689*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
3690*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3691*9880d681SAndroid Build Coastguard Worker}
3692*9880d681SAndroid Build Coastguard Worker
3693*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpackhi_epi32(<2 x i64> %a0, <2 x i64> %a1) {
3694*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_epi32:
3695*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3696*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
3697*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3698*9880d681SAndroid Build Coastguard Worker;
3699*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_epi32:
3700*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3701*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
3702*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3703*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
3704*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
3705*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x i32> %arg0,<4 x i32> %arg1, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
3706*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
3707*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3708*9880d681SAndroid Build Coastguard Worker}
3709*9880d681SAndroid Build Coastguard Worker
3710*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpackhi_epi64(<2 x i64> %a0, <2 x i64> %a1) {
3711*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_epi64:
3712*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3713*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]
3714*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3715*9880d681SAndroid Build Coastguard Worker;
3716*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_epi64:
3717*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3718*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]
3719*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3720*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 1, i32 3>
3721*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
3722*9880d681SAndroid Build Coastguard Worker}
3723*9880d681SAndroid Build Coastguard Worker
3724*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_unpackhi_pd(<2 x double> %a0, <2 x double> %a1) {
3725*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_pd:
3726*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3727*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
3728*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3729*9880d681SAndroid Build Coastguard Worker;
3730*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_pd:
3731*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3732*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
3733*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3734*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 3>
3735*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3736*9880d681SAndroid Build Coastguard Worker}
3737*9880d681SAndroid Build Coastguard Worker
3738*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpacklo_epi8(<2 x i64> %a0, <2 x i64> %a1) {
3739*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_epi8:
3740*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3741*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
3742*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3743*9880d681SAndroid Build Coastguard Worker;
3744*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_epi8:
3745*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3746*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
3747*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3748*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
3749*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
3750*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <16 x i8> %arg0, <16 x i8> %arg1, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
3751*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i8> %res to <2 x i64>
3752*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3753*9880d681SAndroid Build Coastguard Worker}
3754*9880d681SAndroid Build Coastguard Worker
3755*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpacklo_epi16(<2 x i64> %a0, <2 x i64> %a1) {
3756*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_epi16:
3757*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3758*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
3759*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3760*9880d681SAndroid Build Coastguard Worker;
3761*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_epi16:
3762*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3763*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
3764*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3765*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
3766*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
3767*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x i16> %arg0, <8 x i16> %arg1, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
3768*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i16> %res to <2 x i64>
3769*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3770*9880d681SAndroid Build Coastguard Worker}
3771*9880d681SAndroid Build Coastguard Worker
3772*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpacklo_epi32(<2 x i64> %a0, <2 x i64> %a1) {
3773*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_epi32:
3774*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3775*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3776*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3777*9880d681SAndroid Build Coastguard Worker;
3778*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_epi32:
3779*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3780*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3781*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3782*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
3783*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
3784*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x i32> %arg0,<4 x i32> %arg1, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
3785*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x i64>
3786*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %bc
3787*9880d681SAndroid Build Coastguard Worker}
3788*9880d681SAndroid Build Coastguard Worker
3789*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpacklo_epi64(<2 x i64> %a0, <2 x i64> %a1) {
3790*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_epi64:
3791*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3792*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3793*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3794*9880d681SAndroid Build Coastguard Worker;
3795*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_epi64:
3796*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3797*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3798*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3799*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 0, i32 2>
3800*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
3801*9880d681SAndroid Build Coastguard Worker}
3802*9880d681SAndroid Build Coastguard Worker
3803*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_unpacklo_pd(<2 x double> %a0, <2 x double> %a1) {
3804*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_pd:
3805*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3806*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3807*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3808*9880d681SAndroid Build Coastguard Worker;
3809*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_pd:
3810*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3811*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3812*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3813*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 0, i32 2>
3814*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3815*9880d681SAndroid Build Coastguard Worker}
3816*9880d681SAndroid Build Coastguard Worker
3817*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_xor_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
3818*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_xor_pd:
3819*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3820*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorps %xmm1, %xmm0
3821*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3822*9880d681SAndroid Build Coastguard Worker;
3823*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_xor_pd:
3824*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3825*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorps %xmm1, %xmm0
3826*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3827*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x double> %a0 to <4 x i32>
3828*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x double> %a1 to <4 x i32>
3829*9880d681SAndroid Build Coastguard Worker  %res = xor <4 x i32> %arg0, %arg1
3830*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i32> %res to <2 x double>
3831*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %bc
3832*9880d681SAndroid Build Coastguard Worker}
3833*9880d681SAndroid Build Coastguard Worker
3834*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_xor_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind {
3835*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_xor_si128:
3836*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3837*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorps %xmm1, %xmm0
3838*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3839*9880d681SAndroid Build Coastguard Worker;
3840*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_xor_si128:
3841*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3842*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorps %xmm1, %xmm0
3843*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3844*9880d681SAndroid Build Coastguard Worker  %res = xor <2 x i64> %a0, %a1
3845*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
3846*9880d681SAndroid Build Coastguard Worker}
3847*9880d681SAndroid Build Coastguard Worker
3848*9880d681SAndroid Build Coastguard Worker!0 = !{i32 1}
3849*9880d681SAndroid Build Coastguard Worker
3850