xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx-intrinsics-x86.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 -mtriple=i686-apple-darwin -mattr=avx,aes,pclmul | FileCheck %s --check-prefix=AVX
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=avx512vl,aes,pclmul | FileCheck %s --check-prefix=AVX512VL
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesdec(<2 x i64> %a0, <2 x i64> %a1) {
6*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesdec:
7*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
8*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaesdec %xmm1, %xmm0, %xmm0
9*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
10*9880d681SAndroid Build Coastguard Worker;
11*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesdec:
12*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
13*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaesdec %xmm1, %xmm0, %xmm0
14*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
15*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.aesni.aesdec(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
16*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesdec(<2 x i64>, <2 x i64>) nounwind readnone
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesdeclast(<2 x i64> %a0, <2 x i64> %a1) {
22*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesdeclast:
23*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
24*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaesdeclast %xmm1, %xmm0, %xmm0
25*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
26*9880d681SAndroid Build Coastguard Worker;
27*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesdeclast:
28*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
29*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaesdeclast %xmm1, %xmm0, %xmm0
30*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
31*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.aesni.aesdeclast(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
32*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesdeclast(<2 x i64>, <2 x i64>) nounwind readnone
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesenc(<2 x i64> %a0, <2 x i64> %a1) {
38*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesenc:
39*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
40*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaesenc %xmm1, %xmm0, %xmm0
41*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
42*9880d681SAndroid Build Coastguard Worker;
43*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesenc:
44*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
45*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaesenc %xmm1, %xmm0, %xmm0
46*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
47*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
48*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64>, <2 x i64>) nounwind readnone
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesenclast(<2 x i64> %a0, <2 x i64> %a1) {
54*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesenclast:
55*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
56*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaesenclast %xmm1, %xmm0, %xmm0
57*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
58*9880d681SAndroid Build Coastguard Worker;
59*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesenclast:
60*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
61*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaesenclast %xmm1, %xmm0, %xmm0
62*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
63*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.aesni.aesenclast(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
64*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
65*9880d681SAndroid Build Coastguard Worker}
66*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesenclast(<2 x i64>, <2 x i64>) nounwind readnone
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesimc(<2 x i64> %a0) {
70*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesimc:
71*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
72*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaesimc %xmm0, %xmm0
73*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
74*9880d681SAndroid Build Coastguard Worker;
75*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesimc:
76*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
77*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaesimc %xmm0, %xmm0
78*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
79*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.aesni.aesimc(<2 x i64> %a0) ; <<2 x i64>> [#uses=1]
80*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
81*9880d681SAndroid Build Coastguard Worker}
82*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesimc(<2 x i64>) nounwind readnone
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aeskeygenassist(<2 x i64> %a0) {
86*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aeskeygenassist:
87*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
88*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaeskeygenassist $7, %xmm0, %xmm0
89*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
90*9880d681SAndroid Build Coastguard Worker;
91*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aeskeygenassist:
92*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
93*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaeskeygenassist $7, %xmm0, %xmm0
94*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
95*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64> %a0, i8 7) ; <<2 x i64>> [#uses=1]
96*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
97*9880d681SAndroid Build Coastguard Worker}
98*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64>, i8) nounwind readnone
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_add_sd(<2 x double> %a0, <2 x double> %a1) {
102*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_add_sd:
103*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
104*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaddsd %xmm1, %xmm0, %xmm0
105*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
106*9880d681SAndroid Build Coastguard Worker;
107*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_add_sd:
108*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
109*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaddsd %xmm1, %xmm0, %xmm0
110*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
111*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
112*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.add.sd(<2 x double>, <2 x double>) nounwind readnone
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cmp_pd(<2 x double> %a0, <2 x double> %a1) {
118*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cmp_pd:
119*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
120*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpordpd %xmm1, %xmm0, %xmm0
121*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
122*9880d681SAndroid Build Coastguard Worker;
123*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cmp_pd:
124*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
125*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpordpd %xmm1, %xmm0, %xmm0
126*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
127*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1]
128*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
129*9880d681SAndroid Build Coastguard Worker}
130*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double>, <2 x double>, i8) nounwind readnone
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cmp_sd(<2 x double> %a0, <2 x double> %a1) {
134*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cmp_sd:
135*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
136*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpordsd %xmm1, %xmm0, %xmm0
137*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
138*9880d681SAndroid Build Coastguard Worker;
139*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cmp_sd:
140*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
141*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpordsd %xmm1, %xmm0, %xmm0
142*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
143*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1]
144*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
145*9880d681SAndroid Build Coastguard Worker}
146*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone
147*9880d681SAndroid Build Coastguard Worker
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comieq_sd(<2 x double> %a0, <2 x double> %a1) {
150*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comieq_sd:
151*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
152*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomisd %xmm1, %xmm0
153*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setnp %al
154*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %cl
155*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andb %al, %cl
156*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movzbl %cl, %eax
157*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
158*9880d681SAndroid Build Coastguard Worker;
159*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comieq_sd:
160*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
161*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomisd %xmm1, %xmm0
162*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setnp %al
163*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %cl
164*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andb %al, %cl
165*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movzbl %cl, %eax
166*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
167*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
168*9880d681SAndroid Build Coastguard Worker  ret i32 %res
169*9880d681SAndroid Build Coastguard Worker}
170*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) nounwind readnone
171*9880d681SAndroid Build Coastguard Worker
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comige_sd(<2 x double> %a0, <2 x double> %a1) {
174*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comige_sd:
175*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
176*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
177*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomisd %xmm1, %xmm0
178*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setae %al
179*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
180*9880d681SAndroid Build Coastguard Worker;
181*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comige_sd:
182*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
183*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
184*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomisd %xmm1, %xmm0
185*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setae %al
186*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
187*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comige.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
188*9880d681SAndroid Build Coastguard Worker  ret i32 %res
189*9880d681SAndroid Build Coastguard Worker}
190*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>) nounwind readnone
191*9880d681SAndroid Build Coastguard Worker
192*9880d681SAndroid Build Coastguard Worker
193*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comigt_sd(<2 x double> %a0, <2 x double> %a1) {
194*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comigt_sd:
195*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
196*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
197*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomisd %xmm1, %xmm0
198*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
199*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
200*9880d681SAndroid Build Coastguard Worker;
201*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comigt_sd:
202*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
203*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
204*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomisd %xmm1, %xmm0
205*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
206*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
207*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
208*9880d681SAndroid Build Coastguard Worker  ret i32 %res
209*9880d681SAndroid Build Coastguard Worker}
210*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>) nounwind readnone
211*9880d681SAndroid Build Coastguard Worker
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comile_sd(<2 x double> %a0, <2 x double> %a1) {
214*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comile_sd:
215*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
216*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
217*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomisd %xmm0, %xmm1
218*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setae %al
219*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
220*9880d681SAndroid Build Coastguard Worker;
221*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comile_sd:
222*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
223*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
224*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomisd %xmm0, %xmm1
225*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setae %al
226*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
227*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comile.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
228*9880d681SAndroid Build Coastguard Worker  ret i32 %res
229*9880d681SAndroid Build Coastguard Worker}
230*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>) nounwind readnone
231*9880d681SAndroid Build Coastguard Worker
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comilt_sd(<2 x double> %a0, <2 x double> %a1) {
234*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comilt_sd:
235*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
236*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
237*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomisd %xmm0, %xmm1
238*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
239*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
240*9880d681SAndroid Build Coastguard Worker;
241*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comilt_sd:
242*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
243*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
244*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomisd %xmm0, %xmm1
245*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
246*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
247*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
248*9880d681SAndroid Build Coastguard Worker  ret i32 %res
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>) nounwind readnone
251*9880d681SAndroid Build Coastguard Worker
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comineq_sd(<2 x double> %a0, <2 x double> %a1) {
254*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comineq_sd:
255*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
256*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomisd %xmm1, %xmm0
257*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setp %al
258*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setne %cl
259*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    orb %al, %cl
260*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movzbl %cl, %eax
261*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
262*9880d681SAndroid Build Coastguard Worker;
263*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comineq_sd:
264*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
265*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomisd %xmm1, %xmm0
266*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setp %al
267*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setne %cl
268*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    orb %al, %cl
269*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movzbl %cl, %eax
270*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
271*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
272*9880d681SAndroid Build Coastguard Worker  ret i32 %res
273*9880d681SAndroid Build Coastguard Worker}
274*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>) nounwind readnone
275*9880d681SAndroid Build Coastguard Worker
276*9880d681SAndroid Build Coastguard Worker
277*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse2_cvtdq2ps(<4 x i32> %a0) {
278*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtdq2ps:
279*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
280*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtdq2ps %xmm0, %xmm0
281*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
282*9880d681SAndroid Build Coastguard Worker;
283*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtdq2ps:
284*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
285*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtdq2ps %xmm0, %xmm0
286*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
287*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32> %a0) ; <<4 x float>> [#uses=1]
288*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32>) nounwind readnone
291*9880d681SAndroid Build Coastguard Worker
292*9880d681SAndroid Build Coastguard Worker
293*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvtpd2dq(<2 x double> %a0) {
294*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtpd2dq:
295*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
296*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtpd2dq %xmm0, %xmm0
297*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
298*9880d681SAndroid Build Coastguard Worker;
299*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtpd2dq:
300*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
301*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtpd2dq %xmm0, %xmm0
302*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
303*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double> %a0) ; <<4 x i32>> [#uses=1]
304*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
305*9880d681SAndroid Build Coastguard Worker}
306*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double>) nounwind readnone
307*9880d681SAndroid Build Coastguard Worker
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse2_cvtpd2ps(<2 x double> %a0) {
310*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtpd2ps:
311*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
312*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtpd2ps %xmm0, %xmm0
313*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
314*9880d681SAndroid Build Coastguard Worker;
315*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtpd2ps:
316*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
317*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtpd2ps %xmm0, %xmm0
318*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
319*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0) ; <<4 x float>> [#uses=1]
320*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
321*9880d681SAndroid Build Coastguard Worker}
322*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double>) nounwind readnone
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvtps2dq(<4 x float> %a0) {
326*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtps2dq:
327*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
328*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtps2dq %xmm0, %xmm0
329*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
330*9880d681SAndroid Build Coastguard Worker;
331*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtps2dq:
332*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
333*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtps2dq %xmm0, %xmm0
334*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
335*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %a0) ; <<4 x i32>> [#uses=1]
336*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
337*9880d681SAndroid Build Coastguard Worker}
338*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float>) nounwind readnone
339*9880d681SAndroid Build Coastguard Worker
340*9880d681SAndroid Build Coastguard Worker
341*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_cvtsd2si(<2 x double> %a0) {
342*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtsd2si:
343*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
344*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtsd2si %xmm0, %eax
345*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
346*9880d681SAndroid Build Coastguard Worker;
347*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtsd2si:
348*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
349*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtsd2si %xmm0, %eax
350*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
351*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %a0) ; <i32> [#uses=1]
352*9880d681SAndroid Build Coastguard Worker  ret i32 %res
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone
355*9880d681SAndroid Build Coastguard Worker
356*9880d681SAndroid Build Coastguard Worker
357*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse2_cvtsd2ss(<4 x float> %a0, <2 x double> %a1) {
358*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtsd2ss:
359*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
360*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtsd2ss %xmm1, %xmm0, %xmm0
361*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
362*9880d681SAndroid Build Coastguard Worker;
363*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtsd2ss:
364*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
365*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtsd2ss %xmm1, %xmm0, %xmm0
366*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
367*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float> %a0, <2 x double> %a1) ; <<4 x float>> [#uses=1]
368*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
369*9880d681SAndroid Build Coastguard Worker}
370*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float>, <2 x double>) nounwind readnone
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Worker
373*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cvtsi2sd(<2 x double> %a0, i32 %a1) {
374*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtsi2sd:
375*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
376*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtsi2sdl {{[0-9]+}}(%esp), %xmm0, %xmm0
377*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
378*9880d681SAndroid Build Coastguard Worker;
379*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtsi2sd:
380*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
381*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtsi2sdl {{[0-9]+}}(%esp), %xmm0, %xmm0
382*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
383*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double> %a0, i32 %a1) ; <<2 x double>> [#uses=1]
384*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
385*9880d681SAndroid Build Coastguard Worker}
386*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double>, i32) nounwind readnone
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Worker
389*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cvtss2sd(<2 x double> %a0, <4 x float> %a1) {
390*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtss2sd:
391*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
392*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtss2sd %xmm1, %xmm0, %xmm0
393*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
394*9880d681SAndroid Build Coastguard Worker;
395*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtss2sd:
396*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
397*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtss2sd %xmm1, %xmm0, %xmm0
398*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
399*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double> %a0, <4 x float> %a1) ; <<2 x double>> [#uses=1]
400*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
401*9880d681SAndroid Build Coastguard Worker}
402*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double>, <4 x float>) nounwind readnone
403*9880d681SAndroid Build Coastguard Worker
404*9880d681SAndroid Build Coastguard Worker
405*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvttpd2dq(<2 x double> %a0) {
406*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvttpd2dq:
407*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
408*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvttpd2dq %xmm0, %xmm0
409*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
410*9880d681SAndroid Build Coastguard Worker;
411*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvttpd2dq:
412*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
413*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvttpd2dq %xmm0, %xmm0
414*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
415*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double> %a0) ; <<4 x i32>> [#uses=1]
416*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
417*9880d681SAndroid Build Coastguard Worker}
418*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double>) nounwind readnone
419*9880d681SAndroid Build Coastguard Worker
420*9880d681SAndroid Build Coastguard Worker
421*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvttps2dq(<4 x float> %a0) {
422*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvttps2dq:
423*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
424*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvttps2dq %xmm0, %xmm0
425*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
426*9880d681SAndroid Build Coastguard Worker;
427*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvttps2dq:
428*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
429*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvttps2dq %xmm0, %xmm0
430*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
431*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %a0) ; <<4 x i32>> [#uses=1]
432*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
433*9880d681SAndroid Build Coastguard Worker}
434*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float>) nounwind readnone
435*9880d681SAndroid Build Coastguard Worker
436*9880d681SAndroid Build Coastguard Worker
437*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_cvttsd2si(<2 x double> %a0) {
438*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvttsd2si:
439*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
440*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvttsd2si %xmm0, %eax
441*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
442*9880d681SAndroid Build Coastguard Worker;
443*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvttsd2si:
444*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
445*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvttsd2si %xmm0, %eax
446*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
447*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %a0) ; <i32> [#uses=1]
448*9880d681SAndroid Build Coastguard Worker  ret i32 %res
449*9880d681SAndroid Build Coastguard Worker}
450*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone
451*9880d681SAndroid Build Coastguard Worker
452*9880d681SAndroid Build Coastguard Worker
453*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_div_sd(<2 x double> %a0, <2 x double> %a1) {
454*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_div_sd:
455*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
456*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vdivsd %xmm1, %xmm0, %xmm0
457*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
458*9880d681SAndroid Build Coastguard Worker;
459*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_div_sd:
460*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
461*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vdivsd %xmm1, %xmm0, %xmm0
462*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
463*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
464*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
465*9880d681SAndroid Build Coastguard Worker}
466*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.div.sd(<2 x double>, <2 x double>) nounwind readnone
467*9880d681SAndroid Build Coastguard Worker
468*9880d681SAndroid Build Coastguard Worker
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_max_pd(<2 x double> %a0, <2 x double> %a1) {
471*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_max_pd:
472*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
473*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaxpd %xmm1, %xmm0, %xmm0
474*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
475*9880d681SAndroid Build Coastguard Worker;
476*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_max_pd:
477*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
478*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaxpd %xmm1, %xmm0, %xmm0
479*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
480*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
481*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
482*9880d681SAndroid Build Coastguard Worker}
483*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.pd(<2 x double>, <2 x double>) nounwind readnone
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Worker
486*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_max_sd(<2 x double> %a0, <2 x double> %a1) {
487*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_max_sd:
488*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
489*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaxsd %xmm1, %xmm0, %xmm0
490*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
491*9880d681SAndroid Build Coastguard Worker;
492*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_max_sd:
493*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
494*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaxsd %xmm1, %xmm0, %xmm0
495*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
496*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
497*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
498*9880d681SAndroid Build Coastguard Worker}
499*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) nounwind readnone
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Worker
502*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_min_pd(<2 x double> %a0, <2 x double> %a1) {
503*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_min_pd:
504*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
505*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vminpd %xmm1, %xmm0, %xmm0
506*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
507*9880d681SAndroid Build Coastguard Worker;
508*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_min_pd:
509*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
510*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vminpd %xmm1, %xmm0, %xmm0
511*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
512*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
513*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
514*9880d681SAndroid Build Coastguard Worker}
515*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.pd(<2 x double>, <2 x double>) nounwind readnone
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Worker
518*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_min_sd(<2 x double> %a0, <2 x double> %a1) {
519*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_min_sd:
520*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
521*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vminsd %xmm1, %xmm0, %xmm0
522*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
523*9880d681SAndroid Build Coastguard Worker;
524*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_min_sd:
525*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
526*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vminsd %xmm1, %xmm0, %xmm0
527*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
528*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
529*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
530*9880d681SAndroid Build Coastguard Worker}
531*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) nounwind readnone
532*9880d681SAndroid Build Coastguard Worker
533*9880d681SAndroid Build Coastguard Worker
534*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_movmsk_pd(<2 x double> %a0) {
535*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_movmsk_pd:
536*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
537*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovmskpd %xmm0, %eax
538*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
539*9880d681SAndroid Build Coastguard Worker;
540*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_movmsk_pd:
541*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
542*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmovmskpd %xmm0, %eax
543*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
544*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.movmsk.pd(<2 x double> %a0) ; <i32> [#uses=1]
545*9880d681SAndroid Build Coastguard Worker  ret i32 %res
546*9880d681SAndroid Build Coastguard Worker}
547*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.movmsk.pd(<2 x double>) nounwind readnone
548*9880d681SAndroid Build Coastguard Worker
549*9880d681SAndroid Build Coastguard Worker
550*9880d681SAndroid Build Coastguard Worker
551*9880d681SAndroid Build Coastguard Worker
552*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_mul_sd(<2 x double> %a0, <2 x double> %a1) {
553*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_mul_sd:
554*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
555*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmulsd %xmm1, %xmm0, %xmm0
556*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
557*9880d681SAndroid Build Coastguard Worker;
558*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_mul_sd:
559*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
560*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmulsd %xmm1, %xmm0, %xmm0
561*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
562*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
563*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.mul.sd(<2 x double>, <2 x double>) nounwind readnone
566*9880d681SAndroid Build Coastguard Worker
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_packssdw_128(<4 x i32> %a0, <4 x i32> %a1) {
569*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_packssdw_128:
570*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
571*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
572*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
573*9880d681SAndroid Build Coastguard Worker;
574*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_packssdw_128:
575*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
576*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
577*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
578*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %a0, <4 x i32> %a1) ; <<8 x i16>> [#uses=1]
579*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
580*9880d681SAndroid Build Coastguard Worker}
581*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32>, <4 x i32>) nounwind readnone
582*9880d681SAndroid Build Coastguard Worker
583*9880d681SAndroid Build Coastguard Worker
584*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_packsswb_128(<8 x i16> %a0, <8 x i16> %a1) {
585*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_packsswb_128:
586*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
587*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
588*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
589*9880d681SAndroid Build Coastguard Worker;
590*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_packsswb_128:
591*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
592*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
593*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
594*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %a0, <8 x i16> %a1) ; <<16 x i8>> [#uses=1]
595*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
596*9880d681SAndroid Build Coastguard Worker}
597*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16>, <8 x i16>) nounwind readnone
598*9880d681SAndroid Build Coastguard Worker
599*9880d681SAndroid Build Coastguard Worker
600*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_packuswb_128(<8 x i16> %a0, <8 x i16> %a1) {
601*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_packuswb_128:
602*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
603*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0
604*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
605*9880d681SAndroid Build Coastguard Worker;
606*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_packuswb_128:
607*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
608*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0
609*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
610*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16> %a0, <8 x i16> %a1) ; <<16 x i8>> [#uses=1]
611*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
612*9880d681SAndroid Build Coastguard Worker}
613*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) nounwind readnone
614*9880d681SAndroid Build Coastguard Worker
615*9880d681SAndroid Build Coastguard Worker
616*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_padds_b(<16 x i8> %a0, <16 x i8> %a1) {
617*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_padds_b:
618*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
619*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpaddsb %xmm1, %xmm0, %xmm0
620*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
621*9880d681SAndroid Build Coastguard Worker;
622*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_padds_b:
623*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
624*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpaddsb %xmm1, %xmm0, %xmm0
625*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
626*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
627*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
628*9880d681SAndroid Build Coastguard Worker}
629*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8>, <16 x i8>) nounwind readnone
630*9880d681SAndroid Build Coastguard Worker
631*9880d681SAndroid Build Coastguard Worker
632*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_padds_w(<8 x i16> %a0, <8 x i16> %a1) {
633*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_padds_w:
634*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
635*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpaddsw %xmm1, %xmm0, %xmm0
636*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
637*9880d681SAndroid Build Coastguard Worker;
638*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_padds_w:
639*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
640*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpaddsw %xmm1, %xmm0, %xmm0
641*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
642*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
643*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
644*9880d681SAndroid Build Coastguard Worker}
645*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone
646*9880d681SAndroid Build Coastguard Worker
647*9880d681SAndroid Build Coastguard Worker
648*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_paddus_b(<16 x i8> %a0, <16 x i8> %a1) {
649*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_paddus_b:
650*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
651*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpaddusb %xmm1, %xmm0, %xmm0
652*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
653*9880d681SAndroid Build Coastguard Worker;
654*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_paddus_b:
655*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
656*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpaddusb %xmm1, %xmm0, %xmm0
657*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
658*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
659*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
660*9880d681SAndroid Build Coastguard Worker}
661*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8>, <16 x i8>) nounwind readnone
662*9880d681SAndroid Build Coastguard Worker
663*9880d681SAndroid Build Coastguard Worker
664*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_paddus_w(<8 x i16> %a0, <8 x i16> %a1) {
665*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_paddus_w:
666*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
667*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpaddusw %xmm1, %xmm0, %xmm0
668*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
669*9880d681SAndroid Build Coastguard Worker;
670*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_paddus_w:
671*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
672*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpaddusw %xmm1, %xmm0, %xmm0
673*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
674*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
675*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
676*9880d681SAndroid Build Coastguard Worker}
677*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16>, <8 x i16>) nounwind readnone
678*9880d681SAndroid Build Coastguard Worker
679*9880d681SAndroid Build Coastguard Worker
680*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_pavg_b(<16 x i8> %a0, <16 x i8> %a1) {
681*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pavg_b:
682*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
683*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpavgb %xmm1, %xmm0, %xmm0
684*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
685*9880d681SAndroid Build Coastguard Worker;
686*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pavg_b:
687*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
688*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpavgb %xmm1, %xmm0, %xmm0
689*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
690*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
691*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
692*9880d681SAndroid Build Coastguard Worker}
693*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8>, <16 x i8>) nounwind readnone
694*9880d681SAndroid Build Coastguard Worker
695*9880d681SAndroid Build Coastguard Worker
696*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pavg_w(<8 x i16> %a0, <8 x i16> %a1) {
697*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pavg_w:
698*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
699*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpavgw %xmm1, %xmm0, %xmm0
700*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
701*9880d681SAndroid Build Coastguard Worker;
702*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pavg_w:
703*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
704*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpavgw %xmm1, %xmm0, %xmm0
705*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
706*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
707*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
708*9880d681SAndroid Build Coastguard Worker}
709*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone
710*9880d681SAndroid Build Coastguard Worker
711*9880d681SAndroid Build Coastguard Worker
712*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_pmadd_wd(<8 x i16> %a0, <8 x i16> %a1) {
713*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmadd_wd:
714*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
715*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmaddwd %xmm1, %xmm0, %xmm0
716*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
717*9880d681SAndroid Build Coastguard Worker;
718*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmadd_wd:
719*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
720*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmaddwd %xmm1, %xmm0, %xmm0
721*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
722*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16> %a0, <8 x i16> %a1) ; <<4 x i32>> [#uses=1]
723*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
724*9880d681SAndroid Build Coastguard Worker}
725*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) nounwind readnone
726*9880d681SAndroid Build Coastguard Worker
727*9880d681SAndroid Build Coastguard Worker
728*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmaxs_w(<8 x i16> %a0, <8 x i16> %a1) {
729*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmaxs_w:
730*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
731*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0
732*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
733*9880d681SAndroid Build Coastguard Worker;
734*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmaxs_w:
735*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
736*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0
737*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
738*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
739*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
740*9880d681SAndroid Build Coastguard Worker}
741*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16>, <8 x i16>) nounwind readnone
742*9880d681SAndroid Build Coastguard Worker
743*9880d681SAndroid Build Coastguard Worker
744*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_pmaxu_b(<16 x i8> %a0, <16 x i8> %a1) {
745*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmaxu_b:
746*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
747*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0
748*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
749*9880d681SAndroid Build Coastguard Worker;
750*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmaxu_b:
751*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
752*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0
753*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
754*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
755*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
756*9880d681SAndroid Build Coastguard Worker}
757*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8>, <16 x i8>) nounwind readnone
758*9880d681SAndroid Build Coastguard Worker
759*9880d681SAndroid Build Coastguard Worker
760*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmins_w(<8 x i16> %a0, <8 x i16> %a1) {
761*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmins_w:
762*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
763*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpminsw %xmm1, %xmm0, %xmm0
764*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
765*9880d681SAndroid Build Coastguard Worker;
766*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmins_w:
767*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
768*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpminsw %xmm1, %xmm0, %xmm0
769*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
770*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
771*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
772*9880d681SAndroid Build Coastguard Worker}
773*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16>, <8 x i16>) nounwind readnone
774*9880d681SAndroid Build Coastguard Worker
775*9880d681SAndroid Build Coastguard Worker
776*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_pminu_b(<16 x i8> %a0, <16 x i8> %a1) {
777*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pminu_b:
778*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
779*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpminub %xmm1, %xmm0, %xmm0
780*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
781*9880d681SAndroid Build Coastguard Worker;
782*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pminu_b:
783*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
784*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpminub %xmm1, %xmm0, %xmm0
785*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
786*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
787*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
788*9880d681SAndroid Build Coastguard Worker}
789*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8>, <16 x i8>) nounwind readnone
790*9880d681SAndroid Build Coastguard Worker
791*9880d681SAndroid Build Coastguard Worker
792*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_pmovmskb_128(<16 x i8> %a0) {
793*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmovmskb_128:
794*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
795*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovmskb %xmm0, %eax
796*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
797*9880d681SAndroid Build Coastguard Worker;
798*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmovmskb_128:
799*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
800*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmovmskb %xmm0, %eax
801*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
802*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %a0) ; <i32> [#uses=1]
803*9880d681SAndroid Build Coastguard Worker  ret i32 %res
804*9880d681SAndroid Build Coastguard Worker}
805*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8>) nounwind readnone
806*9880d681SAndroid Build Coastguard Worker
807*9880d681SAndroid Build Coastguard Worker
808*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmulh_w(<8 x i16> %a0, <8 x i16> %a1) {
809*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmulh_w:
810*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
811*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmulhw %xmm1, %xmm0, %xmm0
812*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
813*9880d681SAndroid Build Coastguard Worker;
814*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmulh_w:
815*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
816*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmulhw %xmm1, %xmm0, %xmm0
817*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
818*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
819*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
820*9880d681SAndroid Build Coastguard Worker}
821*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) nounwind readnone
822*9880d681SAndroid Build Coastguard Worker
823*9880d681SAndroid Build Coastguard Worker
824*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmulhu_w(<8 x i16> %a0, <8 x i16> %a1) {
825*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmulhu_w:
826*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
827*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmulhuw %xmm1, %xmm0, %xmm0
828*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
829*9880d681SAndroid Build Coastguard Worker;
830*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmulhu_w:
831*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
832*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmulhuw %xmm1, %xmm0, %xmm0
833*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
834*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
835*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
836*9880d681SAndroid Build Coastguard Worker}
837*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16>, <8 x i16>) nounwind readnone
838*9880d681SAndroid Build Coastguard Worker
839*9880d681SAndroid Build Coastguard Worker
840*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_pmulu_dq(<4 x i32> %a0, <4 x i32> %a1) {
841*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmulu_dq:
842*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
843*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmuludq %xmm1, %xmm0, %xmm0
844*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
845*9880d681SAndroid Build Coastguard Worker;
846*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmulu_dq:
847*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
848*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmuludq %xmm1, %xmm0, %xmm0
849*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
850*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32> %a0, <4 x i32> %a1) ; <<2 x i64>> [#uses=1]
851*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
852*9880d681SAndroid Build Coastguard Worker}
853*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32>, <4 x i32>) nounwind readnone
854*9880d681SAndroid Build Coastguard Worker
855*9880d681SAndroid Build Coastguard Worker
856*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psad_bw(<16 x i8> %a0, <16 x i8> %a1) {
857*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psad_bw:
858*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
859*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsadbw %xmm1, %xmm0, %xmm0
860*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
861*9880d681SAndroid Build Coastguard Worker;
862*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psad_bw:
863*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
864*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsadbw %xmm1, %xmm0, %xmm0
865*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
866*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %a0, <16 x i8> %a1) ; <<2 x i64>> [#uses=1]
867*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
868*9880d681SAndroid Build Coastguard Worker}
869*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) nounwind readnone
870*9880d681SAndroid Build Coastguard Worker
871*9880d681SAndroid Build Coastguard Worker
872*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psll_d(<4 x i32> %a0, <4 x i32> %a1) {
873*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psll_d:
874*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
875*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpslld %xmm1, %xmm0, %xmm0
876*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
877*9880d681SAndroid Build Coastguard Worker;
878*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psll_d:
879*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
880*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpslld %xmm1, %xmm0, %xmm0
881*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
882*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
883*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
884*9880d681SAndroid Build Coastguard Worker}
885*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32>, <4 x i32>) nounwind readnone
886*9880d681SAndroid Build Coastguard Worker
887*9880d681SAndroid Build Coastguard Worker
888*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psll_q(<2 x i64> %a0, <2 x i64> %a1) {
889*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psll_q:
890*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
891*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsllq %xmm1, %xmm0, %xmm0
892*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
893*9880d681SAndroid Build Coastguard Worker;
894*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psll_q:
895*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
896*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsllq %xmm1, %xmm0, %xmm0
897*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
898*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
899*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
900*9880d681SAndroid Build Coastguard Worker}
901*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64>, <2 x i64>) nounwind readnone
902*9880d681SAndroid Build Coastguard Worker
903*9880d681SAndroid Build Coastguard Worker
904*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psll_w(<8 x i16> %a0, <8 x i16> %a1) {
905*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psll_w:
906*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
907*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsllw %xmm1, %xmm0, %xmm0
908*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
909*9880d681SAndroid Build Coastguard Worker;
910*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psll_w:
911*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
912*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsllw %xmm1, %xmm0, %xmm0
913*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
914*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
915*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
916*9880d681SAndroid Build Coastguard Worker}
917*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16>, <8 x i16>) nounwind readnone
918*9880d681SAndroid Build Coastguard Worker
919*9880d681SAndroid Build Coastguard Worker
920*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_pslli_d(<4 x i32> %a0) {
921*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pslli_d:
922*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
923*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpslld $7, %xmm0, %xmm0
924*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
925*9880d681SAndroid Build Coastguard Worker;
926*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pslli_d:
927*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
928*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpslld $7, %xmm0, %xmm0
929*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
930*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1]
931*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
932*9880d681SAndroid Build Coastguard Worker}
933*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32>, i32) nounwind readnone
934*9880d681SAndroid Build Coastguard Worker
935*9880d681SAndroid Build Coastguard Worker
936*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_pslli_q(<2 x i64> %a0) {
937*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pslli_q:
938*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
939*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsllq $7, %xmm0, %xmm0
940*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
941*9880d681SAndroid Build Coastguard Worker;
942*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pslli_q:
943*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
944*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsllq $7, %xmm0, %xmm0
945*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
946*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
947*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
948*9880d681SAndroid Build Coastguard Worker}
949*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64>, i32) nounwind readnone
950*9880d681SAndroid Build Coastguard Worker
951*9880d681SAndroid Build Coastguard Worker
952*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pslli_w(<8 x i16> %a0) {
953*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pslli_w:
954*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
955*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsllw $7, %xmm0, %xmm0
956*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
957*9880d681SAndroid Build Coastguard Worker;
958*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pslli_w:
959*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
960*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsllw $7, %xmm0, %xmm0
961*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
962*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1]
963*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
964*9880d681SAndroid Build Coastguard Worker}
965*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16>, i32) nounwind readnone
966*9880d681SAndroid Build Coastguard Worker
967*9880d681SAndroid Build Coastguard Worker
968*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psra_d(<4 x i32> %a0, <4 x i32> %a1) {
969*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psra_d:
970*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
971*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrad %xmm1, %xmm0, %xmm0
972*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
973*9880d681SAndroid Build Coastguard Worker;
974*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psra_d:
975*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
976*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsrad %xmm1, %xmm0, %xmm0
977*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
978*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
979*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
980*9880d681SAndroid Build Coastguard Worker}
981*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32>, <4 x i32>) nounwind readnone
982*9880d681SAndroid Build Coastguard Worker
983*9880d681SAndroid Build Coastguard Worker
984*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psra_w(<8 x i16> %a0, <8 x i16> %a1) {
985*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psra_w:
986*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
987*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsraw %xmm1, %xmm0, %xmm0
988*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
989*9880d681SAndroid Build Coastguard Worker;
990*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psra_w:
991*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
992*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsraw %xmm1, %xmm0, %xmm0
993*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
994*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
995*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
996*9880d681SAndroid Build Coastguard Worker}
997*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16>, <8 x i16>) nounwind readnone
998*9880d681SAndroid Build Coastguard Worker
999*9880d681SAndroid Build Coastguard Worker
1000*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psrai_d(<4 x i32> %a0) {
1001*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrai_d:
1002*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1003*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrad $7, %xmm0, %xmm0
1004*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1005*9880d681SAndroid Build Coastguard Worker;
1006*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrai_d:
1007*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1008*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsrad $7, %xmm0, %xmm0
1009*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1010*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1]
1011*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
1012*9880d681SAndroid Build Coastguard Worker}
1013*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32>, i32) nounwind readnone
1014*9880d681SAndroid Build Coastguard Worker
1015*9880d681SAndroid Build Coastguard Worker
1016*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psrai_w(<8 x i16> %a0) {
1017*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrai_w:
1018*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1019*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsraw $7, %xmm0, %xmm0
1020*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1021*9880d681SAndroid Build Coastguard Worker;
1022*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrai_w:
1023*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1024*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsraw $7, %xmm0, %xmm0
1025*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1026*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1]
1027*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1028*9880d681SAndroid Build Coastguard Worker}
1029*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16>, i32) nounwind readnone
1030*9880d681SAndroid Build Coastguard Worker
1031*9880d681SAndroid Build Coastguard Worker
1032*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psrl_d(<4 x i32> %a0, <4 x i32> %a1) {
1033*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrl_d:
1034*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1035*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrld %xmm1, %xmm0, %xmm0
1036*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1037*9880d681SAndroid Build Coastguard Worker;
1038*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrl_d:
1039*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1040*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsrld %xmm1, %xmm0, %xmm0
1041*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1042*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1043*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
1044*9880d681SAndroid Build Coastguard Worker}
1045*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32>, <4 x i32>) nounwind readnone
1046*9880d681SAndroid Build Coastguard Worker
1047*9880d681SAndroid Build Coastguard Worker
1048*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psrl_q(<2 x i64> %a0, <2 x i64> %a1) {
1049*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrl_q:
1050*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1051*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlq %xmm1, %xmm0, %xmm0
1052*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1053*9880d681SAndroid Build Coastguard Worker;
1054*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrl_q:
1055*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1056*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsrlq %xmm1, %xmm0, %xmm0
1057*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1058*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
1059*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
1060*9880d681SAndroid Build Coastguard Worker}
1061*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64>, <2 x i64>) nounwind readnone
1062*9880d681SAndroid Build Coastguard Worker
1063*9880d681SAndroid Build Coastguard Worker
1064*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psrl_w(<8 x i16> %a0, <8 x i16> %a1) {
1065*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrl_w:
1066*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1067*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlw %xmm1, %xmm0, %xmm0
1068*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1069*9880d681SAndroid Build Coastguard Worker;
1070*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrl_w:
1071*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1072*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsrlw %xmm1, %xmm0, %xmm0
1073*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1074*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1075*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1076*9880d681SAndroid Build Coastguard Worker}
1077*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16>, <8 x i16>) nounwind readnone
1078*9880d681SAndroid Build Coastguard Worker
1079*9880d681SAndroid Build Coastguard Worker
1080*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psrli_d(<4 x i32> %a0) {
1081*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrli_d:
1082*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1083*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrld $7, %xmm0, %xmm0
1084*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1085*9880d681SAndroid Build Coastguard Worker;
1086*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrli_d:
1087*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1088*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsrld $7, %xmm0, %xmm0
1089*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1090*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1]
1091*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
1092*9880d681SAndroid Build Coastguard Worker}
1093*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32>, i32) nounwind readnone
1094*9880d681SAndroid Build Coastguard Worker
1095*9880d681SAndroid Build Coastguard Worker
1096*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psrli_q(<2 x i64> %a0) {
1097*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrli_q:
1098*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1099*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlq $7, %xmm0, %xmm0
1100*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1101*9880d681SAndroid Build Coastguard Worker;
1102*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrli_q:
1103*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1104*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsrlq $7, %xmm0, %xmm0
1105*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1106*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
1107*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
1108*9880d681SAndroid Build Coastguard Worker}
1109*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64>, i32) nounwind readnone
1110*9880d681SAndroid Build Coastguard Worker
1111*9880d681SAndroid Build Coastguard Worker
1112*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psrli_w(<8 x i16> %a0) {
1113*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrli_w:
1114*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1115*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlw $7, %xmm0, %xmm0
1116*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1117*9880d681SAndroid Build Coastguard Worker;
1118*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrli_w:
1119*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1120*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsrlw $7, %xmm0, %xmm0
1121*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1122*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1]
1123*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1124*9880d681SAndroid Build Coastguard Worker}
1125*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16>, i32) nounwind readnone
1126*9880d681SAndroid Build Coastguard Worker
1127*9880d681SAndroid Build Coastguard Worker
1128*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_psubs_b(<16 x i8> %a0, <16 x i8> %a1) {
1129*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psubs_b:
1130*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1131*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsubsb %xmm1, %xmm0, %xmm0
1132*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1133*9880d681SAndroid Build Coastguard Worker;
1134*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psubs_b:
1135*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1136*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsubsb %xmm1, %xmm0, %xmm0
1137*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1138*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
1139*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
1140*9880d681SAndroid Build Coastguard Worker}
1141*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8>, <16 x i8>) nounwind readnone
1142*9880d681SAndroid Build Coastguard Worker
1143*9880d681SAndroid Build Coastguard Worker
1144*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psubs_w(<8 x i16> %a0, <8 x i16> %a1) {
1145*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psubs_w:
1146*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1147*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsubsw %xmm1, %xmm0, %xmm0
1148*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1149*9880d681SAndroid Build Coastguard Worker;
1150*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psubs_w:
1151*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1152*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsubsw %xmm1, %xmm0, %xmm0
1153*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1154*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1155*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1156*9880d681SAndroid Build Coastguard Worker}
1157*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone
1158*9880d681SAndroid Build Coastguard Worker
1159*9880d681SAndroid Build Coastguard Worker
1160*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_psubus_b(<16 x i8> %a0, <16 x i8> %a1) {
1161*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psubus_b:
1162*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1163*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsubusb %xmm1, %xmm0, %xmm0
1164*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1165*9880d681SAndroid Build Coastguard Worker;
1166*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psubus_b:
1167*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1168*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsubusb %xmm1, %xmm0, %xmm0
1169*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1170*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
1171*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
1172*9880d681SAndroid Build Coastguard Worker}
1173*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8>, <16 x i8>) nounwind readnone
1174*9880d681SAndroid Build Coastguard Worker
1175*9880d681SAndroid Build Coastguard Worker
1176*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psubus_w(<8 x i16> %a0, <8 x i16> %a1) {
1177*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psubus_w:
1178*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1179*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsubusw %xmm1, %xmm0, %xmm0
1180*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1181*9880d681SAndroid Build Coastguard Worker;
1182*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psubus_w:
1183*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1184*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsubusw %xmm1, %xmm0, %xmm0
1185*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1186*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1187*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1188*9880d681SAndroid Build Coastguard Worker}
1189*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16>, <8 x i16>) nounwind readnone
1190*9880d681SAndroid Build Coastguard Worker
1191*9880d681SAndroid Build Coastguard Worker
1192*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_sqrt_pd(<2 x double> %a0) {
1193*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_sqrt_pd:
1194*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1195*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vsqrtpd %xmm0, %xmm0
1196*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1197*9880d681SAndroid Build Coastguard Worker;
1198*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_sqrt_pd:
1199*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1200*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vsqrtpd %xmm0, %xmm0
1201*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1202*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double> %a0) ; <<2 x double>> [#uses=1]
1203*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1204*9880d681SAndroid Build Coastguard Worker}
1205*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double>) nounwind readnone
1206*9880d681SAndroid Build Coastguard Worker
1207*9880d681SAndroid Build Coastguard Worker
1208*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_sqrt_sd(<2 x double> %a0) {
1209*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_sqrt_sd:
1210*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1211*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0
1212*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1213*9880d681SAndroid Build Coastguard Worker;
1214*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_sqrt_sd:
1215*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1216*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0
1217*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1218*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %a0) ; <<2 x double>> [#uses=1]
1219*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1220*9880d681SAndroid Build Coastguard Worker}
1221*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double>) nounwind readnone
1222*9880d681SAndroid Build Coastguard Worker
1223*9880d681SAndroid Build Coastguard Worker
1224*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_sub_sd(<2 x double> %a0, <2 x double> %a1) {
1225*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_sub_sd:
1226*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1227*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vsubsd %xmm1, %xmm0, %xmm0
1228*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1229*9880d681SAndroid Build Coastguard Worker;
1230*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_sub_sd:
1231*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1232*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vsubsd %xmm1, %xmm0, %xmm0
1233*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1234*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
1235*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1236*9880d681SAndroid Build Coastguard Worker}
1237*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sub.sd(<2 x double>, <2 x double>) nounwind readnone
1238*9880d681SAndroid Build Coastguard Worker
1239*9880d681SAndroid Build Coastguard Worker
1240*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomieq_sd(<2 x double> %a0, <2 x double> %a1) {
1241*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomieq_sd:
1242*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1243*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomisd %xmm1, %xmm0
1244*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setnp %al
1245*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %cl
1246*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andb %al, %cl
1247*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movzbl %cl, %eax
1248*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1249*9880d681SAndroid Build Coastguard Worker;
1250*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomieq_sd:
1251*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1252*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomisd %xmm1, %xmm0
1253*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setnp %al
1254*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %cl
1255*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andb %al, %cl
1256*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movzbl %cl, %eax
1257*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1258*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1259*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1260*9880d681SAndroid Build Coastguard Worker}
1261*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) nounwind readnone
1262*9880d681SAndroid Build Coastguard Worker
1263*9880d681SAndroid Build Coastguard Worker
1264*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomige_sd(<2 x double> %a0, <2 x double> %a1) {
1265*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomige_sd:
1266*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1267*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
1268*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomisd %xmm1, %xmm0
1269*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setae %al
1270*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1271*9880d681SAndroid Build Coastguard Worker;
1272*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomige_sd:
1273*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1274*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
1275*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomisd %xmm1, %xmm0
1276*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setae %al
1277*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1278*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1279*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1280*9880d681SAndroid Build Coastguard Worker}
1281*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>) nounwind readnone
1282*9880d681SAndroid Build Coastguard Worker
1283*9880d681SAndroid Build Coastguard Worker
1284*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomigt_sd(<2 x double> %a0, <2 x double> %a1) {
1285*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomigt_sd:
1286*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1287*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
1288*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomisd %xmm1, %xmm0
1289*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
1290*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1291*9880d681SAndroid Build Coastguard Worker;
1292*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomigt_sd:
1293*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1294*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
1295*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomisd %xmm1, %xmm0
1296*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
1297*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1298*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1299*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1300*9880d681SAndroid Build Coastguard Worker}
1301*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>) nounwind readnone
1302*9880d681SAndroid Build Coastguard Worker
1303*9880d681SAndroid Build Coastguard Worker
1304*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomile_sd(<2 x double> %a0, <2 x double> %a1) {
1305*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomile_sd:
1306*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1307*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
1308*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomisd %xmm0, %xmm1
1309*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setae %al
1310*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1311*9880d681SAndroid Build Coastguard Worker;
1312*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomile_sd:
1313*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1314*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
1315*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomisd %xmm0, %xmm1
1316*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setae %al
1317*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1318*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1319*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1320*9880d681SAndroid Build Coastguard Worker}
1321*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>) nounwind readnone
1322*9880d681SAndroid Build Coastguard Worker
1323*9880d681SAndroid Build Coastguard Worker
1324*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomilt_sd(<2 x double> %a0, <2 x double> %a1) {
1325*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomilt_sd:
1326*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1327*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
1328*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomisd %xmm0, %xmm1
1329*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
1330*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1331*9880d681SAndroid Build Coastguard Worker;
1332*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomilt_sd:
1333*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1334*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
1335*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomisd %xmm0, %xmm1
1336*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
1337*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1338*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1339*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1340*9880d681SAndroid Build Coastguard Worker}
1341*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>) nounwind readnone
1342*9880d681SAndroid Build Coastguard Worker
1343*9880d681SAndroid Build Coastguard Worker
1344*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomineq_sd(<2 x double> %a0, <2 x double> %a1) {
1345*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomineq_sd:
1346*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1347*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomisd %xmm1, %xmm0
1348*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setp %al
1349*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setne %cl
1350*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    orb %al, %cl
1351*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movzbl %cl, %eax
1352*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1353*9880d681SAndroid Build Coastguard Worker;
1354*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomineq_sd:
1355*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1356*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomisd %xmm1, %xmm0
1357*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setp %al
1358*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setne %cl
1359*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    orb %al, %cl
1360*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movzbl %cl, %eax
1361*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1362*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1363*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1364*9880d681SAndroid Build Coastguard Worker}
1365*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>) nounwind readnone
1366*9880d681SAndroid Build Coastguard Worker
1367*9880d681SAndroid Build Coastguard Worker
1368*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse3_addsub_pd(<2 x double> %a0, <2 x double> %a1) {
1369*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_addsub_pd:
1370*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1371*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaddsubpd %xmm1, %xmm0, %xmm0
1372*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1373*9880d681SAndroid Build Coastguard Worker;
1374*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_addsub_pd:
1375*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1376*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaddsubpd %xmm1, %xmm0, %xmm0
1377*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1378*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
1379*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1380*9880d681SAndroid Build Coastguard Worker}
1381*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double>, <2 x double>) nounwind readnone
1382*9880d681SAndroid Build Coastguard Worker
1383*9880d681SAndroid Build Coastguard Worker
1384*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse3_addsub_ps(<4 x float> %a0, <4 x float> %a1) {
1385*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_addsub_ps:
1386*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1387*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaddsubps %xmm1, %xmm0, %xmm0
1388*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1389*9880d681SAndroid Build Coastguard Worker;
1390*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_addsub_ps:
1391*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1392*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaddsubps %xmm1, %xmm0, %xmm0
1393*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1394*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1395*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1396*9880d681SAndroid Build Coastguard Worker}
1397*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float>, <4 x float>) nounwind readnone
1398*9880d681SAndroid Build Coastguard Worker
1399*9880d681SAndroid Build Coastguard Worker
1400*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse3_hadd_pd(<2 x double> %a0, <2 x double> %a1) {
1401*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_hadd_pd:
1402*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1403*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vhaddpd %xmm1, %xmm0, %xmm0
1404*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1405*9880d681SAndroid Build Coastguard Worker;
1406*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_hadd_pd:
1407*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1408*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vhaddpd %xmm1, %xmm0, %xmm0
1409*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1410*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
1411*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1412*9880d681SAndroid Build Coastguard Worker}
1413*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double>, <2 x double>) nounwind readnone
1414*9880d681SAndroid Build Coastguard Worker
1415*9880d681SAndroid Build Coastguard Worker
1416*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse3_hadd_ps(<4 x float> %a0, <4 x float> %a1) {
1417*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_hadd_ps:
1418*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1419*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vhaddps %xmm1, %xmm0, %xmm0
1420*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1421*9880d681SAndroid Build Coastguard Worker;
1422*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_hadd_ps:
1423*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1424*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vhaddps %xmm1, %xmm0, %xmm0
1425*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1426*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1427*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1428*9880d681SAndroid Build Coastguard Worker}
1429*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float>, <4 x float>) nounwind readnone
1430*9880d681SAndroid Build Coastguard Worker
1431*9880d681SAndroid Build Coastguard Worker
1432*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse3_hsub_pd(<2 x double> %a0, <2 x double> %a1) {
1433*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_hsub_pd:
1434*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1435*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vhsubpd %xmm1, %xmm0, %xmm0
1436*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1437*9880d681SAndroid Build Coastguard Worker;
1438*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_hsub_pd:
1439*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1440*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vhsubpd %xmm1, %xmm0, %xmm0
1441*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1442*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
1443*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1444*9880d681SAndroid Build Coastguard Worker}
1445*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double>, <2 x double>) nounwind readnone
1446*9880d681SAndroid Build Coastguard Worker
1447*9880d681SAndroid Build Coastguard Worker
1448*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse3_hsub_ps(<4 x float> %a0, <4 x float> %a1) {
1449*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_hsub_ps:
1450*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1451*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vhsubps %xmm1, %xmm0, %xmm0
1452*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1453*9880d681SAndroid Build Coastguard Worker;
1454*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_hsub_ps:
1455*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1456*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vhsubps %xmm1, %xmm0, %xmm0
1457*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1458*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1459*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1460*9880d681SAndroid Build Coastguard Worker}
1461*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float>, <4 x float>) nounwind readnone
1462*9880d681SAndroid Build Coastguard Worker
1463*9880d681SAndroid Build Coastguard Worker
1464*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse3_ldu_dq(i8* %a0) {
1465*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_ldu_dq:
1466*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1467*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
1468*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vlddqu (%eax), %xmm0
1469*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1470*9880d681SAndroid Build Coastguard Worker;
1471*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_ldu_dq:
1472*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1473*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
1474*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vlddqu (%eax), %xmm0
1475*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1476*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse3.ldu.dq(i8* %a0) ; <<16 x i8>> [#uses=1]
1477*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
1478*9880d681SAndroid Build Coastguard Worker}
1479*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse3.ldu.dq(i8*) nounwind readonly
1480*9880d681SAndroid Build Coastguard Worker
1481*9880d681SAndroid Build Coastguard Worker
1482*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
1483*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_blendvpd:
1484*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1485*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1486*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1487*9880d681SAndroid Build Coastguard Worker;
1488*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_blendvpd:
1489*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1490*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1491*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1492*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) ; <<2 x double>> [#uses=1]
1493*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1494*9880d681SAndroid Build Coastguard Worker}
1495*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.blendvpd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
1496*9880d681SAndroid Build Coastguard Worker
1497*9880d681SAndroid Build Coastguard Worker
1498*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
1499*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_blendvps:
1500*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1501*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vblendvps %xmm2, %xmm1, %xmm0, %xmm0
1502*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1503*9880d681SAndroid Build Coastguard Worker;
1504*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_blendvps:
1505*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1506*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vblendvps %xmm2, %xmm1, %xmm0, %xmm0
1507*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1508*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) ; <<4 x float>> [#uses=1]
1509*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1510*9880d681SAndroid Build Coastguard Worker}
1511*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.blendvps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
1512*9880d681SAndroid Build Coastguard Worker
1513*9880d681SAndroid Build Coastguard Worker
1514*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_dppd(<2 x double> %a0, <2 x double> %a1) {
1515*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_dppd:
1516*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1517*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vdppd $7, %xmm1, %xmm0, %xmm0
1518*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1519*9880d681SAndroid Build Coastguard Worker;
1520*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_dppd:
1521*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1522*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vdppd $7, %xmm1, %xmm0, %xmm0
1523*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1524*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse41.dppd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1]
1525*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1526*9880d681SAndroid Build Coastguard Worker}
1527*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.dppd(<2 x double>, <2 x double>, i8) nounwind readnone
1528*9880d681SAndroid Build Coastguard Worker
1529*9880d681SAndroid Build Coastguard Worker
1530*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_dpps(<4 x float> %a0, <4 x float> %a1) {
1531*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_dpps:
1532*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1533*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vdpps $7, %xmm1, %xmm0, %xmm0
1534*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1535*9880d681SAndroid Build Coastguard Worker;
1536*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_dpps:
1537*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1538*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vdpps $7, %xmm1, %xmm0, %xmm0
1539*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1540*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse41.dpps(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
1541*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1542*9880d681SAndroid Build Coastguard Worker}
1543*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.dpps(<4 x float>, <4 x float>, i8) nounwind readnone
1544*9880d681SAndroid Build Coastguard Worker
1545*9880d681SAndroid Build Coastguard Worker
1546*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_insertps(<4 x float> %a0, <4 x float> %a1) {
1547*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_insertps:
1548*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1549*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vinsertps {{.*#+}} xmm0 = zero,xmm1[0],zero,xmm0[3]
1550*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1551*9880d681SAndroid Build Coastguard Worker;
1552*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_insertps:
1553*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1554*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vinsertps {{.*#+}} xmm0 = zero,xmm1[0],zero,xmm0[3]
1555*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1556*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a0, <4 x float> %a1, i8 21) ; <<4 x float>> [#uses=1]
1557*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1558*9880d681SAndroid Build Coastguard Worker}
1559*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8) nounwind readnone
1560*9880d681SAndroid Build Coastguard Worker
1561*9880d681SAndroid Build Coastguard Worker
1562*9880d681SAndroid Build Coastguard Worker
1563*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_mpsadbw(<16 x i8> %a0, <16 x i8> %a1) {
1564*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_mpsadbw:
1565*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1566*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmpsadbw $7, %xmm1, %xmm0, %xmm0
1567*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1568*9880d681SAndroid Build Coastguard Worker;
1569*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_mpsadbw:
1570*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1571*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmpsadbw $7, %xmm1, %xmm0, %xmm0
1572*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1573*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <<8 x i16>> [#uses=1]
1574*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1575*9880d681SAndroid Build Coastguard Worker}
1576*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8>, <16 x i8>, i8) nounwind readnone
1577*9880d681SAndroid Build Coastguard Worker
1578*9880d681SAndroid Build Coastguard Worker
1579*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_packusdw(<4 x i32> %a0, <4 x i32> %a1) {
1580*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_packusdw:
1581*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1582*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpackusdw %xmm1, %xmm0, %xmm0
1583*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1584*9880d681SAndroid Build Coastguard Worker;
1585*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_packusdw:
1586*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1587*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpackusdw %xmm1, %xmm0, %xmm0
1588*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1589*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32> %a0, <4 x i32> %a1) ; <<8 x i16>> [#uses=1]
1590*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1591*9880d681SAndroid Build Coastguard Worker}
1592*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32>, <4 x i32>) nounwind readnone
1593*9880d681SAndroid Build Coastguard Worker
1594*9880d681SAndroid Build Coastguard Worker
1595*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse41_pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {
1596*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pblendvb:
1597*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1598*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpblendvb %xmm2, %xmm1, %xmm0, %xmm0
1599*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1600*9880d681SAndroid Build Coastguard Worker;
1601*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pblendvb:
1602*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1603*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpblendvb %xmm2, %xmm1, %xmm0, %xmm0
1604*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1605*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) ; <<16 x i8>> [#uses=1]
1606*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
1607*9880d681SAndroid Build Coastguard Worker}
1608*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone
1609*9880d681SAndroid Build Coastguard Worker
1610*9880d681SAndroid Build Coastguard Worker
1611*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_phminposuw(<8 x i16> %a0) {
1612*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_phminposuw:
1613*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1614*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vphminposuw %xmm0, %xmm0
1615*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1616*9880d681SAndroid Build Coastguard Worker;
1617*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_phminposuw:
1618*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1619*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vphminposuw %xmm0, %xmm0
1620*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1621*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16> %a0) ; <<8 x i16>> [#uses=1]
1622*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1623*9880d681SAndroid Build Coastguard Worker}
1624*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16>) nounwind readnone
1625*9880d681SAndroid Build Coastguard Worker
1626*9880d681SAndroid Build Coastguard Worker
1627*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse41_pmaxsb(<16 x i8> %a0, <16 x i8> %a1) {
1628*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmaxsb:
1629*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1630*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0
1631*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1632*9880d681SAndroid Build Coastguard Worker;
1633*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmaxsb:
1634*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1635*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0
1636*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1637*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
1638*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
1639*9880d681SAndroid Build Coastguard Worker}
1640*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8>, <16 x i8>) nounwind readnone
1641*9880d681SAndroid Build Coastguard Worker
1642*9880d681SAndroid Build Coastguard Worker
1643*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pmaxsd(<4 x i32> %a0, <4 x i32> %a1) {
1644*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmaxsd:
1645*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1646*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm0
1647*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1648*9880d681SAndroid Build Coastguard Worker;
1649*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmaxsd:
1650*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1651*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm0
1652*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1653*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1654*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
1655*9880d681SAndroid Build Coastguard Worker}
1656*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) nounwind readnone
1657*9880d681SAndroid Build Coastguard Worker
1658*9880d681SAndroid Build Coastguard Worker
1659*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pmaxud(<4 x i32> %a0, <4 x i32> %a1) {
1660*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmaxud:
1661*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1662*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmaxud %xmm1, %xmm0, %xmm0
1663*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1664*9880d681SAndroid Build Coastguard Worker;
1665*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmaxud:
1666*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1667*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmaxud %xmm1, %xmm0, %xmm0
1668*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1669*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1670*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
1671*9880d681SAndroid Build Coastguard Worker}
1672*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32>, <4 x i32>) nounwind readnone
1673*9880d681SAndroid Build Coastguard Worker
1674*9880d681SAndroid Build Coastguard Worker
1675*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_pmaxuw(<8 x i16> %a0, <8 x i16> %a1) {
1676*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmaxuw:
1677*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1678*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm0
1679*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1680*9880d681SAndroid Build Coastguard Worker;
1681*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmaxuw:
1682*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1683*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm0
1684*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1685*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1686*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1687*9880d681SAndroid Build Coastguard Worker}
1688*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16>, <8 x i16>) nounwind readnone
1689*9880d681SAndroid Build Coastguard Worker
1690*9880d681SAndroid Build Coastguard Worker
1691*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse41_pminsb(<16 x i8> %a0, <16 x i8> %a1) {
1692*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pminsb:
1693*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1694*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpminsb %xmm1, %xmm0, %xmm0
1695*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1696*9880d681SAndroid Build Coastguard Worker;
1697*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pminsb:
1698*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1699*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpminsb %xmm1, %xmm0, %xmm0
1700*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1701*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
1702*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
1703*9880d681SAndroid Build Coastguard Worker}
1704*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8>, <16 x i8>) nounwind readnone
1705*9880d681SAndroid Build Coastguard Worker
1706*9880d681SAndroid Build Coastguard Worker
1707*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pminsd(<4 x i32> %a0, <4 x i32> %a1) {
1708*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pminsd:
1709*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1710*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpminsd %xmm1, %xmm0, %xmm0
1711*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1712*9880d681SAndroid Build Coastguard Worker;
1713*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pminsd:
1714*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1715*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpminsd %xmm1, %xmm0, %xmm0
1716*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1717*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1718*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
1719*9880d681SAndroid Build Coastguard Worker}
1720*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32>, <4 x i32>) nounwind readnone
1721*9880d681SAndroid Build Coastguard Worker
1722*9880d681SAndroid Build Coastguard Worker
1723*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pminud(<4 x i32> %a0, <4 x i32> %a1) {
1724*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pminud:
1725*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1726*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpminud %xmm1, %xmm0, %xmm0
1727*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1728*9880d681SAndroid Build Coastguard Worker;
1729*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pminud:
1730*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1731*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpminud %xmm1, %xmm0, %xmm0
1732*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1733*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pminud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1734*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
1735*9880d681SAndroid Build Coastguard Worker}
1736*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pminud(<4 x i32>, <4 x i32>) nounwind readnone
1737*9880d681SAndroid Build Coastguard Worker
1738*9880d681SAndroid Build Coastguard Worker
1739*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_pminuw(<8 x i16> %a0, <8 x i16> %a1) {
1740*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pminuw:
1741*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1742*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpminuw %xmm1, %xmm0, %xmm0
1743*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1744*9880d681SAndroid Build Coastguard Worker;
1745*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pminuw:
1746*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1747*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpminuw %xmm1, %xmm0, %xmm0
1748*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1749*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1750*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1751*9880d681SAndroid Build Coastguard Worker}
1752*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16>, <8 x i16>) nounwind readnone
1753*9880d681SAndroid Build Coastguard Worker
1754*9880d681SAndroid Build Coastguard Worker
1755*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse41_pmuldq(<4 x i32> %a0, <4 x i32> %a1) {
1756*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmuldq:
1757*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1758*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmuldq %xmm1, %xmm0, %xmm0
1759*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1760*9880d681SAndroid Build Coastguard Worker;
1761*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmuldq:
1762*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1763*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmuldq %xmm1, %xmm0, %xmm0
1764*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1765*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32> %a0, <4 x i32> %a1) ; <<2 x i64>> [#uses=1]
1766*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
1767*9880d681SAndroid Build Coastguard Worker}
1768*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32>, <4 x i32>) nounwind readnone
1769*9880d681SAndroid Build Coastguard Worker
1770*9880d681SAndroid Build Coastguard Worker
1771*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse41_ptestc(<2 x i64> %a0, <2 x i64> %a1) {
1772*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_ptestc:
1773*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1774*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vptest %xmm1, %xmm0
1775*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sbbl %eax, %eax
1776*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andl $1, %eax
1777*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1778*9880d681SAndroid Build Coastguard Worker;
1779*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_ptestc:
1780*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1781*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vptest %xmm1, %xmm0
1782*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sbbl %eax, %eax
1783*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andl $1, %eax
1784*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1785*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse41.ptestc(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1]
1786*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1787*9880d681SAndroid Build Coastguard Worker}
1788*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse41.ptestc(<2 x i64>, <2 x i64>) nounwind readnone
1789*9880d681SAndroid Build Coastguard Worker
1790*9880d681SAndroid Build Coastguard Worker
1791*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse41_ptestnzc(<2 x i64> %a0, <2 x i64> %a1) {
1792*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_ptestnzc:
1793*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1794*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
1795*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vptest %xmm1, %xmm0
1796*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
1797*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1798*9880d681SAndroid Build Coastguard Worker;
1799*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_ptestnzc:
1800*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1801*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
1802*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vptest %xmm1, %xmm0
1803*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
1804*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1805*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse41.ptestnzc(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1]
1806*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1807*9880d681SAndroid Build Coastguard Worker}
1808*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse41.ptestnzc(<2 x i64>, <2 x i64>) nounwind readnone
1809*9880d681SAndroid Build Coastguard Worker
1810*9880d681SAndroid Build Coastguard Worker
1811*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse41_ptestz(<2 x i64> %a0, <2 x i64> %a1) {
1812*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_ptestz:
1813*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1814*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
1815*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vptest %xmm1, %xmm0
1816*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %al
1817*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1818*9880d681SAndroid Build Coastguard Worker;
1819*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_ptestz:
1820*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1821*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
1822*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vptest %xmm1, %xmm0
1823*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %al
1824*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1825*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse41.ptestz(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1]
1826*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1827*9880d681SAndroid Build Coastguard Worker}
1828*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse41.ptestz(<2 x i64>, <2 x i64>) nounwind readnone
1829*9880d681SAndroid Build Coastguard Worker
1830*9880d681SAndroid Build Coastguard Worker
1831*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_round_pd(<2 x double> %a0) {
1832*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_round_pd:
1833*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1834*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vroundpd $7, %xmm0, %xmm0
1835*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1836*9880d681SAndroid Build Coastguard Worker;
1837*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_round_pd:
1838*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1839*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vroundpd $7, %xmm0, %xmm0
1840*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1841*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %a0, i32 7) ; <<2 x double>> [#uses=1]
1842*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1843*9880d681SAndroid Build Coastguard Worker}
1844*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.round.pd(<2 x double>, i32) nounwind readnone
1845*9880d681SAndroid Build Coastguard Worker
1846*9880d681SAndroid Build Coastguard Worker
1847*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_round_ps(<4 x float> %a0) {
1848*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_round_ps:
1849*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1850*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vroundps $7, %xmm0, %xmm0
1851*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1852*9880d681SAndroid Build Coastguard Worker;
1853*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_round_ps:
1854*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1855*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vroundps $7, %xmm0, %xmm0
1856*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1857*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1]
1858*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1859*9880d681SAndroid Build Coastguard Worker}
1860*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.round.ps(<4 x float>, i32) nounwind readnone
1861*9880d681SAndroid Build Coastguard Worker
1862*9880d681SAndroid Build Coastguard Worker
1863*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_round_sd(<2 x double> %a0, <2 x double> %a1) {
1864*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_round_sd:
1865*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1866*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vroundsd $7, %xmm1, %xmm0, %xmm0
1867*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1868*9880d681SAndroid Build Coastguard Worker;
1869*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_round_sd:
1870*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1871*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vroundsd $7, %xmm1, %xmm0, %xmm0
1872*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1873*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse41.round.sd(<2 x double> %a0, <2 x double> %a1, i32 7) ; <<2 x double>> [#uses=1]
1874*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1875*9880d681SAndroid Build Coastguard Worker}
1876*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.round.sd(<2 x double>, <2 x double>, i32) nounwind readnone
1877*9880d681SAndroid Build Coastguard Worker
1878*9880d681SAndroid Build Coastguard Worker
1879*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_round_ss(<4 x float> %a0, <4 x float> %a1) {
1880*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_round_ss:
1881*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1882*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vroundss $7, %xmm1, %xmm0, %xmm0
1883*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1884*9880d681SAndroid Build Coastguard Worker;
1885*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_round_ss:
1886*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1887*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vroundss $7, %xmm1, %xmm0, %xmm0
1888*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1889*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse41.round.ss(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1]
1890*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1891*9880d681SAndroid Build Coastguard Worker}
1892*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) nounwind readnone
1893*9880d681SAndroid Build Coastguard Worker
1894*9880d681SAndroid Build Coastguard Worker
1895*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestri128(<16 x i8> %a0, <16 x i8> %a2) {
1896*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestri128:
1897*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1898*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
1899*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %edx
1900*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpestri $7, %xmm1, %xmm0
1901*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl %ecx, %eax
1902*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1903*9880d681SAndroid Build Coastguard Worker;
1904*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestri128:
1905*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1906*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
1907*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %edx
1908*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpestri $7, %xmm1, %xmm0
1909*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl %ecx, %eax
1910*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1911*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
1912*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1913*9880d681SAndroid Build Coastguard Worker}
1914*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestri128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1915*9880d681SAndroid Build Coastguard Worker
1916*9880d681SAndroid Build Coastguard Worker
1917*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestri128_load(<16 x i8>* %a0, <16 x i8>* %a2) {
1918*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestri128_load:
1919*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1920*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1921*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
1922*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovdqa (%eax), %xmm0
1923*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
1924*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %edx
1925*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpestri $7, (%ecx), %xmm0
1926*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl %ecx, %eax
1927*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1928*9880d681SAndroid Build Coastguard Worker;
1929*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestri128_load:
1930*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1931*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1932*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
1933*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmovdqa64 (%eax), %xmm0
1934*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
1935*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %edx
1936*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpestri $7, (%ecx), %xmm0
1937*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl %ecx, %eax
1938*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1939*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a0
1940*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %a2
1941*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %1, i32 7, <16 x i8> %2, i32 7, i8 7) ; <i32> [#uses=1]
1942*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1943*9880d681SAndroid Build Coastguard Worker}
1944*9880d681SAndroid Build Coastguard Worker
1945*9880d681SAndroid Build Coastguard Worker
1946*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestria128(<16 x i8> %a0, <16 x i8> %a2) nounwind {
1947*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestria128:
1948*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1949*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    pushl %ebx
1950*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
1951*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %edx
1952*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %ebx, %ebx
1953*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpestri $7, %xmm1, %xmm0
1954*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %bl
1955*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl %ebx, %eax
1956*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    popl %ebx
1957*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1958*9880d681SAndroid Build Coastguard Worker;
1959*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestria128:
1960*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1961*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    pushl %ebx
1962*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
1963*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %edx
1964*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %ebx, %ebx
1965*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpestri $7, %xmm1, %xmm0
1966*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %bl
1967*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl %ebx, %eax
1968*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    popl %ebx
1969*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1970*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpestria128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
1971*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1972*9880d681SAndroid Build Coastguard Worker}
1973*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestria128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1974*9880d681SAndroid Build Coastguard Worker
1975*9880d681SAndroid Build Coastguard Worker
1976*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestric128(<16 x i8> %a0, <16 x i8> %a2) {
1977*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestric128:
1978*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
1979*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
1980*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %edx
1981*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpestri $7, %xmm1, %xmm0
1982*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sbbl %eax, %eax
1983*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andl $1, %eax
1984*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
1985*9880d681SAndroid Build Coastguard Worker;
1986*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestric128:
1987*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
1988*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
1989*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %edx
1990*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpestri $7, %xmm1, %xmm0
1991*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sbbl %eax, %eax
1992*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andl $1, %eax
1993*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
1994*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpestric128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
1995*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1996*9880d681SAndroid Build Coastguard Worker}
1997*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestric128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1998*9880d681SAndroid Build Coastguard Worker
1999*9880d681SAndroid Build Coastguard Worker
2000*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestrio128(<16 x i8> %a0, <16 x i8> %a2) nounwind {
2001*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestrio128:
2002*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2003*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    pushl %ebx
2004*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
2005*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %edx
2006*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %ebx, %ebx
2007*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpestri $7, %xmm1, %xmm0
2008*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seto %bl
2009*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl %ebx, %eax
2010*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    popl %ebx
2011*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2012*9880d681SAndroid Build Coastguard Worker;
2013*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestrio128:
2014*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2015*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    pushl %ebx
2016*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
2017*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %edx
2018*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %ebx, %ebx
2019*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpestri $7, %xmm1, %xmm0
2020*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seto %bl
2021*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl %ebx, %eax
2022*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    popl %ebx
2023*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2024*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
2025*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2026*9880d681SAndroid Build Coastguard Worker}
2027*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
2028*9880d681SAndroid Build Coastguard Worker
2029*9880d681SAndroid Build Coastguard Worker
2030*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestris128(<16 x i8> %a0, <16 x i8> %a2) nounwind {
2031*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestris128:
2032*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2033*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    pushl %ebx
2034*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
2035*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %edx
2036*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %ebx, %ebx
2037*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpestri $7, %xmm1, %xmm0
2038*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sets %bl
2039*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl %ebx, %eax
2040*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    popl %ebx
2041*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2042*9880d681SAndroid Build Coastguard Worker;
2043*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestris128:
2044*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2045*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    pushl %ebx
2046*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
2047*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %edx
2048*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %ebx, %ebx
2049*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpestri $7, %xmm1, %xmm0
2050*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sets %bl
2051*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl %ebx, %eax
2052*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    popl %ebx
2053*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2054*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpestris128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
2055*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2056*9880d681SAndroid Build Coastguard Worker}
2057*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestris128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
2058*9880d681SAndroid Build Coastguard Worker
2059*9880d681SAndroid Build Coastguard Worker
2060*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestriz128(<16 x i8> %a0, <16 x i8> %a2) nounwind {
2061*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestriz128:
2062*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2063*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    pushl %ebx
2064*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
2065*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %edx
2066*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %ebx, %ebx
2067*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpestri $7, %xmm1, %xmm0
2068*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %bl
2069*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl %ebx, %eax
2070*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    popl %ebx
2071*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2072*9880d681SAndroid Build Coastguard Worker;
2073*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestriz128:
2074*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2075*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    pushl %ebx
2076*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
2077*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %edx
2078*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %ebx, %ebx
2079*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpestri $7, %xmm1, %xmm0
2080*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %bl
2081*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl %ebx, %eax
2082*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    popl %ebx
2083*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2084*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
2085*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2086*9880d681SAndroid Build Coastguard Worker}
2087*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
2088*9880d681SAndroid Build Coastguard Worker
2089*9880d681SAndroid Build Coastguard Worker
2090*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpestrm128(<16 x i8> %a0, <16 x i8> %a2) {
2091*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestrm128:
2092*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2093*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
2094*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %edx
2095*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpestrm $7, %xmm1, %xmm0
2096*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2097*9880d681SAndroid Build Coastguard Worker;
2098*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestrm128:
2099*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2100*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
2101*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %edx
2102*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpestrm $7, %xmm1, %xmm0
2103*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2104*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <<16 x i8>> [#uses=1]
2105*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2106*9880d681SAndroid Build Coastguard Worker}
2107*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
2108*9880d681SAndroid Build Coastguard Worker
2109*9880d681SAndroid Build Coastguard Worker
2110*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpestrm128_load(<16 x i8> %a0, <16 x i8>* %a2) {
2111*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestrm128_load:
2112*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2113*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2114*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
2115*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %edx
2116*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpestrm $7, (%ecx), %xmm0
2117*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2118*9880d681SAndroid Build Coastguard Worker;
2119*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestrm128_load:
2120*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2121*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2122*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
2123*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %edx
2124*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpestrm $7, (%ecx), %xmm0
2125*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2126*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a2
2127*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %1, i32 7, i8 7) ; <<16 x i8>> [#uses=1]
2128*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2129*9880d681SAndroid Build Coastguard Worker}
2130*9880d681SAndroid Build Coastguard Worker
2131*9880d681SAndroid Build Coastguard Worker
2132*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistri128(<16 x i8> %a0, <16 x i8> %a1) {
2133*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistri128:
2134*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2135*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2136*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl %ecx, %eax
2137*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2138*9880d681SAndroid Build Coastguard Worker;
2139*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistri128:
2140*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2141*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2142*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl %ecx, %eax
2143*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2144*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
2145*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2146*9880d681SAndroid Build Coastguard Worker}
2147*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistri128(<16 x i8>, <16 x i8>, i8) nounwind readnone
2148*9880d681SAndroid Build Coastguard Worker
2149*9880d681SAndroid Build Coastguard Worker
2150*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistri128_load(<16 x i8>* %a0, <16 x i8>* %a1) {
2151*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistri128_load:
2152*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2153*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
2154*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2155*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovdqa (%ecx), %xmm0
2156*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpistri $7, (%eax), %xmm0
2157*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl %ecx, %eax
2158*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2159*9880d681SAndroid Build Coastguard Worker;
2160*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistri128_load:
2161*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2162*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
2163*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2164*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmovdqa64 (%ecx), %xmm0
2165*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpistri $7, (%eax), %xmm0
2166*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl %ecx, %eax
2167*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2168*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a0
2169*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %a1
2170*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %1, <16 x i8> %2, i8 7) ; <i32> [#uses=1]
2171*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2172*9880d681SAndroid Build Coastguard Worker}
2173*9880d681SAndroid Build Coastguard Worker
2174*9880d681SAndroid Build Coastguard Worker
2175*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistria128(<16 x i8> %a0, <16 x i8> %a1) {
2176*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistria128:
2177*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2178*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2179*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2180*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
2181*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2182*9880d681SAndroid Build Coastguard Worker;
2183*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistria128:
2184*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2185*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2186*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2187*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
2188*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2189*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpistria128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
2190*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2191*9880d681SAndroid Build Coastguard Worker}
2192*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistria128(<16 x i8>, <16 x i8>, i8) nounwind readnone
2193*9880d681SAndroid Build Coastguard Worker
2194*9880d681SAndroid Build Coastguard Worker
2195*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistric128(<16 x i8> %a0, <16 x i8> %a1) {
2196*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistric128:
2197*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2198*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2199*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sbbl %eax, %eax
2200*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andl $1, %eax
2201*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2202*9880d681SAndroid Build Coastguard Worker;
2203*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistric128:
2204*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2205*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2206*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sbbl %eax, %eax
2207*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andl $1, %eax
2208*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2209*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpistric128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
2210*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2211*9880d681SAndroid Build Coastguard Worker}
2212*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistric128(<16 x i8>, <16 x i8>, i8) nounwind readnone
2213*9880d681SAndroid Build Coastguard Worker
2214*9880d681SAndroid Build Coastguard Worker
2215*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1) {
2216*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistrio128:
2217*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2218*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2219*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2220*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seto %al
2221*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2222*9880d681SAndroid Build Coastguard Worker;
2223*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistrio128:
2224*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2225*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2226*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2227*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seto %al
2228*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2229*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
2230*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2231*9880d681SAndroid Build Coastguard Worker}
2232*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8>, <16 x i8>, i8) nounwind readnone
2233*9880d681SAndroid Build Coastguard Worker
2234*9880d681SAndroid Build Coastguard Worker
2235*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistris128(<16 x i8> %a0, <16 x i8> %a1) {
2236*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistris128:
2237*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2238*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2239*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2240*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sets %al
2241*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2242*9880d681SAndroid Build Coastguard Worker;
2243*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistris128:
2244*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2245*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2246*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2247*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sets %al
2248*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2249*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpistris128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
2250*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2251*9880d681SAndroid Build Coastguard Worker}
2252*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistris128(<16 x i8>, <16 x i8>, i8) nounwind readnone
2253*9880d681SAndroid Build Coastguard Worker
2254*9880d681SAndroid Build Coastguard Worker
2255*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1) {
2256*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistriz128:
2257*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2258*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2259*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2260*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %al
2261*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2262*9880d681SAndroid Build Coastguard Worker;
2263*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistriz128:
2264*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2265*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2266*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpistri $7, %xmm1, %xmm0
2267*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %al
2268*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2269*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
2270*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2271*9880d681SAndroid Build Coastguard Worker}
2272*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8>, <16 x i8>, i8) nounwind readnone
2273*9880d681SAndroid Build Coastguard Worker
2274*9880d681SAndroid Build Coastguard Worker
2275*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1) {
2276*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistrm128:
2277*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2278*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpistrm $7, %xmm1, %xmm0
2279*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2280*9880d681SAndroid Build Coastguard Worker;
2281*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistrm128:
2282*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2283*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpistrm $7, %xmm1, %xmm0
2284*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2285*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <<16 x i8>> [#uses=1]
2286*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2287*9880d681SAndroid Build Coastguard Worker}
2288*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8>, <16 x i8>, i8) nounwind readnone
2289*9880d681SAndroid Build Coastguard Worker
2290*9880d681SAndroid Build Coastguard Worker
2291*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpistrm128_load(<16 x i8> %a0, <16 x i8>* %a1) {
2292*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistrm128_load:
2293*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2294*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
2295*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpcmpistrm $7, (%eax), %xmm0
2296*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2297*9880d681SAndroid Build Coastguard Worker;
2298*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistrm128_load:
2299*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2300*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
2301*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpcmpistrm $7, (%eax), %xmm0
2302*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2303*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a1
2304*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %1, i8 7) ; <<16 x i8>> [#uses=1]
2305*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2306*9880d681SAndroid Build Coastguard Worker}
2307*9880d681SAndroid Build Coastguard Worker
2308*9880d681SAndroid Build Coastguard Worker
2309*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_add_ss(<4 x float> %a0, <4 x float> %a1) {
2310*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_add_ss:
2311*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2312*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaddss %xmm1, %xmm0, %xmm0
2313*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2314*9880d681SAndroid Build Coastguard Worker;
2315*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_add_ss:
2316*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2317*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaddss %xmm1, %xmm0, %xmm0
2318*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2319*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.add.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
2320*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2321*9880d681SAndroid Build Coastguard Worker}
2322*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.add.ss(<4 x float>, <4 x float>) nounwind readnone
2323*9880d681SAndroid Build Coastguard Worker
2324*9880d681SAndroid Build Coastguard Worker
2325*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cmp_ps(<4 x float> %a0, <4 x float> %a1) {
2326*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cmp_ps:
2327*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2328*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpordps %xmm1, %xmm0, %xmm0
2329*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2330*9880d681SAndroid Build Coastguard Worker;
2331*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cmp_ps:
2332*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2333*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpordps %xmm1, %xmm0, %xmm0
2334*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2335*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
2336*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2337*9880d681SAndroid Build Coastguard Worker}
2338*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
2339*9880d681SAndroid Build Coastguard Worker
2340*9880d681SAndroid Build Coastguard Worker
2341*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cmp_ss(<4 x float> %a0, <4 x float> %a1) {
2342*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cmp_ss:
2343*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2344*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpordss %xmm1, %xmm0, %xmm0
2345*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2346*9880d681SAndroid Build Coastguard Worker;
2347*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cmp_ss:
2348*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2349*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpordss %xmm1, %xmm0, %xmm0
2350*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2351*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
2352*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2353*9880d681SAndroid Build Coastguard Worker}
2354*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ss(<4 x float>, <4 x float>, i8) nounwind readnone
2355*9880d681SAndroid Build Coastguard Worker
2356*9880d681SAndroid Build Coastguard Worker
2357*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comieq_ss(<4 x float> %a0, <4 x float> %a1) {
2358*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comieq_ss:
2359*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2360*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomiss %xmm1, %xmm0
2361*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setnp %al
2362*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %cl
2363*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andb %al, %cl
2364*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movzbl %cl, %eax
2365*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2366*9880d681SAndroid Build Coastguard Worker;
2367*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comieq_ss:
2368*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2369*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomiss %xmm1, %xmm0
2370*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setnp %al
2371*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %cl
2372*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andb %al, %cl
2373*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movzbl %cl, %eax
2374*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2375*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.comieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2376*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2377*9880d681SAndroid Build Coastguard Worker}
2378*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comieq.ss(<4 x float>, <4 x float>) nounwind readnone
2379*9880d681SAndroid Build Coastguard Worker
2380*9880d681SAndroid Build Coastguard Worker
2381*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comige_ss(<4 x float> %a0, <4 x float> %a1) {
2382*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comige_ss:
2383*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2384*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2385*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomiss %xmm1, %xmm0
2386*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setae %al
2387*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2388*9880d681SAndroid Build Coastguard Worker;
2389*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comige_ss:
2390*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2391*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2392*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomiss %xmm1, %xmm0
2393*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setae %al
2394*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2395*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.comige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2396*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2397*9880d681SAndroid Build Coastguard Worker}
2398*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comige.ss(<4 x float>, <4 x float>) nounwind readnone
2399*9880d681SAndroid Build Coastguard Worker
2400*9880d681SAndroid Build Coastguard Worker
2401*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comigt_ss(<4 x float> %a0, <4 x float> %a1) {
2402*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comigt_ss:
2403*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2404*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2405*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomiss %xmm1, %xmm0
2406*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
2407*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2408*9880d681SAndroid Build Coastguard Worker;
2409*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comigt_ss:
2410*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2411*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2412*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomiss %xmm1, %xmm0
2413*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
2414*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2415*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.comigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2416*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2417*9880d681SAndroid Build Coastguard Worker}
2418*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comigt.ss(<4 x float>, <4 x float>) nounwind readnone
2419*9880d681SAndroid Build Coastguard Worker
2420*9880d681SAndroid Build Coastguard Worker
2421*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comile_ss(<4 x float> %a0, <4 x float> %a1) {
2422*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comile_ss:
2423*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2424*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2425*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomiss %xmm0, %xmm1
2426*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setae %al
2427*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2428*9880d681SAndroid Build Coastguard Worker;
2429*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comile_ss:
2430*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2431*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2432*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomiss %xmm0, %xmm1
2433*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setae %al
2434*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2435*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.comile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2436*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2437*9880d681SAndroid Build Coastguard Worker}
2438*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comile.ss(<4 x float>, <4 x float>) nounwind readnone
2439*9880d681SAndroid Build Coastguard Worker
2440*9880d681SAndroid Build Coastguard Worker
2441*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comilt_ss(<4 x float> %a0, <4 x float> %a1) {
2442*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comilt_ss:
2443*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2444*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2445*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomiss %xmm0, %xmm1
2446*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
2447*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2448*9880d681SAndroid Build Coastguard Worker;
2449*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comilt_ss:
2450*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2451*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2452*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomiss %xmm0, %xmm1
2453*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
2454*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2455*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.comilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2456*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2457*9880d681SAndroid Build Coastguard Worker}
2458*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comilt.ss(<4 x float>, <4 x float>) nounwind readnone
2459*9880d681SAndroid Build Coastguard Worker
2460*9880d681SAndroid Build Coastguard Worker
2461*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comineq_ss(<4 x float> %a0, <4 x float> %a1) {
2462*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comineq_ss:
2463*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2464*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcomiss %xmm1, %xmm0
2465*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setp %al
2466*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setne %cl
2467*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    orb %al, %cl
2468*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movzbl %cl, %eax
2469*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2470*9880d681SAndroid Build Coastguard Worker;
2471*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comineq_ss:
2472*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2473*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcomiss %xmm1, %xmm0
2474*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setp %al
2475*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setne %cl
2476*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    orb %al, %cl
2477*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movzbl %cl, %eax
2478*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2479*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.comineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2480*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2481*9880d681SAndroid Build Coastguard Worker}
2482*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comineq.ss(<4 x float>, <4 x float>) nounwind readnone
2483*9880d681SAndroid Build Coastguard Worker
2484*9880d681SAndroid Build Coastguard Worker
2485*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cvtsi2ss(<4 x float> %a0) {
2486*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cvtsi2ss:
2487*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2488*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl $7, %eax
2489*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtsi2ssl %eax, %xmm0, %xmm0
2490*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2491*9880d681SAndroid Build Coastguard Worker;
2492*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cvtsi2ss:
2493*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2494*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl $7, %eax
2495*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtsi2ssl %eax, %xmm0, %xmm0
2496*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2497*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1]
2498*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2499*9880d681SAndroid Build Coastguard Worker}
2500*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float>, i32) nounwind readnone
2501*9880d681SAndroid Build Coastguard Worker
2502*9880d681SAndroid Build Coastguard Worker
2503*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_cvtss2si(<4 x float> %a0) {
2504*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cvtss2si:
2505*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2506*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtss2si %xmm0, %eax
2507*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2508*9880d681SAndroid Build Coastguard Worker;
2509*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cvtss2si:
2510*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2511*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtss2si %xmm0, %eax
2512*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2513*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.cvtss2si(<4 x float> %a0) ; <i32> [#uses=1]
2514*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2515*9880d681SAndroid Build Coastguard Worker}
2516*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone
2517*9880d681SAndroid Build Coastguard Worker
2518*9880d681SAndroid Build Coastguard Worker
2519*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_cvttss2si(<4 x float> %a0) {
2520*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cvttss2si:
2521*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2522*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvttss2si %xmm0, %eax
2523*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2524*9880d681SAndroid Build Coastguard Worker;
2525*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cvttss2si:
2526*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2527*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvttss2si %xmm0, %eax
2528*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2529*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.cvttss2si(<4 x float> %a0) ; <i32> [#uses=1]
2530*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2531*9880d681SAndroid Build Coastguard Worker}
2532*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone
2533*9880d681SAndroid Build Coastguard Worker
2534*9880d681SAndroid Build Coastguard Worker
2535*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_div_ss(<4 x float> %a0, <4 x float> %a1) {
2536*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_div_ss:
2537*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2538*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vdivss %xmm1, %xmm0, %xmm0
2539*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2540*9880d681SAndroid Build Coastguard Worker;
2541*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_div_ss:
2542*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2543*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vdivss %xmm1, %xmm0, %xmm0
2544*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2545*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.div.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
2546*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2547*9880d681SAndroid Build Coastguard Worker}
2548*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.div.ss(<4 x float>, <4 x float>) nounwind readnone
2549*9880d681SAndroid Build Coastguard Worker
2550*9880d681SAndroid Build Coastguard Worker
2551*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_sse_ldmxcsr(i8* %a0) {
2552*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ldmxcsr:
2553*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2554*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
2555*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vldmxcsr (%eax)
2556*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2557*9880d681SAndroid Build Coastguard Worker;
2558*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ldmxcsr:
2559*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2560*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
2561*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vldmxcsr (%eax)
2562*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2563*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.sse.ldmxcsr(i8* %a0)
2564*9880d681SAndroid Build Coastguard Worker  ret void
2565*9880d681SAndroid Build Coastguard Worker}
2566*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.ldmxcsr(i8*) nounwind
2567*9880d681SAndroid Build Coastguard Worker
2568*9880d681SAndroid Build Coastguard Worker
2569*9880d681SAndroid Build Coastguard Worker
2570*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_max_ps(<4 x float> %a0, <4 x float> %a1) {
2571*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_max_ps:
2572*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2573*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaxps %xmm1, %xmm0, %xmm0
2574*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2575*9880d681SAndroid Build Coastguard Worker;
2576*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_max_ps:
2577*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2578*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaxps %xmm1, %xmm0, %xmm0
2579*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2580*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
2581*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2582*9880d681SAndroid Build Coastguard Worker}
2583*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ps(<4 x float>, <4 x float>) nounwind readnone
2584*9880d681SAndroid Build Coastguard Worker
2585*9880d681SAndroid Build Coastguard Worker
2586*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_max_ss(<4 x float> %a0, <4 x float> %a1) {
2587*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_max_ss:
2588*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2589*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaxss %xmm1, %xmm0, %xmm0
2590*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2591*9880d681SAndroid Build Coastguard Worker;
2592*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_max_ss:
2593*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2594*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaxss %xmm1, %xmm0, %xmm0
2595*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2596*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.max.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
2597*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2598*9880d681SAndroid Build Coastguard Worker}
2599*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ss(<4 x float>, <4 x float>) nounwind readnone
2600*9880d681SAndroid Build Coastguard Worker
2601*9880d681SAndroid Build Coastguard Worker
2602*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_min_ps(<4 x float> %a0, <4 x float> %a1) {
2603*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_min_ps:
2604*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2605*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vminps %xmm1, %xmm0, %xmm0
2606*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2607*9880d681SAndroid Build Coastguard Worker;
2608*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_min_ps:
2609*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2610*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vminps %xmm1, %xmm0, %xmm0
2611*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2612*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
2613*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2614*9880d681SAndroid Build Coastguard Worker}
2615*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ps(<4 x float>, <4 x float>) nounwind readnone
2616*9880d681SAndroid Build Coastguard Worker
2617*9880d681SAndroid Build Coastguard Worker
2618*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_min_ss(<4 x float> %a0, <4 x float> %a1) {
2619*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_min_ss:
2620*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2621*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vminss %xmm1, %xmm0, %xmm0
2622*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2623*9880d681SAndroid Build Coastguard Worker;
2624*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_min_ss:
2625*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2626*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vminss %xmm1, %xmm0, %xmm0
2627*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2628*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.min.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
2629*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2630*9880d681SAndroid Build Coastguard Worker}
2631*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) nounwind readnone
2632*9880d681SAndroid Build Coastguard Worker
2633*9880d681SAndroid Build Coastguard Worker
2634*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_movmsk_ps(<4 x float> %a0) {
2635*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_movmsk_ps:
2636*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2637*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovmskps %xmm0, %eax
2638*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2639*9880d681SAndroid Build Coastguard Worker;
2640*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_movmsk_ps:
2641*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2642*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmovmskps %xmm0, %eax
2643*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2644*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.movmsk.ps(<4 x float> %a0) ; <i32> [#uses=1]
2645*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2646*9880d681SAndroid Build Coastguard Worker}
2647*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.movmsk.ps(<4 x float>) nounwind readnone
2648*9880d681SAndroid Build Coastguard Worker
2649*9880d681SAndroid Build Coastguard Worker
2650*9880d681SAndroid Build Coastguard Worker
2651*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_mul_ss(<4 x float> %a0, <4 x float> %a1) {
2652*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_mul_ss:
2653*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2654*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmulss %xmm1, %xmm0, %xmm0
2655*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2656*9880d681SAndroid Build Coastguard Worker;
2657*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_mul_ss:
2658*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2659*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmulss %xmm1, %xmm0, %xmm0
2660*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2661*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.mul.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
2662*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2663*9880d681SAndroid Build Coastguard Worker}
2664*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.mul.ss(<4 x float>, <4 x float>) nounwind readnone
2665*9880d681SAndroid Build Coastguard Worker
2666*9880d681SAndroid Build Coastguard Worker
2667*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rcp_ps(<4 x float> %a0) {
2668*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_rcp_ps:
2669*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2670*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vrcpps %xmm0, %xmm0
2671*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2672*9880d681SAndroid Build Coastguard Worker;
2673*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_rcp_ps:
2674*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2675*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vrcp14ps %xmm0, %xmm0
2676*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2677*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.rcp.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
2678*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2679*9880d681SAndroid Build Coastguard Worker}
2680*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ps(<4 x float>) nounwind readnone
2681*9880d681SAndroid Build Coastguard Worker
2682*9880d681SAndroid Build Coastguard Worker
2683*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rcp_ss(<4 x float> %a0) {
2684*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_rcp_ss:
2685*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2686*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vrcpss %xmm0, %xmm0, %xmm0
2687*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2688*9880d681SAndroid Build Coastguard Worker;
2689*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_rcp_ss:
2690*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2691*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vrcpss %xmm0, %xmm0, %xmm0
2692*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2693*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.rcp.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
2694*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2695*9880d681SAndroid Build Coastguard Worker}
2696*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ss(<4 x float>) nounwind readnone
2697*9880d681SAndroid Build Coastguard Worker
2698*9880d681SAndroid Build Coastguard Worker
2699*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rsqrt_ps(<4 x float> %a0) {
2700*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_rsqrt_ps:
2701*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2702*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vrsqrtps %xmm0, %xmm0
2703*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2704*9880d681SAndroid Build Coastguard Worker;
2705*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_rsqrt_ps:
2706*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2707*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vrsqrt14ps %xmm0, %xmm0
2708*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2709*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
2710*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2711*9880d681SAndroid Build Coastguard Worker}
2712*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float>) nounwind readnone
2713*9880d681SAndroid Build Coastguard Worker
2714*9880d681SAndroid Build Coastguard Worker
2715*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rsqrt_ss(<4 x float> %a0) {
2716*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_rsqrt_ss:
2717*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2718*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vrsqrtss %xmm0, %xmm0, %xmm0
2719*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2720*9880d681SAndroid Build Coastguard Worker;
2721*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_rsqrt_ss:
2722*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2723*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vrsqrtss %xmm0, %xmm0, %xmm0
2724*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2725*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
2726*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2727*9880d681SAndroid Build Coastguard Worker}
2728*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float>) nounwind readnone
2729*9880d681SAndroid Build Coastguard Worker
2730*9880d681SAndroid Build Coastguard Worker
2731*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sqrt_ps(<4 x float> %a0) {
2732*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_sqrt_ps:
2733*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2734*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vsqrtps %xmm0, %xmm0
2735*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2736*9880d681SAndroid Build Coastguard Worker;
2737*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_sqrt_ps:
2738*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2739*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vsqrtps %xmm0, %xmm0
2740*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2741*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
2742*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2743*9880d681SAndroid Build Coastguard Worker}
2744*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float>) nounwind readnone
2745*9880d681SAndroid Build Coastguard Worker
2746*9880d681SAndroid Build Coastguard Worker
2747*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sqrt_ss(<4 x float> %a0) {
2748*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_sqrt_ss:
2749*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2750*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vsqrtss %xmm0, %xmm0, %xmm0
2751*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2752*9880d681SAndroid Build Coastguard Worker;
2753*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_sqrt_ss:
2754*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2755*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vsqrtss %xmm0, %xmm0, %xmm0
2756*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2757*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
2758*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2759*9880d681SAndroid Build Coastguard Worker}
2760*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float>) nounwind readnone
2761*9880d681SAndroid Build Coastguard Worker
2762*9880d681SAndroid Build Coastguard Worker
2763*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_sse_stmxcsr(i8* %a0) {
2764*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_stmxcsr:
2765*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2766*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
2767*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vstmxcsr (%eax)
2768*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2769*9880d681SAndroid Build Coastguard Worker;
2770*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_stmxcsr:
2771*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2772*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
2773*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vstmxcsr (%eax)
2774*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2775*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.sse.stmxcsr(i8* %a0)
2776*9880d681SAndroid Build Coastguard Worker  ret void
2777*9880d681SAndroid Build Coastguard Worker}
2778*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.stmxcsr(i8*) nounwind
2779*9880d681SAndroid Build Coastguard Worker
2780*9880d681SAndroid Build Coastguard Worker
2781*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sub_ss(<4 x float> %a0, <4 x float> %a1) {
2782*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_sub_ss:
2783*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2784*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vsubss %xmm1, %xmm0, %xmm0
2785*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2786*9880d681SAndroid Build Coastguard Worker;
2787*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_sub_ss:
2788*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2789*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vsubss %xmm1, %xmm0, %xmm0
2790*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2791*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.sub.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
2792*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
2793*9880d681SAndroid Build Coastguard Worker}
2794*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sub.ss(<4 x float>, <4 x float>) nounwind readnone
2795*9880d681SAndroid Build Coastguard Worker
2796*9880d681SAndroid Build Coastguard Worker
2797*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomieq_ss(<4 x float> %a0, <4 x float> %a1) {
2798*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomieq_ss:
2799*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2800*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomiss %xmm1, %xmm0
2801*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setnp %al
2802*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %cl
2803*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andb %al, %cl
2804*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movzbl %cl, %eax
2805*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2806*9880d681SAndroid Build Coastguard Worker;
2807*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomieq_ss:
2808*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2809*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomiss %xmm1, %xmm0
2810*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setnp %al
2811*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %cl
2812*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andb %al, %cl
2813*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movzbl %cl, %eax
2814*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2815*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2816*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2817*9880d681SAndroid Build Coastguard Worker}
2818*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomieq.ss(<4 x float>, <4 x float>) nounwind readnone
2819*9880d681SAndroid Build Coastguard Worker
2820*9880d681SAndroid Build Coastguard Worker
2821*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomige_ss(<4 x float> %a0, <4 x float> %a1) {
2822*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomige_ss:
2823*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2824*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2825*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomiss %xmm1, %xmm0
2826*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setae %al
2827*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2828*9880d681SAndroid Build Coastguard Worker;
2829*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomige_ss:
2830*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2831*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2832*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomiss %xmm1, %xmm0
2833*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setae %al
2834*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2835*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2836*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2837*9880d681SAndroid Build Coastguard Worker}
2838*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomige.ss(<4 x float>, <4 x float>) nounwind readnone
2839*9880d681SAndroid Build Coastguard Worker
2840*9880d681SAndroid Build Coastguard Worker
2841*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomigt_ss(<4 x float> %a0, <4 x float> %a1) {
2842*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomigt_ss:
2843*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2844*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2845*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomiss %xmm1, %xmm0
2846*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
2847*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2848*9880d681SAndroid Build Coastguard Worker;
2849*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomigt_ss:
2850*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2851*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2852*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomiss %xmm1, %xmm0
2853*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
2854*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2855*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2856*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2857*9880d681SAndroid Build Coastguard Worker}
2858*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomigt.ss(<4 x float>, <4 x float>) nounwind readnone
2859*9880d681SAndroid Build Coastguard Worker
2860*9880d681SAndroid Build Coastguard Worker
2861*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomile_ss(<4 x float> %a0, <4 x float> %a1) {
2862*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomile_ss:
2863*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2864*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2865*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomiss %xmm0, %xmm1
2866*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setae %al
2867*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2868*9880d681SAndroid Build Coastguard Worker;
2869*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomile_ss:
2870*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2871*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2872*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomiss %xmm0, %xmm1
2873*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setae %al
2874*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2875*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2876*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2877*9880d681SAndroid Build Coastguard Worker}
2878*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomile.ss(<4 x float>, <4 x float>) nounwind readnone
2879*9880d681SAndroid Build Coastguard Worker
2880*9880d681SAndroid Build Coastguard Worker
2881*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomilt_ss(<4 x float> %a0, <4 x float> %a1) {
2882*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomilt_ss:
2883*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2884*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
2885*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomiss %xmm0, %xmm1
2886*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
2887*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2888*9880d681SAndroid Build Coastguard Worker;
2889*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomilt_ss:
2890*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2891*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
2892*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomiss %xmm0, %xmm1
2893*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
2894*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2895*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2896*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2897*9880d681SAndroid Build Coastguard Worker}
2898*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomilt.ss(<4 x float>, <4 x float>) nounwind readnone
2899*9880d681SAndroid Build Coastguard Worker
2900*9880d681SAndroid Build Coastguard Worker
2901*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomineq_ss(<4 x float> %a0, <4 x float> %a1) {
2902*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomineq_ss:
2903*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2904*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vucomiss %xmm1, %xmm0
2905*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setp %al
2906*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    setne %cl
2907*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    orb %al, %cl
2908*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movzbl %cl, %eax
2909*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2910*9880d681SAndroid Build Coastguard Worker;
2911*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomineq_ss:
2912*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2913*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vucomiss %xmm1, %xmm0
2914*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setp %al
2915*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    setne %cl
2916*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    orb %al, %cl
2917*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movzbl %cl, %eax
2918*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2919*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2920*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2921*9880d681SAndroid Build Coastguard Worker}
2922*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomineq.ss(<4 x float>, <4 x float>) nounwind readnone
2923*9880d681SAndroid Build Coastguard Worker
2924*9880d681SAndroid Build Coastguard Worker
2925*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_ssse3_pabs_b_128(<16 x i8> %a0) {
2926*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pabs_b_128:
2927*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2928*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpabsb %xmm0, %xmm0
2929*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2930*9880d681SAndroid Build Coastguard Worker;
2931*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pabs_b_128:
2932*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2933*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpabsb %xmm0, %xmm0
2934*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2935*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8> %a0) ; <<16 x i8>> [#uses=1]
2936*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2937*9880d681SAndroid Build Coastguard Worker}
2938*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8>) nounwind readnone
2939*9880d681SAndroid Build Coastguard Worker
2940*9880d681SAndroid Build Coastguard Worker
2941*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_ssse3_pabs_d_128(<4 x i32> %a0) {
2942*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pabs_d_128:
2943*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2944*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpabsd %xmm0, %xmm0
2945*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2946*9880d681SAndroid Build Coastguard Worker;
2947*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pabs_d_128:
2948*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2949*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpabsd %xmm0, %xmm0
2950*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2951*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32> %a0) ; <<4 x i32>> [#uses=1]
2952*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
2953*9880d681SAndroid Build Coastguard Worker}
2954*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32>) nounwind readnone
2955*9880d681SAndroid Build Coastguard Worker
2956*9880d681SAndroid Build Coastguard Worker
2957*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_pabs_w_128(<8 x i16> %a0) {
2958*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pabs_w_128:
2959*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2960*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpabsw %xmm0, %xmm0
2961*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2962*9880d681SAndroid Build Coastguard Worker;
2963*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pabs_w_128:
2964*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2965*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpabsw %xmm0, %xmm0
2966*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2967*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.ssse3.pabs.w.128(<8 x i16> %a0) ; <<8 x i16>> [#uses=1]
2968*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2969*9880d681SAndroid Build Coastguard Worker}
2970*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pabs.w.128(<8 x i16>) nounwind readnone
2971*9880d681SAndroid Build Coastguard Worker
2972*9880d681SAndroid Build Coastguard Worker
2973*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_ssse3_phadd_d_128(<4 x i32> %a0, <4 x i32> %a1) {
2974*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phadd_d_128:
2975*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2976*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vphaddd %xmm1, %xmm0, %xmm0
2977*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2978*9880d681SAndroid Build Coastguard Worker;
2979*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phadd_d_128:
2980*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2981*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vphaddd %xmm1, %xmm0, %xmm0
2982*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2983*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
2984*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
2985*9880d681SAndroid Build Coastguard Worker}
2986*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32>, <4 x i32>) nounwind readnone
2987*9880d681SAndroid Build Coastguard Worker
2988*9880d681SAndroid Build Coastguard Worker
2989*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_phadd_sw_128(<8 x i16> %a0, <8 x i16> %a1) {
2990*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phadd_sw_128:
2991*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
2992*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vphaddsw %xmm1, %xmm0, %xmm0
2993*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
2994*9880d681SAndroid Build Coastguard Worker;
2995*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phadd_sw_128:
2996*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
2997*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vphaddsw %xmm1, %xmm0, %xmm0
2998*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
2999*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
3000*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3001*9880d681SAndroid Build Coastguard Worker}
3002*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
3003*9880d681SAndroid Build Coastguard Worker
3004*9880d681SAndroid Build Coastguard Worker
3005*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_phadd_w_128(<8 x i16> %a0, <8 x i16> %a1) {
3006*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phadd_w_128:
3007*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3008*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vphaddw %xmm1, %xmm0, %xmm0
3009*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3010*9880d681SAndroid Build Coastguard Worker;
3011*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phadd_w_128:
3012*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3013*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vphaddw %xmm1, %xmm0, %xmm0
3014*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3015*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
3016*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3017*9880d681SAndroid Build Coastguard Worker}
3018*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16>, <8 x i16>) nounwind readnone
3019*9880d681SAndroid Build Coastguard Worker
3020*9880d681SAndroid Build Coastguard Worker
3021*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_ssse3_phsub_d_128(<4 x i32> %a0, <4 x i32> %a1) {
3022*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phsub_d_128:
3023*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3024*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vphsubd %xmm1, %xmm0, %xmm0
3025*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3026*9880d681SAndroid Build Coastguard Worker;
3027*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phsub_d_128:
3028*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3029*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vphsubd %xmm1, %xmm0, %xmm0
3030*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3031*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
3032*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
3033*9880d681SAndroid Build Coastguard Worker}
3034*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32>, <4 x i32>) nounwind readnone
3035*9880d681SAndroid Build Coastguard Worker
3036*9880d681SAndroid Build Coastguard Worker
3037*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_phsub_sw_128(<8 x i16> %a0, <8 x i16> %a1) {
3038*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phsub_sw_128:
3039*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3040*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vphsubsw %xmm1, %xmm0, %xmm0
3041*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3042*9880d681SAndroid Build Coastguard Worker;
3043*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phsub_sw_128:
3044*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3045*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vphsubsw %xmm1, %xmm0, %xmm0
3046*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3047*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.ssse3.phsub.sw.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
3048*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3049*9880d681SAndroid Build Coastguard Worker}
3050*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phsub.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
3051*9880d681SAndroid Build Coastguard Worker
3052*9880d681SAndroid Build Coastguard Worker
3053*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_phsub_w_128(<8 x i16> %a0, <8 x i16> %a1) {
3054*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phsub_w_128:
3055*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3056*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vphsubw %xmm1, %xmm0, %xmm0
3057*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3058*9880d681SAndroid Build Coastguard Worker;
3059*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phsub_w_128:
3060*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3061*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vphsubw %xmm1, %xmm0, %xmm0
3062*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3063*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.ssse3.phsub.w.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
3064*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3065*9880d681SAndroid Build Coastguard Worker}
3066*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phsub.w.128(<8 x i16>, <8 x i16>) nounwind readnone
3067*9880d681SAndroid Build Coastguard Worker
3068*9880d681SAndroid Build Coastguard Worker
3069*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_pmadd_ub_sw_128(<16 x i8> %a0, <16 x i8> %a1) {
3070*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pmadd_ub_sw_128:
3071*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3072*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmaddubsw %xmm1, %xmm0, %xmm0
3073*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3074*9880d681SAndroid Build Coastguard Worker;
3075*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pmadd_ub_sw_128:
3076*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3077*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmaddubsw %xmm1, %xmm0, %xmm0
3078*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3079*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8> %a0, <16 x i8> %a1) ; <<8 x i16>> [#uses=1]
3080*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3081*9880d681SAndroid Build Coastguard Worker}
3082*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8>, <16 x i8>) nounwind readnone
3083*9880d681SAndroid Build Coastguard Worker
3084*9880d681SAndroid Build Coastguard Worker
3085*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_pmul_hr_sw_128(<8 x i16> %a0, <8 x i16> %a1) {
3086*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pmul_hr_sw_128:
3087*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3088*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmulhrsw %xmm1, %xmm0, %xmm0
3089*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3090*9880d681SAndroid Build Coastguard Worker;
3091*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pmul_hr_sw_128:
3092*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3093*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpmulhrsw %xmm1, %xmm0, %xmm0
3094*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3095*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
3096*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3097*9880d681SAndroid Build Coastguard Worker}
3098*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
3099*9880d681SAndroid Build Coastguard Worker
3100*9880d681SAndroid Build Coastguard Worker
3101*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_ssse3_pshuf_b_128(<16 x i8> %a0, <16 x i8> %a1) {
3102*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pshuf_b_128:
3103*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3104*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
3105*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3106*9880d681SAndroid Build Coastguard Worker;
3107*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pshuf_b_128:
3108*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3109*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
3110*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3111*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
3112*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3113*9880d681SAndroid Build Coastguard Worker}
3114*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8>, <16 x i8>) nounwind readnone
3115*9880d681SAndroid Build Coastguard Worker
3116*9880d681SAndroid Build Coastguard Worker
3117*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_ssse3_psign_b_128(<16 x i8> %a0, <16 x i8> %a1) {
3118*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_psign_b_128:
3119*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3120*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsignb %xmm1, %xmm0, %xmm0
3121*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3122*9880d681SAndroid Build Coastguard Worker;
3123*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_psign_b_128:
3124*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3125*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsignb %xmm1, %xmm0, %xmm0
3126*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3127*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
3128*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3129*9880d681SAndroid Build Coastguard Worker}
3130*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8>, <16 x i8>) nounwind readnone
3131*9880d681SAndroid Build Coastguard Worker
3132*9880d681SAndroid Build Coastguard Worker
3133*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_ssse3_psign_d_128(<4 x i32> %a0, <4 x i32> %a1) {
3134*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_psign_d_128:
3135*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3136*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsignd %xmm1, %xmm0, %xmm0
3137*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3138*9880d681SAndroid Build Coastguard Worker;
3139*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_psign_d_128:
3140*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3141*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsignd %xmm1, %xmm0, %xmm0
3142*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3143*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
3144*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
3145*9880d681SAndroid Build Coastguard Worker}
3146*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32>, <4 x i32>) nounwind readnone
3147*9880d681SAndroid Build Coastguard Worker
3148*9880d681SAndroid Build Coastguard Worker
3149*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_psign_w_128(<8 x i16> %a0, <8 x i16> %a1) {
3150*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_psign_w_128:
3151*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3152*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsignw %xmm1, %xmm0, %xmm0
3153*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3154*9880d681SAndroid Build Coastguard Worker;
3155*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_psign_w_128:
3156*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3157*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpsignw %xmm1, %xmm0, %xmm0
3158*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3159*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
3160*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3161*9880d681SAndroid Build Coastguard Worker}
3162*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16>, <8 x i16>) nounwind readnone
3163*9880d681SAndroid Build Coastguard Worker
3164*9880d681SAndroid Build Coastguard Worker
3165*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_addsub_pd_256(<4 x double> %a0, <4 x double> %a1) {
3166*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_addsub_pd_256:
3167*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3168*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaddsubpd %ymm1, %ymm0, %ymm0
3169*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3170*9880d681SAndroid Build Coastguard Worker;
3171*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_addsub_pd_256:
3172*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3173*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaddsubpd %ymm1, %ymm0, %ymm0
3174*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3175*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
3176*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3177*9880d681SAndroid Build Coastguard Worker}
3178*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double>, <4 x double>) nounwind readnone
3179*9880d681SAndroid Build Coastguard Worker
3180*9880d681SAndroid Build Coastguard Worker
3181*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_addsub_ps_256(<8 x float> %a0, <8 x float> %a1) {
3182*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_addsub_ps_256:
3183*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3184*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaddsubps %ymm1, %ymm0, %ymm0
3185*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3186*9880d681SAndroid Build Coastguard Worker;
3187*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_addsub_ps_256:
3188*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3189*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaddsubps %ymm1, %ymm0, %ymm0
3190*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3191*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
3192*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3193*9880d681SAndroid Build Coastguard Worker}
3194*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float>, <8 x float>) nounwind readnone
3195*9880d681SAndroid Build Coastguard Worker
3196*9880d681SAndroid Build Coastguard Worker
3197*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_blendv_pd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2) {
3198*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_blendv_pd_256:
3199*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3200*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
3201*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3202*9880d681SAndroid Build Coastguard Worker;
3203*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_blendv_pd_256:
3204*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3205*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
3206*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3207*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2) ; <<4 x double>> [#uses=1]
3208*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3209*9880d681SAndroid Build Coastguard Worker}
3210*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone
3211*9880d681SAndroid Build Coastguard Worker
3212*9880d681SAndroid Build Coastguard Worker
3213*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_blendv_ps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) {
3214*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_blendv_ps_256:
3215*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3216*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vblendvps %ymm2, %ymm1, %ymm0, %ymm0
3217*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3218*9880d681SAndroid Build Coastguard Worker;
3219*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_blendv_ps_256:
3220*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3221*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vblendvps %ymm2, %ymm1, %ymm0, %ymm0
3222*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3223*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) ; <<8 x float>> [#uses=1]
3224*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3225*9880d681SAndroid Build Coastguard Worker}
3226*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone
3227*9880d681SAndroid Build Coastguard Worker
3228*9880d681SAndroid Build Coastguard Worker
3229*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_cmp_pd_256(<4 x double> %a0, <4 x double> %a1) {
3230*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cmp_pd_256:
3231*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3232*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpordpd %ymm1, %ymm0, %ymm0
3233*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3234*9880d681SAndroid Build Coastguard Worker;
3235*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cmp_pd_256:
3236*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3237*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpordpd %ymm1, %ymm0, %ymm0
3238*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3239*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> %a0, <4 x double> %a1, i8 7) ; <<4 x double>> [#uses=1]
3240*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3241*9880d681SAndroid Build Coastguard Worker}
3242*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone
3243*9880d681SAndroid Build Coastguard Worker
3244*9880d681SAndroid Build Coastguard Worker
3245*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_cmp_ps_256(<8 x float> %a0, <8 x float> %a1) {
3246*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cmp_ps_256:
3247*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3248*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpordps %ymm1, %ymm0, %ymm0
3249*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3250*9880d681SAndroid Build Coastguard Worker;
3251*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cmp_ps_256:
3252*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3253*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpordps %ymm1, %ymm0, %ymm0
3254*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3255*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7) ; <<8 x float>> [#uses=1]
3256*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3257*9880d681SAndroid Build Coastguard Worker}
3258*9880d681SAndroid Build Coastguard Worker
3259*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_cmp_ps_256_pseudo_op(<8 x float> %a0, <8 x float> %a1) {
3260*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cmp_ps_256_pseudo_op:
3261*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3262*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpeqps %ymm1, %ymm0, %ymm1
3263*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpltps %ymm1, %ymm0, %ymm1
3264*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpleps %ymm1, %ymm0, %ymm1
3265*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpunordps %ymm1, %ymm0, %ymm1
3266*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpneqps %ymm1, %ymm0, %ymm1
3267*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpnltps %ymm1, %ymm0, %ymm1
3268*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpnleps %ymm1, %ymm0, %ymm1
3269*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpordps %ymm1, %ymm0, %ymm1
3270*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpeq_uqps %ymm1, %ymm0, %ymm1
3271*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpngeps %ymm1, %ymm0, %ymm1
3272*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpngtps %ymm1, %ymm0, %ymm1
3273*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpfalseps %ymm1, %ymm0, %ymm1
3274*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpneq_oqps %ymm1, %ymm0, %ymm1
3275*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpgeps %ymm1, %ymm0, %ymm1
3276*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpgtps %ymm1, %ymm0, %ymm1
3277*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmptrueps %ymm1, %ymm0, %ymm1
3278*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpeq_osps %ymm1, %ymm0, %ymm1
3279*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmplt_oqps %ymm1, %ymm0, %ymm1
3280*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmple_oqps %ymm1, %ymm0, %ymm1
3281*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpunord_sps %ymm1, %ymm0, %ymm1
3282*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpneq_usps %ymm1, %ymm0, %ymm1
3283*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpnlt_uqps %ymm1, %ymm0, %ymm1
3284*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpnle_uqps %ymm1, %ymm0, %ymm1
3285*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpord_sps %ymm1, %ymm0, %ymm1
3286*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpeq_usps %ymm1, %ymm0, %ymm1
3287*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpnge_uqps %ymm1, %ymm0, %ymm1
3288*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpngt_uqps %ymm1, %ymm0, %ymm1
3289*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpfalse_osps %ymm1, %ymm0, %ymm1
3290*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpneq_osps %ymm1, %ymm0, %ymm1
3291*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpge_oqps %ymm1, %ymm0, %ymm1
3292*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmpgt_oqps %ymm1, %ymm0, %ymm1
3293*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcmptrue_usps %ymm1, %ymm0, %ymm0
3294*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3295*9880d681SAndroid Build Coastguard Worker;
3296*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cmp_ps_256_pseudo_op:
3297*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3298*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpeqps %ymm1, %ymm0, %ymm1
3299*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpltps %ymm1, %ymm0, %ymm1
3300*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpleps %ymm1, %ymm0, %ymm1
3301*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpunordps %ymm1, %ymm0, %ymm1
3302*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpneqps %ymm1, %ymm0, %ymm1
3303*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpnltps %ymm1, %ymm0, %ymm1
3304*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpnleps %ymm1, %ymm0, %ymm1
3305*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpordps %ymm1, %ymm0, %ymm1
3306*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpeq_uqps %ymm1, %ymm0, %ymm1
3307*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpngeps %ymm1, %ymm0, %ymm1
3308*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpngtps %ymm1, %ymm0, %ymm1
3309*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpfalseps %ymm1, %ymm0, %ymm1
3310*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpneq_oqps %ymm1, %ymm0, %ymm1
3311*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpgeps %ymm1, %ymm0, %ymm1
3312*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpgtps %ymm1, %ymm0, %ymm1
3313*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmptrueps %ymm1, %ymm0, %ymm1
3314*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpeq_osps %ymm1, %ymm0, %ymm1
3315*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmplt_oqps %ymm1, %ymm0, %ymm1
3316*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmple_oqps %ymm1, %ymm0, %ymm1
3317*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpunord_sps %ymm1, %ymm0, %ymm1
3318*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpneq_usps %ymm1, %ymm0, %ymm1
3319*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpnlt_uqps %ymm1, %ymm0, %ymm1
3320*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpnle_uqps %ymm1, %ymm0, %ymm1
3321*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpord_sps %ymm1, %ymm0, %ymm1
3322*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpeq_usps %ymm1, %ymm0, %ymm1
3323*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpnge_uqps %ymm1, %ymm0, %ymm1
3324*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpngt_uqps %ymm1, %ymm0, %ymm1
3325*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpfalse_osps %ymm1, %ymm0, %ymm1
3326*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpneq_osps %ymm1, %ymm0, %ymm1
3327*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpge_oqps %ymm1, %ymm0, %ymm1
3328*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmpgt_oqps %ymm1, %ymm0, %ymm1
3329*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcmptrue_usps %ymm1, %ymm0, %ymm0
3330*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3331*9880d681SAndroid Build Coastguard Worker  %a2 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 0) ; <<8 x float>> [#uses=1]
3332*9880d681SAndroid Build Coastguard Worker  %a3 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a2, i8 1) ; <<8 x float>> [#uses=1]
3333*9880d681SAndroid Build Coastguard Worker  %a4 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a3, i8 2) ; <<8 x float>> [#uses=1]
3334*9880d681SAndroid Build Coastguard Worker  %a5 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a4, i8 3) ; <<8 x float>> [#uses=1]
3335*9880d681SAndroid Build Coastguard Worker  %a6 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a5, i8 4) ; <<8 x float>> [#uses=1]
3336*9880d681SAndroid Build Coastguard Worker  %a7 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a6, i8 5) ; <<8 x float>> [#uses=1]
3337*9880d681SAndroid Build Coastguard Worker  %a8 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a7, i8 6) ; <<8 x float>> [#uses=1]
3338*9880d681SAndroid Build Coastguard Worker  %a9 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a8, i8 7) ; <<8 x float>> [#uses=1]
3339*9880d681SAndroid Build Coastguard Worker  %a10 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a9, i8 8) ; <<8 x float>> [#uses=1]
3340*9880d681SAndroid Build Coastguard Worker  %a11 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a10, i8 9) ; <<8 x float>> [#uses=1]
3341*9880d681SAndroid Build Coastguard Worker  %a12 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a11, i8 10) ; <<8 x float>> [#uses=1]
3342*9880d681SAndroid Build Coastguard Worker  %a13 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a12, i8 11) ; <<8 x float>> [#uses=1]
3343*9880d681SAndroid Build Coastguard Worker  %a14 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a13, i8 12) ; <<8 x float>> [#uses=1]
3344*9880d681SAndroid Build Coastguard Worker  %a15 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a14, i8 13) ; <<8 x float>> [#uses=1]
3345*9880d681SAndroid Build Coastguard Worker  %a16 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a15, i8 14) ; <<8 x float>> [#uses=1]
3346*9880d681SAndroid Build Coastguard Worker  %a17 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a16, i8 15) ; <<8 x float>> [#uses=1]
3347*9880d681SAndroid Build Coastguard Worker  %a18 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a17, i8 16) ; <<8 x float>> [#uses=1]
3348*9880d681SAndroid Build Coastguard Worker  %a19 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a18, i8 17) ; <<8 x float>> [#uses=1]
3349*9880d681SAndroid Build Coastguard Worker  %a20 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a19, i8 18) ; <<8 x float>> [#uses=1]
3350*9880d681SAndroid Build Coastguard Worker  %a21 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a20, i8 19) ; <<8 x float>> [#uses=1]
3351*9880d681SAndroid Build Coastguard Worker  %a22 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a21, i8 20) ; <<8 x float>> [#uses=1]
3352*9880d681SAndroid Build Coastguard Worker  %a23 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a22, i8 21) ; <<8 x float>> [#uses=1]
3353*9880d681SAndroid Build Coastguard Worker  %a24 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a23, i8 22) ; <<8 x float>> [#uses=1]
3354*9880d681SAndroid Build Coastguard Worker  %a25 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a24, i8 23) ; <<8 x float>> [#uses=1]
3355*9880d681SAndroid Build Coastguard Worker  %a26 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a25, i8 24) ; <<8 x float>> [#uses=1]
3356*9880d681SAndroid Build Coastguard Worker  %a27 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a26, i8 25) ; <<8 x float>> [#uses=1]
3357*9880d681SAndroid Build Coastguard Worker  %a28 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a27, i8 26) ; <<8 x float>> [#uses=1]
3358*9880d681SAndroid Build Coastguard Worker  %a29 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a28, i8 27) ; <<8 x float>> [#uses=1]
3359*9880d681SAndroid Build Coastguard Worker  %a30 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a29, i8 28) ; <<8 x float>> [#uses=1]
3360*9880d681SAndroid Build Coastguard Worker  %a31 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a30, i8 29) ; <<8 x float>> [#uses=1]
3361*9880d681SAndroid Build Coastguard Worker  %a32 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a31, i8 30) ; <<8 x float>> [#uses=1]
3362*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a32, i8 31) ; <<8 x float>> [#uses=1]
3363*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3364*9880d681SAndroid Build Coastguard Worker}
3365*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
3366*9880d681SAndroid Build Coastguard Worker
3367*9880d681SAndroid Build Coastguard Worker
3368*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx_cvt_pd2_ps_256(<4 x double> %a0) {
3369*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cvt_pd2_ps_256:
3370*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3371*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtpd2psy %ymm0, %xmm0
3372*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
3373*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3374*9880d681SAndroid Build Coastguard Worker;
3375*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cvt_pd2_ps_256:
3376*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3377*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtpd2psy %ymm0, %xmm0
3378*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3379*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double> %a0) ; <<4 x float>> [#uses=1]
3380*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3381*9880d681SAndroid Build Coastguard Worker}
3382*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double>) nounwind readnone
3383*9880d681SAndroid Build Coastguard Worker
3384*9880d681SAndroid Build Coastguard Worker
3385*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx_cvt_pd2dq_256(<4 x double> %a0) {
3386*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cvt_pd2dq_256:
3387*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3388*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtpd2dqy %ymm0, %xmm0
3389*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
3390*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3391*9880d681SAndroid Build Coastguard Worker;
3392*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cvt_pd2dq_256:
3393*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3394*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtpd2dqy %ymm0, %xmm0
3395*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3396*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double> %a0) ; <<4 x i32>> [#uses=1]
3397*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
3398*9880d681SAndroid Build Coastguard Worker}
3399*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double>) nounwind readnone
3400*9880d681SAndroid Build Coastguard Worker
3401*9880d681SAndroid Build Coastguard Worker
3402*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx_cvt_ps2dq_256(<8 x float> %a0) {
3403*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cvt_ps2dq_256:
3404*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3405*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtps2dq %ymm0, %ymm0
3406*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3407*9880d681SAndroid Build Coastguard Worker;
3408*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cvt_ps2dq_256:
3409*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3410*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtps2dq %ymm0, %ymm0
3411*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3412*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float> %a0) ; <<8 x i32>> [#uses=1]
3413*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
3414*9880d681SAndroid Build Coastguard Worker}
3415*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float>) nounwind readnone
3416*9880d681SAndroid Build Coastguard Worker
3417*9880d681SAndroid Build Coastguard Worker
3418*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_cvtdq2_ps_256(<8 x i32> %a0) {
3419*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cvtdq2_ps_256:
3420*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3421*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vcvtdq2ps %ymm0, %ymm0
3422*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3423*9880d681SAndroid Build Coastguard Worker;
3424*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cvtdq2_ps_256:
3425*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3426*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vcvtdq2ps %ymm0, %ymm0
3427*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3428*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.cvtdq2.ps.256(<8 x i32> %a0) ; <<8 x float>> [#uses=1]
3429*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3430*9880d681SAndroid Build Coastguard Worker}
3431*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.cvtdq2.ps.256(<8 x i32>) nounwind readnone
3432*9880d681SAndroid Build Coastguard Worker
3433*9880d681SAndroid Build Coastguard Worker
3434*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_dp_ps_256(<8 x float> %a0, <8 x float> %a1) {
3435*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_dp_ps_256:
3436*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3437*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vdpps $7, %ymm1, %ymm0, %ymm0
3438*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3439*9880d681SAndroid Build Coastguard Worker;
3440*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_dp_ps_256:
3441*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3442*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vdpps $7, %ymm1, %ymm0, %ymm0
3443*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3444*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7) ; <<8 x float>> [#uses=1]
3445*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3446*9880d681SAndroid Build Coastguard Worker}
3447*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
3448*9880d681SAndroid Build Coastguard Worker
3449*9880d681SAndroid Build Coastguard Worker
3450*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_hadd_pd_256(<4 x double> %a0, <4 x double> %a1) {
3451*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_hadd_pd_256:
3452*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3453*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vhaddpd %ymm1, %ymm0, %ymm0
3454*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3455*9880d681SAndroid Build Coastguard Worker;
3456*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_hadd_pd_256:
3457*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3458*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vhaddpd %ymm1, %ymm0, %ymm0
3459*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3460*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
3461*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3462*9880d681SAndroid Build Coastguard Worker}
3463*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double>, <4 x double>) nounwind readnone
3464*9880d681SAndroid Build Coastguard Worker
3465*9880d681SAndroid Build Coastguard Worker
3466*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_hadd_ps_256(<8 x float> %a0, <8 x float> %a1) {
3467*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_hadd_ps_256:
3468*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3469*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vhaddps %ymm1, %ymm0, %ymm0
3470*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3471*9880d681SAndroid Build Coastguard Worker;
3472*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_hadd_ps_256:
3473*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3474*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vhaddps %ymm1, %ymm0, %ymm0
3475*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3476*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
3477*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3478*9880d681SAndroid Build Coastguard Worker}
3479*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float>, <8 x float>) nounwind readnone
3480*9880d681SAndroid Build Coastguard Worker
3481*9880d681SAndroid Build Coastguard Worker
3482*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_hsub_pd_256(<4 x double> %a0, <4 x double> %a1) {
3483*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_hsub_pd_256:
3484*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3485*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vhsubpd %ymm1, %ymm0, %ymm0
3486*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3487*9880d681SAndroid Build Coastguard Worker;
3488*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_hsub_pd_256:
3489*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3490*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vhsubpd %ymm1, %ymm0, %ymm0
3491*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3492*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
3493*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3494*9880d681SAndroid Build Coastguard Worker}
3495*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double>, <4 x double>) nounwind readnone
3496*9880d681SAndroid Build Coastguard Worker
3497*9880d681SAndroid Build Coastguard Worker
3498*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_hsub_ps_256(<8 x float> %a0, <8 x float> %a1) {
3499*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_hsub_ps_256:
3500*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3501*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vhsubps %ymm1, %ymm0, %ymm0
3502*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3503*9880d681SAndroid Build Coastguard Worker;
3504*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_hsub_ps_256:
3505*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3506*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vhsubps %ymm1, %ymm0, %ymm0
3507*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3508*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
3509*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3510*9880d681SAndroid Build Coastguard Worker}
3511*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float>, <8 x float>) nounwind readnone
3512*9880d681SAndroid Build Coastguard Worker
3513*9880d681SAndroid Build Coastguard Worker
3514*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx_ldu_dq_256(i8* %a0) {
3515*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_ldu_dq_256:
3516*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3517*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3518*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vlddqu (%eax), %ymm0
3519*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3520*9880d681SAndroid Build Coastguard Worker;
3521*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_ldu_dq_256:
3522*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3523*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3524*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vlddqu (%eax), %ymm0
3525*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3526*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx.ldu.dq.256(i8* %a0) ; <<32 x i8>> [#uses=1]
3527*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3528*9880d681SAndroid Build Coastguard Worker}
3529*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx.ldu.dq.256(i8*) nounwind readonly
3530*9880d681SAndroid Build Coastguard Worker
3531*9880d681SAndroid Build Coastguard Worker
3532*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx_maskload_pd(i8* %a0, <2 x i64> %mask) {
3533*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskload_pd:
3534*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3535*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3536*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaskmovpd (%eax), %xmm0, %xmm0
3537*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3538*9880d681SAndroid Build Coastguard Worker;
3539*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskload_pd:
3540*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3541*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3542*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaskmovpd (%eax), %xmm0, %xmm0
3543*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3544*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx.maskload.pd(i8* %a0, <2 x i64> %mask) ; <<2 x double>> [#uses=1]
3545*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3546*9880d681SAndroid Build Coastguard Worker}
3547*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx.maskload.pd(i8*, <2 x i64>) nounwind readonly
3548*9880d681SAndroid Build Coastguard Worker
3549*9880d681SAndroid Build Coastguard Worker
3550*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_maskload_pd_256(i8* %a0, <4 x i64> %mask) {
3551*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskload_pd_256:
3552*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3553*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3554*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaskmovpd (%eax), %ymm0, %ymm0
3555*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3556*9880d681SAndroid Build Coastguard Worker;
3557*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskload_pd_256:
3558*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3559*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3560*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaskmovpd (%eax), %ymm0, %ymm0
3561*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3562*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.maskload.pd.256(i8* %a0, <4 x i64> %mask) ; <<4 x double>> [#uses=1]
3563*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3564*9880d681SAndroid Build Coastguard Worker}
3565*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.maskload.pd.256(i8*, <4 x i64>) nounwind readonly
3566*9880d681SAndroid Build Coastguard Worker
3567*9880d681SAndroid Build Coastguard Worker
3568*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx_maskload_ps(i8* %a0, <4 x i32> %mask) {
3569*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskload_ps:
3570*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3571*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3572*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaskmovps (%eax), %xmm0, %xmm0
3573*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3574*9880d681SAndroid Build Coastguard Worker;
3575*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskload_ps:
3576*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3577*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3578*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaskmovps (%eax), %xmm0, %xmm0
3579*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3580*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx.maskload.ps(i8* %a0, <4 x i32> %mask) ; <<4 x float>> [#uses=1]
3581*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3582*9880d681SAndroid Build Coastguard Worker}
3583*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.maskload.ps(i8*, <4 x i32>) nounwind readonly
3584*9880d681SAndroid Build Coastguard Worker
3585*9880d681SAndroid Build Coastguard Worker
3586*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_maskload_ps_256(i8* %a0, <8 x i32> %mask) {
3587*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskload_ps_256:
3588*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3589*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3590*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaskmovps (%eax), %ymm0, %ymm0
3591*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3592*9880d681SAndroid Build Coastguard Worker;
3593*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskload_ps_256:
3594*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3595*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3596*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaskmovps (%eax), %ymm0, %ymm0
3597*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3598*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.maskload.ps.256(i8* %a0, <8 x i32> %mask) ; <<8 x float>> [#uses=1]
3599*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3600*9880d681SAndroid Build Coastguard Worker}
3601*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.maskload.ps.256(i8*, <8 x i32>) nounwind readonly
3602*9880d681SAndroid Build Coastguard Worker
3603*9880d681SAndroid Build Coastguard Worker
3604*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_maskstore_pd(i8* %a0, <2 x i64> %mask, <2 x double> %a2) {
3605*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskstore_pd:
3606*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3607*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3608*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaskmovpd %xmm1, %xmm0, (%eax)
3609*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3610*9880d681SAndroid Build Coastguard Worker;
3611*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskstore_pd:
3612*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3613*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3614*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaskmovpd %xmm1, %xmm0, (%eax)
3615*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3616*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.maskstore.pd(i8* %a0, <2 x i64> %mask, <2 x double> %a2)
3617*9880d681SAndroid Build Coastguard Worker  ret void
3618*9880d681SAndroid Build Coastguard Worker}
3619*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.pd(i8*, <2 x i64>, <2 x double>) nounwind
3620*9880d681SAndroid Build Coastguard Worker
3621*9880d681SAndroid Build Coastguard Worker
3622*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_maskstore_pd_256(i8* %a0, <4 x i64> %mask, <4 x double> %a2) {
3623*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskstore_pd_256:
3624*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3625*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3626*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaskmovpd %ymm1, %ymm0, (%eax)
3627*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
3628*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3629*9880d681SAndroid Build Coastguard Worker;
3630*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskstore_pd_256:
3631*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3632*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3633*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaskmovpd %ymm1, %ymm0, (%eax)
3634*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3635*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.maskstore.pd.256(i8* %a0, <4 x i64> %mask, <4 x double> %a2)
3636*9880d681SAndroid Build Coastguard Worker  ret void
3637*9880d681SAndroid Build Coastguard Worker}
3638*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.pd.256(i8*, <4 x i64>, <4 x double>) nounwind
3639*9880d681SAndroid Build Coastguard Worker
3640*9880d681SAndroid Build Coastguard Worker
3641*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_maskstore_ps(i8* %a0, <4 x i32> %mask, <4 x float> %a2) {
3642*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskstore_ps:
3643*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3644*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3645*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaskmovps %xmm1, %xmm0, (%eax)
3646*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3647*9880d681SAndroid Build Coastguard Worker;
3648*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskstore_ps:
3649*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3650*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3651*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaskmovps %xmm1, %xmm0, (%eax)
3652*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3653*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.maskstore.ps(i8* %a0, <4 x i32> %mask, <4 x float> %a2)
3654*9880d681SAndroid Build Coastguard Worker  ret void
3655*9880d681SAndroid Build Coastguard Worker}
3656*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.ps(i8*, <4 x i32>, <4 x float>) nounwind
3657*9880d681SAndroid Build Coastguard Worker
3658*9880d681SAndroid Build Coastguard Worker
3659*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_maskstore_ps_256(i8* %a0, <8 x i32> %mask, <8 x float> %a2) {
3660*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskstore_ps_256:
3661*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3662*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3663*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaskmovps %ymm1, %ymm0, (%eax)
3664*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
3665*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3666*9880d681SAndroid Build Coastguard Worker;
3667*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskstore_ps_256:
3668*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3669*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3670*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaskmovps %ymm1, %ymm0, (%eax)
3671*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3672*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.maskstore.ps.256(i8* %a0, <8 x i32> %mask, <8 x float> %a2)
3673*9880d681SAndroid Build Coastguard Worker  ret void
3674*9880d681SAndroid Build Coastguard Worker}
3675*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.ps.256(i8*, <8 x i32>, <8 x float>) nounwind
3676*9880d681SAndroid Build Coastguard Worker
3677*9880d681SAndroid Build Coastguard Worker
3678*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_max_pd_256(<4 x double> %a0, <4 x double> %a1) {
3679*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_max_pd_256:
3680*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3681*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaxpd %ymm1, %ymm0, %ymm0
3682*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3683*9880d681SAndroid Build Coastguard Worker;
3684*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_max_pd_256:
3685*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3686*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaxpd %ymm1, %ymm0, %ymm0
3687*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3688*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.max.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
3689*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3690*9880d681SAndroid Build Coastguard Worker}
3691*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.max.pd.256(<4 x double>, <4 x double>) nounwind readnone
3692*9880d681SAndroid Build Coastguard Worker
3693*9880d681SAndroid Build Coastguard Worker
3694*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_max_ps_256(<8 x float> %a0, <8 x float> %a1) {
3695*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_max_ps_256:
3696*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3697*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmaxps %ymm1, %ymm0, %ymm0
3698*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3699*9880d681SAndroid Build Coastguard Worker;
3700*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_max_ps_256:
3701*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3702*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmaxps %ymm1, %ymm0, %ymm0
3703*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3704*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.max.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
3705*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3706*9880d681SAndroid Build Coastguard Worker}
3707*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.max.ps.256(<8 x float>, <8 x float>) nounwind readnone
3708*9880d681SAndroid Build Coastguard Worker
3709*9880d681SAndroid Build Coastguard Worker
3710*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_min_pd_256(<4 x double> %a0, <4 x double> %a1) {
3711*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_min_pd_256:
3712*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3713*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vminpd %ymm1, %ymm0, %ymm0
3714*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3715*9880d681SAndroid Build Coastguard Worker;
3716*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_min_pd_256:
3717*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3718*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vminpd %ymm1, %ymm0, %ymm0
3719*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3720*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.min.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
3721*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3722*9880d681SAndroid Build Coastguard Worker}
3723*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.min.pd.256(<4 x double>, <4 x double>) nounwind readnone
3724*9880d681SAndroid Build Coastguard Worker
3725*9880d681SAndroid Build Coastguard Worker
3726*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_min_ps_256(<8 x float> %a0, <8 x float> %a1) {
3727*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_min_ps_256:
3728*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3729*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vminps %ymm1, %ymm0, %ymm0
3730*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3731*9880d681SAndroid Build Coastguard Worker;
3732*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_min_ps_256:
3733*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3734*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vminps %ymm1, %ymm0, %ymm0
3735*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3736*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.min.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
3737*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3738*9880d681SAndroid Build Coastguard Worker}
3739*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.min.ps.256(<8 x float>, <8 x float>) nounwind readnone
3740*9880d681SAndroid Build Coastguard Worker
3741*9880d681SAndroid Build Coastguard Worker
3742*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_movmsk_pd_256(<4 x double> %a0) {
3743*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_movmsk_pd_256:
3744*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3745*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovmskpd %ymm0, %eax
3746*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
3747*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3748*9880d681SAndroid Build Coastguard Worker;
3749*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_movmsk_pd_256:
3750*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3751*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmovmskpd %ymm0, %eax
3752*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3753*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.movmsk.pd.256(<4 x double> %a0) ; <i32> [#uses=1]
3754*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3755*9880d681SAndroid Build Coastguard Worker}
3756*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.movmsk.pd.256(<4 x double>) nounwind readnone
3757*9880d681SAndroid Build Coastguard Worker
3758*9880d681SAndroid Build Coastguard Worker
3759*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_movmsk_ps_256(<8 x float> %a0) {
3760*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_movmsk_ps_256:
3761*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3762*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovmskps %ymm0, %eax
3763*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
3764*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3765*9880d681SAndroid Build Coastguard Worker;
3766*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_movmsk_ps_256:
3767*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3768*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmovmskps %ymm0, %eax
3769*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3770*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %a0) ; <i32> [#uses=1]
3771*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3772*9880d681SAndroid Build Coastguard Worker}
3773*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.movmsk.ps.256(<8 x float>) nounwind readnone
3774*9880d681SAndroid Build Coastguard Worker
3775*9880d681SAndroid Build Coastguard Worker
3776*9880d681SAndroid Build Coastguard Worker
3777*9880d681SAndroid Build Coastguard Worker
3778*9880d681SAndroid Build Coastguard Worker
3779*9880d681SAndroid Build Coastguard Worker
3780*9880d681SAndroid Build Coastguard Worker
3781*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_ptestc_256(<4 x i64> %a0, <4 x i64> %a1) {
3782*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_ptestc_256:
3783*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3784*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vptest %ymm1, %ymm0
3785*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sbbl %eax, %eax
3786*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andl $1, %eax
3787*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
3788*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3789*9880d681SAndroid Build Coastguard Worker;
3790*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_ptestc_256:
3791*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3792*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vptest %ymm1, %ymm0
3793*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sbbl %eax, %eax
3794*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andl $1, %eax
3795*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3796*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.ptestc.256(<4 x i64> %a0, <4 x i64> %a1) ; <i32> [#uses=1]
3797*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3798*9880d681SAndroid Build Coastguard Worker}
3799*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestc.256(<4 x i64>, <4 x i64>) nounwind readnone
3800*9880d681SAndroid Build Coastguard Worker
3801*9880d681SAndroid Build Coastguard Worker
3802*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_ptestnzc_256(<4 x i64> %a0, <4 x i64> %a1) {
3803*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_ptestnzc_256:
3804*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3805*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
3806*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vptest %ymm1, %ymm0
3807*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
3808*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
3809*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3810*9880d681SAndroid Build Coastguard Worker;
3811*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_ptestnzc_256:
3812*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3813*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
3814*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vptest %ymm1, %ymm0
3815*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
3816*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3817*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.ptestnzc.256(<4 x i64> %a0, <4 x i64> %a1) ; <i32> [#uses=1]
3818*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3819*9880d681SAndroid Build Coastguard Worker}
3820*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestnzc.256(<4 x i64>, <4 x i64>) nounwind readnone
3821*9880d681SAndroid Build Coastguard Worker
3822*9880d681SAndroid Build Coastguard Worker
3823*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_ptestz_256(<4 x i64> %a0, <4 x i64> %a1) {
3824*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_ptestz_256:
3825*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3826*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
3827*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vptest %ymm1, %ymm0
3828*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %al
3829*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
3830*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3831*9880d681SAndroid Build Coastguard Worker;
3832*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_ptestz_256:
3833*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3834*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
3835*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vptest %ymm1, %ymm0
3836*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %al
3837*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3838*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.ptestz.256(<4 x i64> %a0, <4 x i64> %a1) ; <i32> [#uses=1]
3839*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3840*9880d681SAndroid Build Coastguard Worker}
3841*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestz.256(<4 x i64>, <4 x i64>) nounwind readnone
3842*9880d681SAndroid Build Coastguard Worker
3843*9880d681SAndroid Build Coastguard Worker
3844*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_rcp_ps_256(<8 x float> %a0) {
3845*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_rcp_ps_256:
3846*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3847*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vrcpps %ymm0, %ymm0
3848*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3849*9880d681SAndroid Build Coastguard Worker;
3850*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_rcp_ps_256:
3851*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3852*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vrcp14ps %ymm0, %ymm0
3853*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3854*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float> %a0) ; <<8 x float>> [#uses=1]
3855*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3856*9880d681SAndroid Build Coastguard Worker}
3857*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float>) nounwind readnone
3858*9880d681SAndroid Build Coastguard Worker
3859*9880d681SAndroid Build Coastguard Worker
3860*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_round_pd_256(<4 x double> %a0) {
3861*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_round_pd_256:
3862*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3863*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vroundpd $7, %ymm0, %ymm0
3864*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3865*9880d681SAndroid Build Coastguard Worker;
3866*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_round_pd_256:
3867*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3868*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vroundpd $7, %ymm0, %ymm0
3869*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3870*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> %a0, i32 7) ; <<4 x double>> [#uses=1]
3871*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3872*9880d681SAndroid Build Coastguard Worker}
3873*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.round.pd.256(<4 x double>, i32) nounwind readnone
3874*9880d681SAndroid Build Coastguard Worker
3875*9880d681SAndroid Build Coastguard Worker
3876*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_round_ps_256(<8 x float> %a0) {
3877*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_round_ps_256:
3878*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3879*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vroundps $7, %ymm0, %ymm0
3880*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3881*9880d681SAndroid Build Coastguard Worker;
3882*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_round_ps_256:
3883*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3884*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vroundps $7, %ymm0, %ymm0
3885*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3886*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> %a0, i32 7) ; <<8 x float>> [#uses=1]
3887*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3888*9880d681SAndroid Build Coastguard Worker}
3889*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.round.ps.256(<8 x float>, i32) nounwind readnone
3890*9880d681SAndroid Build Coastguard Worker
3891*9880d681SAndroid Build Coastguard Worker
3892*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_rsqrt_ps_256(<8 x float> %a0) {
3893*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_rsqrt_ps_256:
3894*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3895*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vrsqrtps %ymm0, %ymm0
3896*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3897*9880d681SAndroid Build Coastguard Worker;
3898*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_rsqrt_ps_256:
3899*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3900*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vrsqrt14ps %ymm0, %ymm0
3901*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3902*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float> %a0) ; <<8 x float>> [#uses=1]
3903*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3904*9880d681SAndroid Build Coastguard Worker}
3905*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float>) nounwind readnone
3906*9880d681SAndroid Build Coastguard Worker
3907*9880d681SAndroid Build Coastguard Worker
3908*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_sqrt_pd_256(<4 x double> %a0) {
3909*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_sqrt_pd_256:
3910*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3911*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vsqrtpd %ymm0, %ymm0
3912*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3913*9880d681SAndroid Build Coastguard Worker;
3914*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_sqrt_pd_256:
3915*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3916*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vsqrtpd %ymm0, %ymm0
3917*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3918*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double> %a0) ; <<4 x double>> [#uses=1]
3919*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3920*9880d681SAndroid Build Coastguard Worker}
3921*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double>) nounwind readnone
3922*9880d681SAndroid Build Coastguard Worker
3923*9880d681SAndroid Build Coastguard Worker
3924*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_sqrt_ps_256(<8 x float> %a0) {
3925*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_sqrt_ps_256:
3926*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3927*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vsqrtps %ymm0, %ymm0
3928*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3929*9880d681SAndroid Build Coastguard Worker;
3930*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_sqrt_ps_256:
3931*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3932*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vsqrtps %ymm0, %ymm0
3933*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3934*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float> %a0) ; <<8 x float>> [#uses=1]
3935*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3936*9880d681SAndroid Build Coastguard Worker}
3937*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float>) nounwind readnone
3938*9880d681SAndroid Build Coastguard Worker
3939*9880d681SAndroid Build Coastguard Worker
3940*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_vbroadcastf128_pd_256(i8* %a0) {
3941*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vbroadcastf128_pd_256:
3942*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3943*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3944*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]
3945*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3946*9880d681SAndroid Build Coastguard Worker;
3947*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vbroadcastf128_pd_256:
3948*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3949*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3950*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]
3951*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3952*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.vbroadcastf128.pd.256(i8* %a0) ; <<4 x double>> [#uses=1]
3953*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3954*9880d681SAndroid Build Coastguard Worker}
3955*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vbroadcastf128.pd.256(i8*) nounwind readonly
3956*9880d681SAndroid Build Coastguard Worker
3957*9880d681SAndroid Build Coastguard Worker
3958*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_vbroadcastf128_ps_256(i8* %a0) {
3959*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vbroadcastf128_ps_256:
3960*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3961*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
3962*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]
3963*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3964*9880d681SAndroid Build Coastguard Worker;
3965*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vbroadcastf128_ps_256:
3966*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3967*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
3968*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]
3969*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3970*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.vbroadcastf128.ps.256(i8* %a0) ; <<8 x float>> [#uses=1]
3971*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3972*9880d681SAndroid Build Coastguard Worker}
3973*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vbroadcastf128.ps.256(i8*) nounwind readonly
3974*9880d681SAndroid Build Coastguard Worker
3975*9880d681SAndroid Build Coastguard Worker
3976*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_vperm2f128_pd_256(<4 x double> %a0, <4 x double> %a1) {
3977*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vperm2f128_pd_256:
3978*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3979*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1]
3980*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3981*9880d681SAndroid Build Coastguard Worker;
3982*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vperm2f128_pd_256:
3983*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
3984*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1]
3985*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
3986*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.vperm2f128.pd.256(<4 x double> %a0, <4 x double> %a1, i8 7) ; <<4 x double>> [#uses=1]
3987*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3988*9880d681SAndroid Build Coastguard Worker}
3989*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vperm2f128.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone
3990*9880d681SAndroid Build Coastguard Worker
3991*9880d681SAndroid Build Coastguard Worker
3992*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_vperm2f128_ps_256(<8 x float> %a0, <8 x float> %a1) {
3993*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vperm2f128_ps_256:
3994*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
3995*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1]
3996*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
3997*9880d681SAndroid Build Coastguard Worker;
3998*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vperm2f128_ps_256:
3999*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4000*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1]
4001*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4002*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.vperm2f128.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7) ; <<8 x float>> [#uses=1]
4003*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
4004*9880d681SAndroid Build Coastguard Worker}
4005*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vperm2f128.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
4006*9880d681SAndroid Build Coastguard Worker
4007*9880d681SAndroid Build Coastguard Worker
4008*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx_vperm2f128_si_256(<8 x i32> %a0, <8 x i32> %a1) {
4009*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vperm2f128_si_256:
4010*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4011*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1]
4012*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4013*9880d681SAndroid Build Coastguard Worker;
4014*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vperm2f128_si_256:
4015*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4016*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1]
4017*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4018*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx.vperm2f128.si.256(<8 x i32> %a0, <8 x i32> %a1, i8 7) ; <<8 x i32>> [#uses=1]
4019*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
4020*9880d681SAndroid Build Coastguard Worker}
4021*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx.vperm2f128.si.256(<8 x i32>, <8 x i32>, i8) nounwind readnone
4022*9880d681SAndroid Build Coastguard Worker
4023*9880d681SAndroid Build Coastguard Worker
4024*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx_vpermilvar_pd(<2 x double> %a0, <2 x i64> %a1) {
4025*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_pd:
4026*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4027*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpermilpd %xmm1, %xmm0, %xmm0
4028*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4029*9880d681SAndroid Build Coastguard Worker;
4030*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_pd:
4031*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4032*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpermilpd %xmm1, %xmm0, %xmm0
4033*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4034*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> %a0, <2 x i64> %a1) ; <<2 x double>> [#uses=1]
4035*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
4036*9880d681SAndroid Build Coastguard Worker}
4037*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double>, <2 x i64>) nounwind readnone
4038*9880d681SAndroid Build Coastguard Worker
4039*9880d681SAndroid Build Coastguard Worker
4040*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_vpermilvar_pd_256(<4 x double> %a0, <4 x i64> %a1) {
4041*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_pd_256:
4042*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4043*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpermilpd %ymm1, %ymm0, %ymm0
4044*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4045*9880d681SAndroid Build Coastguard Worker;
4046*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_pd_256:
4047*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4048*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpermilpd %ymm1, %ymm0, %ymm0
4049*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4050*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %a0, <4 x i64> %a1) ; <<4 x double>> [#uses=1]
4051*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
4052*9880d681SAndroid Build Coastguard Worker}
4053*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double>, <4 x i64>) nounwind readnone
4054*9880d681SAndroid Build Coastguard Worker
4055*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_vpermilvar_pd_256_2(<4 x double> %a0) {
4056*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_pd_256_2:
4057*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4058*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpermilpd {{.*#+}} ymm0 = ymm0[1,0,2,3]
4059*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4060*9880d681SAndroid Build Coastguard Worker;
4061*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_pd_256_2:
4062*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4063*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpermilpd {{.*#+}} ymm0 = ymm0[1,0,2,3]
4064*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4065*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %a0, <4 x i64> <i64 2, i64 0, i64 0, i64 2>) ; <<4 x double>> [#uses=1]
4066*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
4067*9880d681SAndroid Build Coastguard Worker}
4068*9880d681SAndroid Build Coastguard Worker
4069*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx_vpermilvar_ps(<4 x float> %a0, <4 x i32> %a1) {
4070*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_ps:
4071*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4072*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpermilps %xmm1, %xmm0, %xmm0
4073*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4074*9880d681SAndroid Build Coastguard Worker;
4075*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_ps:
4076*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4077*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpermilps %xmm1, %xmm0, %xmm0
4078*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4079*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> %a0, <4 x i32> %a1) ; <<4 x float>> [#uses=1]
4080*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
4081*9880d681SAndroid Build Coastguard Worker}
4082*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx_vpermilvar_ps_load(<4 x float> %a0, <4 x i32>* %a1) {
4083*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_ps_load:
4084*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4085*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4086*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpermilps (%eax), %xmm0, %xmm0
4087*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4088*9880d681SAndroid Build Coastguard Worker;
4089*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_ps_load:
4090*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4091*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4092*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpermilps (%eax), %xmm0, %xmm0
4093*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4094*9880d681SAndroid Build Coastguard Worker  %a2 = load <4 x i32>, <4 x i32>* %a1
4095*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> %a0, <4 x i32> %a2) ; <<4 x float>> [#uses=1]
4096*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
4097*9880d681SAndroid Build Coastguard Worker}
4098*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float>, <4 x i32>) nounwind readnone
4099*9880d681SAndroid Build Coastguard Worker
4100*9880d681SAndroid Build Coastguard Worker
4101*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_vpermilvar_ps_256(<8 x float> %a0, <8 x i32> %a1) {
4102*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_ps_256:
4103*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4104*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpermilps %ymm1, %ymm0, %ymm0
4105*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4106*9880d681SAndroid Build Coastguard Worker;
4107*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_ps_256:
4108*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4109*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpermilps %ymm1, %ymm0, %ymm0
4110*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4111*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float> %a0, <8 x i32> %a1) ; <<8 x float>> [#uses=1]
4112*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
4113*9880d681SAndroid Build Coastguard Worker}
4114*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float>, <8 x i32>) nounwind readnone
4115*9880d681SAndroid Build Coastguard Worker
4116*9880d681SAndroid Build Coastguard Worker
4117*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestc_pd(<2 x double> %a0, <2 x double> %a1) {
4118*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestc_pd:
4119*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4120*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestpd %xmm1, %xmm0
4121*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sbbl %eax, %eax
4122*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andl $1, %eax
4123*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4124*9880d681SAndroid Build Coastguard Worker;
4125*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestc_pd:
4126*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4127*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestpd %xmm1, %xmm0
4128*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sbbl %eax, %eax
4129*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andl $1, %eax
4130*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4131*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestc.pd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
4132*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4133*9880d681SAndroid Build Coastguard Worker}
4134*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.pd(<2 x double>, <2 x double>) nounwind readnone
4135*9880d681SAndroid Build Coastguard Worker
4136*9880d681SAndroid Build Coastguard Worker
4137*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestc_pd_256(<4 x double> %a0, <4 x double> %a1) {
4138*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestc_pd_256:
4139*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4140*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestpd %ymm1, %ymm0
4141*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sbbl %eax, %eax
4142*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andl $1, %eax
4143*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4144*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4145*9880d681SAndroid Build Coastguard Worker;
4146*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestc_pd_256:
4147*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4148*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestpd %ymm1, %ymm0
4149*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sbbl %eax, %eax
4150*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andl $1, %eax
4151*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4152*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestc.pd.256(<4 x double> %a0, <4 x double> %a1) ; <i32> [#uses=1]
4153*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4154*9880d681SAndroid Build Coastguard Worker}
4155*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.pd.256(<4 x double>, <4 x double>) nounwind readnone
4156*9880d681SAndroid Build Coastguard Worker
4157*9880d681SAndroid Build Coastguard Worker
4158*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestc_ps(<4 x float> %a0, <4 x float> %a1) {
4159*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestc_ps:
4160*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4161*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestps %xmm1, %xmm0
4162*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sbbl %eax, %eax
4163*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andl $1, %eax
4164*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4165*9880d681SAndroid Build Coastguard Worker;
4166*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestc_ps:
4167*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4168*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestps %xmm1, %xmm0
4169*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sbbl %eax, %eax
4170*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andl $1, %eax
4171*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4172*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestc.ps(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
4173*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4174*9880d681SAndroid Build Coastguard Worker}
4175*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.ps(<4 x float>, <4 x float>) nounwind readnone
4176*9880d681SAndroid Build Coastguard Worker
4177*9880d681SAndroid Build Coastguard Worker
4178*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestc_ps_256(<8 x float> %a0, <8 x float> %a1) {
4179*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestc_ps_256:
4180*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4181*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestps %ymm1, %ymm0
4182*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sbbl %eax, %eax
4183*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    andl $1, %eax
4184*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4185*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4186*9880d681SAndroid Build Coastguard Worker;
4187*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestc_ps_256:
4188*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4189*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestps %ymm1, %ymm0
4190*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sbbl %eax, %eax
4191*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    andl $1, %eax
4192*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4193*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestc.ps.256(<8 x float> %a0, <8 x float> %a1) ; <i32> [#uses=1]
4194*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4195*9880d681SAndroid Build Coastguard Worker}
4196*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.ps.256(<8 x float>, <8 x float>) nounwind readnone
4197*9880d681SAndroid Build Coastguard Worker
4198*9880d681SAndroid Build Coastguard Worker
4199*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestnzc_pd(<2 x double> %a0, <2 x double> %a1) {
4200*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestnzc_pd:
4201*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4202*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
4203*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestpd %xmm1, %xmm0
4204*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
4205*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4206*9880d681SAndroid Build Coastguard Worker;
4207*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestnzc_pd:
4208*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4209*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
4210*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestpd %xmm1, %xmm0
4211*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
4212*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4213*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestnzc.pd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
4214*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4215*9880d681SAndroid Build Coastguard Worker}
4216*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.pd(<2 x double>, <2 x double>) nounwind readnone
4217*9880d681SAndroid Build Coastguard Worker
4218*9880d681SAndroid Build Coastguard Worker
4219*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestnzc_pd_256(<4 x double> %a0, <4 x double> %a1) {
4220*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestnzc_pd_256:
4221*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4222*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
4223*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestpd %ymm1, %ymm0
4224*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
4225*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4226*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4227*9880d681SAndroid Build Coastguard Worker;
4228*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestnzc_pd_256:
4229*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4230*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
4231*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestpd %ymm1, %ymm0
4232*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
4233*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4234*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestnzc.pd.256(<4 x double> %a0, <4 x double> %a1) ; <i32> [#uses=1]
4235*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4236*9880d681SAndroid Build Coastguard Worker}
4237*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.pd.256(<4 x double>, <4 x double>) nounwind readnone
4238*9880d681SAndroid Build Coastguard Worker
4239*9880d681SAndroid Build Coastguard Worker
4240*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestnzc_ps(<4 x float> %a0, <4 x float> %a1) {
4241*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestnzc_ps:
4242*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4243*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
4244*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestps %xmm1, %xmm0
4245*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
4246*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4247*9880d681SAndroid Build Coastguard Worker;
4248*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestnzc_ps:
4249*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4250*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
4251*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestps %xmm1, %xmm0
4252*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
4253*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4254*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestnzc.ps(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
4255*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4256*9880d681SAndroid Build Coastguard Worker}
4257*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.ps(<4 x float>, <4 x float>) nounwind readnone
4258*9880d681SAndroid Build Coastguard Worker
4259*9880d681SAndroid Build Coastguard Worker
4260*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestnzc_ps_256(<8 x float> %a0, <8 x float> %a1) {
4261*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestnzc_ps_256:
4262*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4263*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
4264*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestps %ymm1, %ymm0
4265*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    seta %al
4266*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4267*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4268*9880d681SAndroid Build Coastguard Worker;
4269*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestnzc_ps_256:
4270*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4271*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
4272*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestps %ymm1, %ymm0
4273*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    seta %al
4274*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4275*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestnzc.ps.256(<8 x float> %a0, <8 x float> %a1) ; <i32> [#uses=1]
4276*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4277*9880d681SAndroid Build Coastguard Worker}
4278*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.ps.256(<8 x float>, <8 x float>) nounwind readnone
4279*9880d681SAndroid Build Coastguard Worker
4280*9880d681SAndroid Build Coastguard Worker
4281*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestz_pd(<2 x double> %a0, <2 x double> %a1) {
4282*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestz_pd:
4283*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4284*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
4285*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestpd %xmm1, %xmm0
4286*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %al
4287*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4288*9880d681SAndroid Build Coastguard Worker;
4289*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestz_pd:
4290*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4291*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
4292*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestpd %xmm1, %xmm0
4293*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %al
4294*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4295*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestz.pd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
4296*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4297*9880d681SAndroid Build Coastguard Worker}
4298*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.pd(<2 x double>, <2 x double>) nounwind readnone
4299*9880d681SAndroid Build Coastguard Worker
4300*9880d681SAndroid Build Coastguard Worker
4301*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestz_pd_256(<4 x double> %a0, <4 x double> %a1) {
4302*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestz_pd_256:
4303*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4304*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
4305*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestpd %ymm1, %ymm0
4306*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %al
4307*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4308*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4309*9880d681SAndroid Build Coastguard Worker;
4310*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestz_pd_256:
4311*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4312*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
4313*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestpd %ymm1, %ymm0
4314*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %al
4315*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4316*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestz.pd.256(<4 x double> %a0, <4 x double> %a1) ; <i32> [#uses=1]
4317*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4318*9880d681SAndroid Build Coastguard Worker}
4319*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.pd.256(<4 x double>, <4 x double>) nounwind readnone
4320*9880d681SAndroid Build Coastguard Worker
4321*9880d681SAndroid Build Coastguard Worker
4322*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestz_ps(<4 x float> %a0, <4 x float> %a1) {
4323*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestz_ps:
4324*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4325*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
4326*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestps %xmm1, %xmm0
4327*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %al
4328*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4329*9880d681SAndroid Build Coastguard Worker;
4330*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestz_ps:
4331*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4332*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
4333*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestps %xmm1, %xmm0
4334*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %al
4335*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4336*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestz.ps(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
4337*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4338*9880d681SAndroid Build Coastguard Worker}
4339*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.ps(<4 x float>, <4 x float>) nounwind readnone
4340*9880d681SAndroid Build Coastguard Worker
4341*9880d681SAndroid Build Coastguard Worker
4342*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestz_ps_256(<8 x float> %a0, <8 x float> %a1) {
4343*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestz_ps_256:
4344*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4345*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    xorl %eax, %eax
4346*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vtestps %ymm1, %ymm0
4347*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sete %al
4348*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4349*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4350*9880d681SAndroid Build Coastguard Worker;
4351*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestz_ps_256:
4352*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4353*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    xorl %eax, %eax
4354*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vtestps %ymm1, %ymm0
4355*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sete %al
4356*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4357*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestz.ps.256(<8 x float> %a0, <8 x float> %a1) ; <i32> [#uses=1]
4358*9880d681SAndroid Build Coastguard Worker  ret i32 %res
4359*9880d681SAndroid Build Coastguard Worker}
4360*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.ps.256(<8 x float>, <8 x float>) nounwind readnone
4361*9880d681SAndroid Build Coastguard Worker
4362*9880d681SAndroid Build Coastguard Worker
4363*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_vzeroall() {
4364*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vzeroall:
4365*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4366*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroall
4367*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4368*9880d681SAndroid Build Coastguard Worker;
4369*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vzeroall:
4370*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4371*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vzeroall
4372*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4373*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.vzeroall()
4374*9880d681SAndroid Build Coastguard Worker  ret void
4375*9880d681SAndroid Build Coastguard Worker}
4376*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.vzeroall() nounwind
4377*9880d681SAndroid Build Coastguard Worker
4378*9880d681SAndroid Build Coastguard Worker
4379*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_vzeroupper() {
4380*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vzeroupper:
4381*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4382*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4383*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4384*9880d681SAndroid Build Coastguard Worker;
4385*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vzeroupper:
4386*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4387*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vzeroupper
4388*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4389*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.vzeroupper()
4390*9880d681SAndroid Build Coastguard Worker  ret void
4391*9880d681SAndroid Build Coastguard Worker}
4392*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.vzeroupper() nounwind
4393*9880d681SAndroid Build Coastguard Worker
4394*9880d681SAndroid Build Coastguard Worker; Make sure instructions with no AVX equivalents, but are associated with SSEX feature flags still work
4395*9880d681SAndroid Build Coastguard Worker
4396*9880d681SAndroid Build Coastguard Workerdefine void @monitor(i8* %P, i32 %E, i32 %H) nounwind {
4397*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: monitor:
4398*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4399*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %edx
4400*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4401*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4402*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    leal (%eax), %eax
4403*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    monitor
4404*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4405*9880d681SAndroid Build Coastguard Worker;
4406*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: monitor:
4407*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4408*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %edx
4409*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4410*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4411*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    leal (%eax), %eax
4412*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    monitor
4413*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4414*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.sse3.monitor(i8* %P, i32 %E, i32 %H)
4415*9880d681SAndroid Build Coastguard Worker  ret void
4416*9880d681SAndroid Build Coastguard Worker}
4417*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse3.monitor(i8*, i32, i32) nounwind
4418*9880d681SAndroid Build Coastguard Worker
4419*9880d681SAndroid Build Coastguard Workerdefine void @mwait(i32 %E, i32 %H) nounwind {
4420*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: mwait:
4421*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4422*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4423*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4424*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    mwait
4425*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4426*9880d681SAndroid Build Coastguard Worker;
4427*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: mwait:
4428*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4429*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4430*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4431*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    mwait
4432*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4433*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.sse3.mwait(i32 %E, i32 %H)
4434*9880d681SAndroid Build Coastguard Worker  ret void
4435*9880d681SAndroid Build Coastguard Worker}
4436*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse3.mwait(i32, i32) nounwind
4437*9880d681SAndroid Build Coastguard Worker
4438*9880d681SAndroid Build Coastguard Workerdefine void @sfence() nounwind {
4439*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sfence:
4440*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4441*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sfence
4442*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4443*9880d681SAndroid Build Coastguard Worker;
4444*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: sfence:
4445*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4446*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    sfence
4447*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4448*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.sse.sfence()
4449*9880d681SAndroid Build Coastguard Worker  ret void
4450*9880d681SAndroid Build Coastguard Worker}
4451*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.sfence() nounwind
4452*9880d681SAndroid Build Coastguard Worker
4453*9880d681SAndroid Build Coastguard Workerdefine void @lfence() nounwind {
4454*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: lfence:
4455*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4456*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    lfence
4457*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4458*9880d681SAndroid Build Coastguard Worker;
4459*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: lfence:
4460*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4461*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    lfence
4462*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4463*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.sse2.lfence()
4464*9880d681SAndroid Build Coastguard Worker  ret void
4465*9880d681SAndroid Build Coastguard Worker}
4466*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.lfence() nounwind
4467*9880d681SAndroid Build Coastguard Worker
4468*9880d681SAndroid Build Coastguard Workerdefine void @mfence() nounwind {
4469*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: mfence:
4470*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4471*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    mfence
4472*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4473*9880d681SAndroid Build Coastguard Worker;
4474*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: mfence:
4475*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4476*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    mfence
4477*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4478*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.sse2.mfence()
4479*9880d681SAndroid Build Coastguard Worker  ret void
4480*9880d681SAndroid Build Coastguard Worker}
4481*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.mfence() nounwind
4482*9880d681SAndroid Build Coastguard Worker
4483*9880d681SAndroid Build Coastguard Workerdefine void @clflush(i8* %p) nounwind {
4484*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: clflush:
4485*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4486*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4487*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    clflush (%eax)
4488*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4489*9880d681SAndroid Build Coastguard Worker;
4490*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: clflush:
4491*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4492*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4493*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    clflush (%eax)
4494*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4495*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.sse2.clflush(i8* %p)
4496*9880d681SAndroid Build Coastguard Worker  ret void
4497*9880d681SAndroid Build Coastguard Worker}
4498*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.clflush(i8*) nounwind
4499*9880d681SAndroid Build Coastguard Worker
4500*9880d681SAndroid Build Coastguard Workerdefine i32 @crc32_32_8(i32 %a, i8 %b) nounwind {
4501*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: crc32_32_8:
4502*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4503*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4504*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    crc32b {{[0-9]+}}(%esp), %eax
4505*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4506*9880d681SAndroid Build Coastguard Worker;
4507*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: crc32_32_8:
4508*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4509*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4510*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    crc32b {{[0-9]+}}(%esp), %eax
4511*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4512*9880d681SAndroid Build Coastguard Worker  %tmp = call i32 @llvm.x86.sse42.crc32.32.8(i32 %a, i8 %b)
4513*9880d681SAndroid Build Coastguard Worker  ret i32 %tmp
4514*9880d681SAndroid Build Coastguard Worker}
4515*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.crc32.32.8(i32, i8) nounwind
4516*9880d681SAndroid Build Coastguard Worker
4517*9880d681SAndroid Build Coastguard Workerdefine i32 @crc32_32_16(i32 %a, i16 %b) nounwind {
4518*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: crc32_32_16:
4519*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4520*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4521*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    crc32w {{[0-9]+}}(%esp), %eax
4522*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4523*9880d681SAndroid Build Coastguard Worker;
4524*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: crc32_32_16:
4525*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4526*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4527*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    crc32w {{[0-9]+}}(%esp), %eax
4528*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4529*9880d681SAndroid Build Coastguard Worker  %tmp = call i32 @llvm.x86.sse42.crc32.32.16(i32 %a, i16 %b)
4530*9880d681SAndroid Build Coastguard Worker  ret i32 %tmp
4531*9880d681SAndroid Build Coastguard Worker}
4532*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.crc32.32.16(i32, i16) nounwind
4533*9880d681SAndroid Build Coastguard Worker
4534*9880d681SAndroid Build Coastguard Workerdefine i32 @crc32_32_32(i32 %a, i32 %b) nounwind {
4535*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: crc32_32_32:
4536*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4537*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4538*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    crc32l {{[0-9]+}}(%esp), %eax
4539*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4540*9880d681SAndroid Build Coastguard Worker;
4541*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: crc32_32_32:
4542*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4543*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4544*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    crc32l {{[0-9]+}}(%esp), %eax
4545*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4546*9880d681SAndroid Build Coastguard Worker  %tmp = call i32 @llvm.x86.sse42.crc32.32.32(i32 %a, i32 %b)
4547*9880d681SAndroid Build Coastguard Worker  ret i32 %tmp
4548*9880d681SAndroid Build Coastguard Worker}
4549*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.crc32.32.32(i32, i32) nounwind
4550*9880d681SAndroid Build Coastguard Worker
4551*9880d681SAndroid Build Coastguard Workerdefine void @movnt_dq(i8* %p, <2 x i64> %a1) nounwind {
4552*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: movnt_dq:
4553*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4554*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4555*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpaddq LCPI254_0, %xmm0, %xmm0
4556*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovntdq %ymm0, (%eax)
4557*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4558*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4559*9880d681SAndroid Build Coastguard Worker;
4560*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: movnt_dq:
4561*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4562*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4563*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpaddq LCPI254_0, %xmm0, %xmm0
4564*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmovntdq %ymm0, (%eax)
4565*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4566*9880d681SAndroid Build Coastguard Worker  %a2 = add <2 x i64> %a1, <i64 1, i64 1>
4567*9880d681SAndroid Build Coastguard Worker  %a3 = shufflevector <2 x i64> %a2, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
4568*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.avx.movnt.dq.256(i8* %p, <4 x i64> %a3) nounwind
4569*9880d681SAndroid Build Coastguard Worker  ret void
4570*9880d681SAndroid Build Coastguard Worker}
4571*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.movnt.dq.256(i8*, <4 x i64>) nounwind
4572*9880d681SAndroid Build Coastguard Worker
4573*9880d681SAndroid Build Coastguard Workerdefine void @movnt_ps(i8* %p, <8 x float> %a) nounwind {
4574*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: movnt_ps:
4575*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4576*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4577*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovntps %ymm0, (%eax)
4578*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4579*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4580*9880d681SAndroid Build Coastguard Worker;
4581*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: movnt_ps:
4582*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4583*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4584*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmovntps %ymm0, (%eax)
4585*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4586*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.avx.movnt.ps.256(i8* %p, <8 x float> %a) nounwind
4587*9880d681SAndroid Build Coastguard Worker  ret void
4588*9880d681SAndroid Build Coastguard Worker}
4589*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.movnt.ps.256(i8*, <8 x float>) nounwind
4590*9880d681SAndroid Build Coastguard Worker
4591*9880d681SAndroid Build Coastguard Workerdefine void @movnt_pd(i8* %p, <4 x double> %a1) nounwind {
4592*9880d681SAndroid Build Coastguard Worker  ; add operation forces the execution domain.
4593*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: movnt_pd:
4594*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4595*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movl {{[0-9]+}}(%esp), %eax
4596*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vxorpd %ymm1, %ymm1, %ymm1
4597*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
4598*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovntpd %ymm0, (%eax)
4599*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vzeroupper
4600*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4601*9880d681SAndroid Build Coastguard Worker;
4602*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: movnt_pd:
4603*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4604*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    movl {{[0-9]+}}(%esp), %eax
4605*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpxord %ymm1, %ymm1, %ymm1
4606*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
4607*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vmovntpd %ymm0, (%eax)
4608*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4609*9880d681SAndroid Build Coastguard Worker  %a2 = fadd <4 x double> %a1, <double 0x0, double 0x0, double 0x0, double 0x0>
4610*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.avx.movnt.pd.256(i8* %p, <4 x double> %a2) nounwind
4611*9880d681SAndroid Build Coastguard Worker  ret void
4612*9880d681SAndroid Build Coastguard Worker}
4613*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.movnt.pd.256(i8*, <4 x double>) nounwind
4614*9880d681SAndroid Build Coastguard Worker
4615*9880d681SAndroid Build Coastguard Worker
4616*9880d681SAndroid Build Coastguard Worker; Check for pclmulqdq
4617*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_pclmulqdq(<2 x i64> %a0, <2 x i64> %a1) {
4618*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_pclmulqdq:
4619*9880d681SAndroid Build Coastguard Worker; AVX:       ## BB#0:
4620*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpclmulqdq $0, %xmm1, %xmm0, %xmm0
4621*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retl
4622*9880d681SAndroid Build Coastguard Worker;
4623*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_pclmulqdq:
4624*9880d681SAndroid Build Coastguard Worker; AVX512VL:       ## BB#0:
4625*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    vpclmulqdq $0, %xmm1, %xmm0, %xmm0
4626*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT:    retl
4627*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ; <<2 x i64>> [#uses=1]
4628*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
4629*9880d681SAndroid Build Coastguard Worker}
4630*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.pclmulqdq(<2 x i64>, <2 x i64>, i8) nounwind readnone
4631