xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512-mov.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 -march=x86-64 -mtriple=x86_64-apple-darwin -mcpu=knl --show-mc-encoding| FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine i32 @test1(float %x) {
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1:
6*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %xmm0, %eax ## encoding: [0x62,0xf1,0x7d,0x08,0x7e,0xc0]
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
9*9880d681SAndroid Build Coastguard Worker   %res = bitcast float %x to i32
10*9880d681SAndroid Build Coastguard Worker   ret i32 %res
11*9880d681SAndroid Build Coastguard Worker}
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test2(i32 %x) {
14*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2:
15*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %edi, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc7]
17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
18*9880d681SAndroid Build Coastguard Worker   %res = insertelement <4 x i32>undef, i32 %x, i32 0
19*9880d681SAndroid Build Coastguard Worker   ret <4 x i32>%res
20*9880d681SAndroid Build Coastguard Worker}
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test3(i64 %x) {
23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test3:
24*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovq %rdi, %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x6e,0xc7]
26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
27*9880d681SAndroid Build Coastguard Worker   %res = insertelement <2 x i64>undef, i64 %x, i32 0
28*9880d681SAndroid Build Coastguard Worker   ret <2 x i64>%res
29*9880d681SAndroid Build Coastguard Worker}
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test4(i32* %x) {
32*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test4:
33*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0x07]
35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## xmm0 = mem[0],zero,zero,zero
36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
37*9880d681SAndroid Build Coastguard Worker   %y = load i32, i32* %x
38*9880d681SAndroid Build Coastguard Worker   %res = insertelement <4 x i32>undef, i32 %y, i32 0
39*9880d681SAndroid Build Coastguard Worker   ret <4 x i32>%res
40*9880d681SAndroid Build Coastguard Worker}
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Workerdefine void @test5(float %x, float* %y) {
43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test5:
44*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovss %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7e,0x08,0x11,0x07]
46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
47*9880d681SAndroid Build Coastguard Worker   store float %x, float* %y, align 4
48*9880d681SAndroid Build Coastguard Worker   ret void
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workerdefine void @test6(double %x, double* %y) {
52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test6:
53*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovsd %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xff,0x08,0x11,0x07]
55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
56*9880d681SAndroid Build Coastguard Worker   store double %x, double* %y, align 8
57*9880d681SAndroid Build Coastguard Worker   ret void
58*9880d681SAndroid Build Coastguard Worker}
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerdefine float @test7(i32* %x) {
61*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test7:
62*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovss (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7e,0x08,0x10,0x07]
64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## xmm0 = mem[0],zero,zero,zero
65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
66*9880d681SAndroid Build Coastguard Worker   %y = load i32, i32* %x
67*9880d681SAndroid Build Coastguard Worker   %res = bitcast i32 %y to float
68*9880d681SAndroid Build Coastguard Worker   ret float %res
69*9880d681SAndroid Build Coastguard Worker}
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Workerdefine i32 @test8(<4 x i32> %x) {
72*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8:
73*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %xmm0, %eax ## encoding: [0x62,0xf1,0x7d,0x08,0x7e,0xc0]
75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
76*9880d681SAndroid Build Coastguard Worker   %res = extractelement <4 x i32> %x, i32 0
77*9880d681SAndroid Build Coastguard Worker   ret i32 %res
78*9880d681SAndroid Build Coastguard Worker}
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Workerdefine i64 @test9(<2 x i64> %x) {
81*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test9:
82*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovq %xmm0, %rax ## encoding: [0x62,0xf1,0xfd,0x08,0x7e,0xc0]
84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
85*9880d681SAndroid Build Coastguard Worker   %res = extractelement <2 x i64> %x, i32 0
86*9880d681SAndroid Build Coastguard Worker   ret i64 %res
87*9880d681SAndroid Build Coastguard Worker}
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test10(i32* %x) {
90*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test10:
91*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0x07]
93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## xmm0 = mem[0],zero,zero,zero
94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
95*9880d681SAndroid Build Coastguard Worker   %y = load i32, i32* %x, align 4
96*9880d681SAndroid Build Coastguard Worker   %res = insertelement <4 x i32>zeroinitializer, i32 %y, i32 0
97*9880d681SAndroid Build Coastguard Worker   ret <4 x i32>%res
98*9880d681SAndroid Build Coastguard Worker}
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test11(float* %x) {
101*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test11:
102*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovss (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7e,0x08,0x10,0x07]
104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## xmm0 = mem[0],zero,zero,zero
105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
106*9880d681SAndroid Build Coastguard Worker   %y = load float, float* %x, align 4
107*9880d681SAndroid Build Coastguard Worker   %res = insertelement <4 x float>zeroinitializer, float %y, i32 0
108*9880d681SAndroid Build Coastguard Worker   ret <4 x float>%res
109*9880d681SAndroid Build Coastguard Worker}
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test12(double* %x) {
112*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test12:
113*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovsd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xff,0x08,0x10,0x07]
115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## xmm0 = mem[0],zero
116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
117*9880d681SAndroid Build Coastguard Worker   %y = load double, double* %x, align 8
118*9880d681SAndroid Build Coastguard Worker   %res = insertelement <2 x double>zeroinitializer, double %y, i32 0
119*9880d681SAndroid Build Coastguard Worker   ret <2 x double>%res
120*9880d681SAndroid Build Coastguard Worker}
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test13(i64 %x) {
123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test13:
124*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovq %rdi, %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x6e,0xc7]
126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
127*9880d681SAndroid Build Coastguard Worker   %res = insertelement <2 x i64>zeroinitializer, i64 %x, i32 0
128*9880d681SAndroid Build Coastguard Worker   ret <2 x i64>%res
129*9880d681SAndroid Build Coastguard Worker}
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test14(i32 %x) {
132*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test14:
133*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %edi, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc7]
135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
136*9880d681SAndroid Build Coastguard Worker   %res = insertelement <4 x i32>zeroinitializer, i32 %x, i32 0
137*9880d681SAndroid Build Coastguard Worker   ret <4 x i32>%res
138*9880d681SAndroid Build Coastguard Worker}
139*9880d681SAndroid Build Coastguard Worker
140*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test15(i32* %x) {
141*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test15:
142*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0x07]
144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## xmm0 = mem[0],zero,zero,zero
145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
146*9880d681SAndroid Build Coastguard Worker   %y = load i32, i32* %x, align 4
147*9880d681SAndroid Build Coastguard Worker   %res = insertelement <4 x i32>zeroinitializer, i32 %y, i32 0
148*9880d681SAndroid Build Coastguard Worker   ret <4 x i32>%res
149*9880d681SAndroid Build Coastguard Worker}
150*9880d681SAndroid Build Coastguard Worker
151*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test16(i8 * %addr) {
152*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16:
153*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu32 (%rdi), %zmm0 ## encoding: [0x62,0xf1,0x7e,0x48,0x6f,0x07]
155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
156*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x i32>*
157*9880d681SAndroid Build Coastguard Worker  %res = load <16 x i32>, <16 x i32>* %vaddr, align 1
158*9880d681SAndroid Build Coastguard Worker  ret <16 x i32>%res
159*9880d681SAndroid Build Coastguard Worker}
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test17(i8 * %addr) {
162*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test17:
163*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 (%rdi), %zmm0 ## encoding: [0x62,0xf1,0x7d,0x48,0x6f,0x07]
165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
166*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x i32>*
167*9880d681SAndroid Build Coastguard Worker  %res = load <16 x i32>, <16 x i32>* %vaddr, align 64
168*9880d681SAndroid Build Coastguard Worker  ret <16 x i32>%res
169*9880d681SAndroid Build Coastguard Worker}
170*9880d681SAndroid Build Coastguard Worker
171*9880d681SAndroid Build Coastguard Workerdefine void @test18(i8 * %addr, <8 x i64> %data) {
172*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test18:
173*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 %zmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x48,0x7f,0x07]
175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
176*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i64>*
177*9880d681SAndroid Build Coastguard Worker  store <8 x i64>%data, <8 x i64>* %vaddr, align 64
178*9880d681SAndroid Build Coastguard Worker  ret void
179*9880d681SAndroid Build Coastguard Worker}
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Workerdefine void @test19(i8 * %addr, <16 x i32> %data) {
182*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test19:
183*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu32 %zmm0, (%rdi) ## encoding: [0x62,0xf1,0x7e,0x48,0x7f,0x07]
185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
186*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x i32>*
187*9880d681SAndroid Build Coastguard Worker  store <16 x i32>%data, <16 x i32>* %vaddr, align 1
188*9880d681SAndroid Build Coastguard Worker  ret void
189*9880d681SAndroid Build Coastguard Worker}
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Workerdefine void @test20(i8 * %addr, <16 x i32> %data) {
192*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test20:
193*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 %zmm0, (%rdi) ## encoding: [0x62,0xf1,0x7d,0x48,0x7f,0x07]
195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
196*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x i32>*
197*9880d681SAndroid Build Coastguard Worker  store <16 x i32>%data, <16 x i32>* %vaddr, align 64
198*9880d681SAndroid Build Coastguard Worker  ret void
199*9880d681SAndroid Build Coastguard Worker}
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Workerdefine  <8 x i64> @test21(i8 * %addr) {
202*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test21:
203*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x6f,0x07]
205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
206*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i64>*
207*9880d681SAndroid Build Coastguard Worker  %res = load <8 x i64>, <8 x i64>* %vaddr, align 64
208*9880d681SAndroid Build Coastguard Worker  ret <8 x i64>%res
209*9880d681SAndroid Build Coastguard Worker}
210*9880d681SAndroid Build Coastguard Worker
211*9880d681SAndroid Build Coastguard Workerdefine void @test22(i8 * %addr, <8 x i64> %data) {
212*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test22:
213*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu64 %zmm0, (%rdi) ## encoding: [0x62,0xf1,0xfe,0x48,0x7f,0x07]
215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
216*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i64>*
217*9880d681SAndroid Build Coastguard Worker  store <8 x i64>%data, <8 x i64>* %vaddr, align 1
218*9880d681SAndroid Build Coastguard Worker  ret void
219*9880d681SAndroid Build Coastguard Worker}
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test23(i8 * %addr) {
222*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test23:
223*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu64 (%rdi), %zmm0 ## encoding: [0x62,0xf1,0xfe,0x48,0x6f,0x07]
225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
226*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i64>*
227*9880d681SAndroid Build Coastguard Worker  %res = load <8 x i64>, <8 x i64>* %vaddr, align 1
228*9880d681SAndroid Build Coastguard Worker  ret <8 x i64>%res
229*9880d681SAndroid Build Coastguard Worker}
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Workerdefine void @test24(i8 * %addr, <8 x double> %data) {
232*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test24:
233*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovapd %zmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x48,0x29,0x07]
235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
236*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x double>*
237*9880d681SAndroid Build Coastguard Worker  store <8 x double>%data, <8 x double>* %vaddr, align 64
238*9880d681SAndroid Build Coastguard Worker  ret void
239*9880d681SAndroid Build Coastguard Worker}
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test25(i8 * %addr) {
242*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test25:
243*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovapd (%rdi), %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0x07]
245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
246*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x double>*
247*9880d681SAndroid Build Coastguard Worker  %res = load <8 x double>, <8 x double>* %vaddr, align 64
248*9880d681SAndroid Build Coastguard Worker  ret <8 x double>%res
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine void @test26(i8 * %addr, <16 x float> %data) {
252*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test26:
253*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x48,0x29,0x07]
255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
256*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x float>*
257*9880d681SAndroid Build Coastguard Worker  store <16 x float>%data, <16 x float>* %vaddr, align 64
258*9880d681SAndroid Build Coastguard Worker  ret void
259*9880d681SAndroid Build Coastguard Worker}
260*9880d681SAndroid Build Coastguard Worker
261*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test27(i8 * %addr) {
262*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test27:
263*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps (%rdi), %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0x07]
265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
266*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x float>*
267*9880d681SAndroid Build Coastguard Worker  %res = load <16 x float>, <16 x float>* %vaddr, align 64
268*9880d681SAndroid Build Coastguard Worker  ret <16 x float>%res
269*9880d681SAndroid Build Coastguard Worker}
270*9880d681SAndroid Build Coastguard Worker
271*9880d681SAndroid Build Coastguard Workerdefine void @test28(i8 * %addr, <8 x double> %data) {
272*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test28:
273*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovupd %zmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x48,0x11,0x07]
275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
276*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x double>*
277*9880d681SAndroid Build Coastguard Worker  store <8 x double>%data, <8 x double>* %vaddr, align 1
278*9880d681SAndroid Build Coastguard Worker  ret void
279*9880d681SAndroid Build Coastguard Worker}
280*9880d681SAndroid Build Coastguard Worker
281*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test29(i8 * %addr) {
282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test29:
283*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovupd (%rdi), %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x10,0x07]
285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
286*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x double>*
287*9880d681SAndroid Build Coastguard Worker  %res = load <8 x double>, <8 x double>* %vaddr, align 1
288*9880d681SAndroid Build Coastguard Worker  ret <8 x double>%res
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Workerdefine void @test30(i8 * %addr, <16 x float> %data) {
292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test30:
293*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovups %zmm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x07]
295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
296*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x float>*
297*9880d681SAndroid Build Coastguard Worker  store <16 x float>%data, <16 x float>* %vaddr, align 1
298*9880d681SAndroid Build Coastguard Worker  ret void
299*9880d681SAndroid Build Coastguard Worker}
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test31(i8 * %addr) {
302*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test31:
303*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovups (%rdi), %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x07]
305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
306*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x float>*
307*9880d681SAndroid Build Coastguard Worker  %res = load <16 x float>, <16 x float>* %vaddr, align 1
308*9880d681SAndroid Build Coastguard Worker  ret <16 x float>%res
309*9880d681SAndroid Build Coastguard Worker}
310*9880d681SAndroid Build Coastguard Worker
311*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test32(i8 * %addr, <16 x i32> %old, <16 x i32> %mask1) {
312*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test32:
313*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2]
315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x48,0x1f,0xca,0x04]
316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0x64,0x07]
317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
318*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <16 x i32> %mask1, zeroinitializer
319*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x i32>*
320*9880d681SAndroid Build Coastguard Worker  %r = load <16 x i32>, <16 x i32>* %vaddr, align 64
321*9880d681SAndroid Build Coastguard Worker  %res = select <16 x i1> %mask, <16 x i32> %r, <16 x i32> %old
322*9880d681SAndroid Build Coastguard Worker  ret <16 x i32>%res
323*9880d681SAndroid Build Coastguard Worker}
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test33(i8 * %addr, <16 x i32> %old, <16 x i32> %mask1) {
326*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test33:
327*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2]
329*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x48,0x1f,0xca,0x04]
330*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0x64,0x07]
331*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
332*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <16 x i32> %mask1, zeroinitializer
333*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x i32>*
334*9880d681SAndroid Build Coastguard Worker  %r = load <16 x i32>, <16 x i32>* %vaddr, align 1
335*9880d681SAndroid Build Coastguard Worker  %res = select <16 x i1> %mask, <16 x i32> %r, <16 x i32> %old
336*9880d681SAndroid Build Coastguard Worker  ret <16 x i32>%res
337*9880d681SAndroid Build Coastguard Worker}
338*9880d681SAndroid Build Coastguard Worker
339*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test34(i8 * %addr, <16 x i32> %mask1) {
340*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test34:
341*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9]
343*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x48,0x1f,0xc9,0x04]
344*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xc9,0x6f,0x07]
345*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
346*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <16 x i32> %mask1, zeroinitializer
347*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x i32>*
348*9880d681SAndroid Build Coastguard Worker  %r = load <16 x i32>, <16 x i32>* %vaddr, align 64
349*9880d681SAndroid Build Coastguard Worker  %res = select <16 x i1> %mask, <16 x i32> %r, <16 x i32> zeroinitializer
350*9880d681SAndroid Build Coastguard Worker  ret <16 x i32>%res
351*9880d681SAndroid Build Coastguard Worker}
352*9880d681SAndroid Build Coastguard Worker
353*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test35(i8 * %addr, <16 x i32> %mask1) {
354*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test35:
355*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9]
357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x48,0x1f,0xc9,0x04]
358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu32 (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0xc9,0x6f,0x07]
359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
360*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <16 x i32> %mask1, zeroinitializer
361*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x i32>*
362*9880d681SAndroid Build Coastguard Worker  %r = load <16 x i32>, <16 x i32>* %vaddr, align 1
363*9880d681SAndroid Build Coastguard Worker  %res = select <16 x i1> %mask, <16 x i32> %r, <16 x i32> zeroinitializer
364*9880d681SAndroid Build Coastguard Worker  ret <16 x i32>%res
365*9880d681SAndroid Build Coastguard Worker}
366*9880d681SAndroid Build Coastguard Worker
367*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test36(i8 * %addr, <8 x i64> %old, <8 x i64> %mask1) {
368*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test36:
369*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2]
371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x48,0x1f,0xca,0x04]
372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x64,0x07]
373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
374*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <8 x i64> %mask1, zeroinitializer
375*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i64>*
376*9880d681SAndroid Build Coastguard Worker  %r = load <8 x i64>, <8 x i64>* %vaddr, align 64
377*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x i64> %r, <8 x i64> %old
378*9880d681SAndroid Build Coastguard Worker  ret <8 x i64>%res
379*9880d681SAndroid Build Coastguard Worker}
380*9880d681SAndroid Build Coastguard Worker
381*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test37(i8 * %addr, <8 x i64> %old, <8 x i64> %mask1) {
382*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test37:
383*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2]
385*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x48,0x1f,0xca,0x04]
386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x64,0x07]
387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
388*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <8 x i64> %mask1, zeroinitializer
389*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i64>*
390*9880d681SAndroid Build Coastguard Worker  %r = load <8 x i64>, <8 x i64>* %vaddr, align 1
391*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x i64> %r, <8 x i64> %old
392*9880d681SAndroid Build Coastguard Worker  ret <8 x i64>%res
393*9880d681SAndroid Build Coastguard Worker}
394*9880d681SAndroid Build Coastguard Worker
395*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test38(i8 * %addr, <8 x i64> %mask1) {
396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test38:
397*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9]
399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x48,0x1f,0xc9,0x04]
400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xc9,0x6f,0x07]
401*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
402*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <8 x i64> %mask1, zeroinitializer
403*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i64>*
404*9880d681SAndroid Build Coastguard Worker  %r = load <8 x i64>, <8 x i64>* %vaddr, align 64
405*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x i64> %r, <8 x i64> zeroinitializer
406*9880d681SAndroid Build Coastguard Worker  ret <8 x i64>%res
407*9880d681SAndroid Build Coastguard Worker}
408*9880d681SAndroid Build Coastguard Worker
409*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test39(i8 * %addr, <8 x i64> %mask1) {
410*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test39:
411*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
412*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9]
413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x48,0x1f,0xc9,0x04]
414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu64 (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfe,0xc9,0x6f,0x07]
415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
416*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <8 x i64> %mask1, zeroinitializer
417*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i64>*
418*9880d681SAndroid Build Coastguard Worker  %r = load <8 x i64>, <8 x i64>* %vaddr, align 1
419*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x i64> %r, <8 x i64> zeroinitializer
420*9880d681SAndroid Build Coastguard Worker  ret <8 x i64>%res
421*9880d681SAndroid Build Coastguard Worker}
422*9880d681SAndroid Build Coastguard Worker
423*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test40(i8 * %addr, <16 x float> %old, <16 x float> %mask1) {
424*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test40:
425*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
426*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2]
427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordps %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf1,0x74,0x48,0xc2,0xca,0x07]
428*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqps %zmm2, %zmm1, %k1 {%k1} ## encoding: [0x62,0xf1,0x74,0x49,0xc2,0xca,0x04]
429*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmps (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0x65,0x07]
430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
431*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <16 x float> %mask1, zeroinitializer
432*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x float>*
433*9880d681SAndroid Build Coastguard Worker  %r = load <16 x float>, <16 x float>* %vaddr, align 64
434*9880d681SAndroid Build Coastguard Worker  %res = select <16 x i1> %mask, <16 x float> %r, <16 x float> %old
435*9880d681SAndroid Build Coastguard Worker  ret <16 x float>%res
436*9880d681SAndroid Build Coastguard Worker}
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test41(i8 * %addr, <16 x float> %old, <16 x float> %mask1) {
439*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test41:
440*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
441*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2]
442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordps %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf1,0x74,0x48,0xc2,0xca,0x07]
443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqps %zmm2, %zmm1, %k1 {%k1} ## encoding: [0x62,0xf1,0x74,0x49,0xc2,0xca,0x04]
444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmps (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0x65,0x07]
445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
446*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <16 x float> %mask1, zeroinitializer
447*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x float>*
448*9880d681SAndroid Build Coastguard Worker  %r = load <16 x float>, <16 x float>* %vaddr, align 1
449*9880d681SAndroid Build Coastguard Worker  %res = select <16 x i1> %mask, <16 x float> %r, <16 x float> %old
450*9880d681SAndroid Build Coastguard Worker  ret <16 x float>%res
451*9880d681SAndroid Build Coastguard Worker}
452*9880d681SAndroid Build Coastguard Worker
453*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test42(i8 * %addr, <16 x float> %mask1) {
454*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test42:
455*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9]
457*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordps %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf1,0x7c,0x48,0xc2,0xc9,0x07]
458*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqps %zmm1, %zmm0, %k1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0xc2,0xc9,0x04]
459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x28,0x07]
460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
461*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <16 x float> %mask1, zeroinitializer
462*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x float>*
463*9880d681SAndroid Build Coastguard Worker  %r = load <16 x float>, <16 x float>* %vaddr, align 64
464*9880d681SAndroid Build Coastguard Worker  %res = select <16 x i1> %mask, <16 x float> %r, <16 x float> zeroinitializer
465*9880d681SAndroid Build Coastguard Worker  ret <16 x float>%res
466*9880d681SAndroid Build Coastguard Worker}
467*9880d681SAndroid Build Coastguard Worker
468*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test43(i8 * %addr, <16 x float> %mask1) {
469*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test43:
470*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
471*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9]
472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordps %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf1,0x7c,0x48,0xc2,0xc9,0x07]
473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqps %zmm1, %zmm0, %k1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0xc2,0xc9,0x04]
474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovups (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x10,0x07]
475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
476*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <16 x float> %mask1, zeroinitializer
477*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <16 x float>*
478*9880d681SAndroid Build Coastguard Worker  %r = load <16 x float>, <16 x float>* %vaddr, align 1
479*9880d681SAndroid Build Coastguard Worker  %res = select <16 x i1> %mask, <16 x float> %r, <16 x float> zeroinitializer
480*9880d681SAndroid Build Coastguard Worker  ret <16 x float>%res
481*9880d681SAndroid Build Coastguard Worker}
482*9880d681SAndroid Build Coastguard Worker
483*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test44(i8 * %addr, <8 x double> %old, <8 x double> %mask1) {
484*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test44:
485*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2]
487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordpd %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf1,0xf5,0x48,0xc2,0xca,0x07]
488*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqpd %zmm2, %zmm1, %k1 {%k1} ## encoding: [0x62,0xf1,0xf5,0x49,0xc2,0xca,0x04]
489*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmpd (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x65,0x07]
490*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
491*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <8 x double> %mask1, zeroinitializer
492*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x double>*
493*9880d681SAndroid Build Coastguard Worker  %r = load <8 x double>, <8 x double>* %vaddr, align 64
494*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x double> %r, <8 x double> %old
495*9880d681SAndroid Build Coastguard Worker  ret <8 x double>%res
496*9880d681SAndroid Build Coastguard Worker}
497*9880d681SAndroid Build Coastguard Worker
498*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test45(i8 * %addr, <8 x double> %old, <8 x double> %mask1) {
499*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test45:
500*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
501*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2]
502*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordpd %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf1,0xf5,0x48,0xc2,0xca,0x07]
503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqpd %zmm2, %zmm1, %k1 {%k1} ## encoding: [0x62,0xf1,0xf5,0x49,0xc2,0xca,0x04]
504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmpd (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x65,0x07]
505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
506*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <8 x double> %mask1, zeroinitializer
507*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x double>*
508*9880d681SAndroid Build Coastguard Worker  %r = load <8 x double>, <8 x double>* %vaddr, align 1
509*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x double> %r, <8 x double> %old
510*9880d681SAndroid Build Coastguard Worker  ret <8 x double>%res
511*9880d681SAndroid Build Coastguard Worker}
512*9880d681SAndroid Build Coastguard Worker
513*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test46(i8 * %addr, <8 x double> %mask1) {
514*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test46:
515*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9]
517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordpd %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf1,0xfd,0x48,0xc2,0xc9,0x07]
518*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqpd %zmm1, %zmm0, %k1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x49,0xc2,0xc9,0x04]
519*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovapd (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xc9,0x28,0x07]
520*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
521*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <8 x double> %mask1, zeroinitializer
522*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x double>*
523*9880d681SAndroid Build Coastguard Worker  %r = load <8 x double>, <8 x double>* %vaddr, align 64
524*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x double> %r, <8 x double> zeroinitializer
525*9880d681SAndroid Build Coastguard Worker  ret <8 x double>%res
526*9880d681SAndroid Build Coastguard Worker}
527*9880d681SAndroid Build Coastguard Worker
528*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test47(i8 * %addr, <8 x double> %mask1) {
529*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test47:
530*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
531*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9]
532*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordpd %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf1,0xfd,0x48,0xc2,0xc9,0x07]
533*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqpd %zmm1, %zmm0, %k1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x49,0xc2,0xc9,0x04]
534*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovupd (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xc9,0x10,0x07]
535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
536*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <8 x double> %mask1, zeroinitializer
537*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x double>*
538*9880d681SAndroid Build Coastguard Worker  %r = load <8 x double>, <8 x double>* %vaddr, align 1
539*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x double> %r, <8 x double> zeroinitializer
540*9880d681SAndroid Build Coastguard Worker  ret <8 x double>%res
541*9880d681SAndroid Build Coastguard Worker}
542