xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512vl-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 -mattr=+avx512vl --show-mc-encoding| FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_1(i8 * %addr) {
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_1:
6*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu32 (%rdi), %ymm0 ## encoding: [0x62,0xf1,0x7e,0x28,0x6f,0x07]
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
9*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i32>*
10*9880d681SAndroid Build Coastguard Worker  %res = load <8 x i32>, <8 x i32>* %vaddr, align 1
11*9880d681SAndroid Build Coastguard Worker  ret <8 x i32>%res
12*9880d681SAndroid Build Coastguard Worker}
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_2(i8 * %addr) {
15*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_2:
16*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 (%rdi), %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x6f,0x07]
18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
19*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i32>*
20*9880d681SAndroid Build Coastguard Worker  %res = load <8 x i32>, <8 x i32>* %vaddr, align 32
21*9880d681SAndroid Build Coastguard Worker  ret <8 x i32>%res
22*9880d681SAndroid Build Coastguard Worker}
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerdefine void @test_256_3(i8 * %addr, <4 x i64> %data) {
25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_3:
26*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 %ymm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x28,0x7f,0x07]
28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
29*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i64>*
30*9880d681SAndroid Build Coastguard Worker  store <4 x i64>%data, <4 x i64>* %vaddr, align 32
31*9880d681SAndroid Build Coastguard Worker  ret void
32*9880d681SAndroid Build Coastguard Worker}
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerdefine void @test_256_4(i8 * %addr, <8 x i32> %data) {
35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_4:
36*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu32 %ymm0, (%rdi) ## encoding: [0x62,0xf1,0x7e,0x28,0x7f,0x07]
38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
39*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i32>*
40*9880d681SAndroid Build Coastguard Worker  store <8 x i32>%data, <8 x i32>* %vaddr, align 1
41*9880d681SAndroid Build Coastguard Worker  ret void
42*9880d681SAndroid Build Coastguard Worker}
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Workerdefine void @test_256_5(i8 * %addr, <8 x i32> %data) {
45*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_5:
46*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 %ymm0, (%rdi) ## encoding: [0x62,0xf1,0x7d,0x28,0x7f,0x07]
48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
49*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i32>*
50*9880d681SAndroid Build Coastguard Worker  store <8 x i32>%data, <8 x i32>* %vaddr, align 32
51*9880d681SAndroid Build Coastguard Worker  ret void
52*9880d681SAndroid Build Coastguard Worker}
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Workerdefine  <4 x i64> @test_256_6(i8 * %addr) {
55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_6:
56*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 (%rdi), %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x6f,0x07]
58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
59*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i64>*
60*9880d681SAndroid Build Coastguard Worker  %res = load <4 x i64>, <4 x i64>* %vaddr, align 32
61*9880d681SAndroid Build Coastguard Worker  ret <4 x i64>%res
62*9880d681SAndroid Build Coastguard Worker}
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Workerdefine void @test_256_7(i8 * %addr, <4 x i64> %data) {
65*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_7:
66*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu64 %ymm0, (%rdi) ## encoding: [0x62,0xf1,0xfe,0x28,0x7f,0x07]
68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
69*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i64>*
70*9880d681SAndroid Build Coastguard Worker  store <4 x i64>%data, <4 x i64>* %vaddr, align 1
71*9880d681SAndroid Build Coastguard Worker  ret void
72*9880d681SAndroid Build Coastguard Worker}
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_8(i8 * %addr) {
75*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_8:
76*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu64 (%rdi), %ymm0 ## encoding: [0x62,0xf1,0xfe,0x28,0x6f,0x07]
78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
79*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i64>*
80*9880d681SAndroid Build Coastguard Worker  %res = load <4 x i64>, <4 x i64>* %vaddr, align 1
81*9880d681SAndroid Build Coastguard Worker  ret <4 x i64>%res
82*9880d681SAndroid Build Coastguard Worker}
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Workerdefine void @test_256_9(i8 * %addr, <4 x double> %data) {
85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_9:
86*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
87*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovapd %ymm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x28,0x29,0x07]
88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
89*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x double>*
90*9880d681SAndroid Build Coastguard Worker  store <4 x double>%data, <4 x double>* %vaddr, align 32
91*9880d681SAndroid Build Coastguard Worker  ret void
92*9880d681SAndroid Build Coastguard Worker}
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_10(i8 * %addr) {
95*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_10:
96*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovapd (%rdi), %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x28,0x07]
98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
99*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x double>*
100*9880d681SAndroid Build Coastguard Worker  %res = load <4 x double>, <4 x double>* %vaddr, align 32
101*9880d681SAndroid Build Coastguard Worker  ret <4 x double>%res
102*9880d681SAndroid Build Coastguard Worker}
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Workerdefine void @test_256_11(i8 * %addr, <8 x float> %data) {
105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_11:
106*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %ymm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x28,0x29,0x07]
108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
109*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x float>*
110*9880d681SAndroid Build Coastguard Worker  store <8 x float>%data, <8 x float>* %vaddr, align 32
111*9880d681SAndroid Build Coastguard Worker  ret void
112*9880d681SAndroid Build Coastguard Worker}
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_12(i8 * %addr) {
115*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_12:
116*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps (%rdi), %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x28,0x07]
118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
119*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x float>*
120*9880d681SAndroid Build Coastguard Worker  %res = load <8 x float>, <8 x float>* %vaddr, align 32
121*9880d681SAndroid Build Coastguard Worker  ret <8 x float>%res
122*9880d681SAndroid Build Coastguard Worker}
123*9880d681SAndroid Build Coastguard Worker
124*9880d681SAndroid Build Coastguard Workerdefine void @test_256_13(i8 * %addr, <4 x double> %data) {
125*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_13:
126*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovupd %ymm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x28,0x11,0x07]
128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
129*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x double>*
130*9880d681SAndroid Build Coastguard Worker  store <4 x double>%data, <4 x double>* %vaddr, align 1
131*9880d681SAndroid Build Coastguard Worker  ret void
132*9880d681SAndroid Build Coastguard Worker}
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_14(i8 * %addr) {
135*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_14:
136*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovupd (%rdi), %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x10,0x07]
138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
139*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x double>*
140*9880d681SAndroid Build Coastguard Worker  %res = load <4 x double>, <4 x double>* %vaddr, align 1
141*9880d681SAndroid Build Coastguard Worker  ret <4 x double>%res
142*9880d681SAndroid Build Coastguard Worker}
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Workerdefine void @test_256_15(i8 * %addr, <8 x float> %data) {
145*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_15:
146*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovups %ymm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x28,0x11,0x07]
148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
149*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x float>*
150*9880d681SAndroid Build Coastguard Worker  store <8 x float>%data, <8 x float>* %vaddr, align 1
151*9880d681SAndroid Build Coastguard Worker  ret void
152*9880d681SAndroid Build Coastguard Worker}
153*9880d681SAndroid Build Coastguard Worker
154*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_16(i8 * %addr) {
155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_16:
156*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovups (%rdi), %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x10,0x07]
158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
159*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x float>*
160*9880d681SAndroid Build Coastguard Worker  %res = load <8 x float>, <8 x float>* %vaddr, align 1
161*9880d681SAndroid Build Coastguard Worker  ret <8 x float>%res
162*9880d681SAndroid Build Coastguard Worker}
163*9880d681SAndroid Build Coastguard Worker
164*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_17(i8 * %addr, <8 x i32> %old, <8 x i32> %mask1) {
165*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_17:
166*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2]
168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0x75,0x28,0x1f,0xca,0x04]
169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x64,0x07]
170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
171*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <8 x i32> %mask1, zeroinitializer
172*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i32>*
173*9880d681SAndroid Build Coastguard Worker  %r = load <8 x i32>, <8 x i32>* %vaddr, align 32
174*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x i32> %r, <8 x i32> %old
175*9880d681SAndroid Build Coastguard Worker  ret <8 x i32>%res
176*9880d681SAndroid Build Coastguard Worker}
177*9880d681SAndroid Build Coastguard Worker
178*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_18(i8 * %addr, <8 x i32> %old, <8 x i32> %mask1) {
179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_18:
180*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2]
182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0x75,0x28,0x1f,0xca,0x04]
183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x64,0x07]
184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
185*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <8 x i32> %mask1, zeroinitializer
186*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i32>*
187*9880d681SAndroid Build Coastguard Worker  %r = load <8 x i32>, <8 x i32>* %vaddr, align 1
188*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x i32> %r, <8 x i32> %old
189*9880d681SAndroid Build Coastguard Worker  ret <8 x i32>%res
190*9880d681SAndroid Build Coastguard Worker}
191*9880d681SAndroid Build Coastguard Worker
192*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_19(i8 * %addr, <8 x i32> %mask1) {
193*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_19:
194*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9]
196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x28,0x1f,0xc9,0x04]
197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0x6f,0x07]
198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
199*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <8 x i32> %mask1, zeroinitializer
200*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i32>*
201*9880d681SAndroid Build Coastguard Worker  %r = load <8 x i32>, <8 x i32>* %vaddr, align 32
202*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x i32> %r, <8 x i32> zeroinitializer
203*9880d681SAndroid Build Coastguard Worker  ret <8 x i32>%res
204*9880d681SAndroid Build Coastguard Worker}
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_20(i8 * %addr, <8 x i32> %mask1) {
207*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_20:
208*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9]
210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x28,0x1f,0xc9,0x04]
211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu32 (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0xa9,0x6f,0x07]
212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
213*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <8 x i32> %mask1, zeroinitializer
214*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x i32>*
215*9880d681SAndroid Build Coastguard Worker  %r = load <8 x i32>, <8 x i32>* %vaddr, align 1
216*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x i32> %r, <8 x i32> zeroinitializer
217*9880d681SAndroid Build Coastguard Worker  ret <8 x i32>%res
218*9880d681SAndroid Build Coastguard Worker}
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_21(i8 * %addr, <4 x i64> %old, <4 x i64> %mask1) {
221*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_21:
222*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2]
224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x28,0x1f,0xca,0x04]
225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x64,0x07]
226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
227*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i64> %mask1, zeroinitializer
228*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i64>*
229*9880d681SAndroid Build Coastguard Worker  %r = load <4 x i64>, <4 x i64>* %vaddr, align 32
230*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x i64> %r, <4 x i64> %old
231*9880d681SAndroid Build Coastguard Worker  ret <4 x i64>%res
232*9880d681SAndroid Build Coastguard Worker}
233*9880d681SAndroid Build Coastguard Worker
234*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_22(i8 * %addr, <4 x i64> %old, <4 x i64> %mask1) {
235*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_22:
236*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2]
238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x28,0x1f,0xca,0x04]
239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x64,0x07]
240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
241*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i64> %mask1, zeroinitializer
242*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i64>*
243*9880d681SAndroid Build Coastguard Worker  %r = load <4 x i64>, <4 x i64>* %vaddr, align 1
244*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x i64> %r, <4 x i64> %old
245*9880d681SAndroid Build Coastguard Worker  ret <4 x i64>%res
246*9880d681SAndroid Build Coastguard Worker}
247*9880d681SAndroid Build Coastguard Worker
248*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_23(i8 * %addr, <4 x i64> %mask1) {
249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_23:
250*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9]
252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x1f,0xc9,0x04]
253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xa9,0x6f,0x07]
254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
255*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i64> %mask1, zeroinitializer
256*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i64>*
257*9880d681SAndroid Build Coastguard Worker  %r = load <4 x i64>, <4 x i64>* %vaddr, align 32
258*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x i64> %r, <4 x i64> zeroinitializer
259*9880d681SAndroid Build Coastguard Worker  ret <4 x i64>%res
260*9880d681SAndroid Build Coastguard Worker}
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_24(i8 * %addr, <4 x i64> %mask1) {
263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_24:
264*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9]
266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x1f,0xc9,0x04]
267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu64 (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfe,0xa9,0x6f,0x07]
268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
269*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i64> %mask1, zeroinitializer
270*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i64>*
271*9880d681SAndroid Build Coastguard Worker  %r = load <4 x i64>, <4 x i64>* %vaddr, align 1
272*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x i64> %r, <4 x i64> zeroinitializer
273*9880d681SAndroid Build Coastguard Worker  ret <4 x i64>%res
274*9880d681SAndroid Build Coastguard Worker}
275*9880d681SAndroid Build Coastguard Worker
276*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_25(i8 * %addr, <8 x float> %old, <8 x float> %mask1) {
277*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_25:
278*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2]
280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordps %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf1,0x74,0x28,0xc2,0xca,0x07]
281*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqps %ymm2, %ymm1, %k1 {%k1} ## encoding: [0x62,0xf1,0x74,0x29,0xc2,0xca,0x04]
282*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmps (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x65,0x07]
283*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
284*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <8 x float> %mask1, zeroinitializer
285*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x float>*
286*9880d681SAndroid Build Coastguard Worker  %r = load <8 x float>, <8 x float>* %vaddr, align 32
287*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x float> %r, <8 x float> %old
288*9880d681SAndroid Build Coastguard Worker  ret <8 x float>%res
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_26(i8 * %addr, <8 x float> %old, <8 x float> %mask1) {
292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_26:
293*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2]
295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordps %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf1,0x74,0x28,0xc2,0xca,0x07]
296*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqps %ymm2, %ymm1, %k1 {%k1} ## encoding: [0x62,0xf1,0x74,0x29,0xc2,0xca,0x04]
297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmps (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x65,0x07]
298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
299*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <8 x float> %mask1, zeroinitializer
300*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x float>*
301*9880d681SAndroid Build Coastguard Worker  %r = load <8 x float>, <8 x float>* %vaddr, align 1
302*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x float> %r, <8 x float> %old
303*9880d681SAndroid Build Coastguard Worker  ret <8 x float>%res
304*9880d681SAndroid Build Coastguard Worker}
305*9880d681SAndroid Build Coastguard Worker
306*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_27(i8 * %addr, <8 x float> %mask1) {
307*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_27:
308*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
309*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9]
310*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordps %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf1,0x7c,0x28,0xc2,0xc9,0x07]
311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqps %ymm1, %ymm0, %k1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0xc2,0xc9,0x04]
312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x28,0x07]
313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
314*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <8 x float> %mask1, zeroinitializer
315*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x float>*
316*9880d681SAndroid Build Coastguard Worker  %r = load <8 x float>, <8 x float>* %vaddr, align 32
317*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x float> %r, <8 x float> zeroinitializer
318*9880d681SAndroid Build Coastguard Worker  ret <8 x float>%res
319*9880d681SAndroid Build Coastguard Worker}
320*9880d681SAndroid Build Coastguard Worker
321*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_28(i8 * %addr, <8 x float> %mask1) {
322*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_28:
323*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9]
325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpordps %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf1,0x7c,0x28,0xc2,0xc9,0x07]
326*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqps %ymm1, %ymm0, %k1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0xc2,0xc9,0x04]
327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovups (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x10,0x07]
328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
329*9880d681SAndroid Build Coastguard Worker  %mask = fcmp one <8 x float> %mask1, zeroinitializer
330*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <8 x float>*
331*9880d681SAndroid Build Coastguard Worker  %r = load <8 x float>, <8 x float>* %vaddr, align 1
332*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x float> %r, <8 x float> zeroinitializer
333*9880d681SAndroid Build Coastguard Worker  ret <8 x float>%res
334*9880d681SAndroid Build Coastguard Worker}
335*9880d681SAndroid Build Coastguard Worker
336*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_29(i8 * %addr, <4 x double> %old, <4 x i64> %mask1) {
337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_29:
338*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2]
340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x28,0x1f,0xca,0x04]
341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmpd (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x65,0x07]
342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
343*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i64> %mask1, zeroinitializer
344*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x double>*
345*9880d681SAndroid Build Coastguard Worker  %r = load <4 x double>, <4 x double>* %vaddr, align 32
346*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x double> %r, <4 x double> %old
347*9880d681SAndroid Build Coastguard Worker  ret <4 x double>%res
348*9880d681SAndroid Build Coastguard Worker}
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_30(i8 * %addr, <4 x double> %old, <4 x i64> %mask1) {
351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_30:
352*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2]
354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x28,0x1f,0xca,0x04]
355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmpd (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x65,0x07]
356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
357*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i64> %mask1, zeroinitializer
358*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x double>*
359*9880d681SAndroid Build Coastguard Worker  %r = load <4 x double>, <4 x double>* %vaddr, align 1
360*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x double> %r, <4 x double> %old
361*9880d681SAndroid Build Coastguard Worker  ret <4 x double>%res
362*9880d681SAndroid Build Coastguard Worker}
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_31(i8 * %addr, <4 x i64> %mask1) {
365*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_31:
366*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9]
368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x1f,0xc9,0x04]
369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovapd (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xa9,0x28,0x07]
370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
371*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i64> %mask1, zeroinitializer
372*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x double>*
373*9880d681SAndroid Build Coastguard Worker  %r = load <4 x double>, <4 x double>* %vaddr, align 32
374*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x double> %r, <4 x double> zeroinitializer
375*9880d681SAndroid Build Coastguard Worker  ret <4 x double>%res
376*9880d681SAndroid Build Coastguard Worker}
377*9880d681SAndroid Build Coastguard Worker
378*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_32(i8 * %addr, <4 x i64> %mask1) {
379*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_32:
380*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9]
382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x1f,0xc9,0x04]
383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovupd (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xa9,0x10,0x07]
384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
385*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i64> %mask1, zeroinitializer
386*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x double>*
387*9880d681SAndroid Build Coastguard Worker  %r = load <4 x double>, <4 x double>* %vaddr, align 1
388*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x double> %r, <4 x double> zeroinitializer
389*9880d681SAndroid Build Coastguard Worker  ret <4 x double>%res
390*9880d681SAndroid Build Coastguard Worker}
391*9880d681SAndroid Build Coastguard Worker
392*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_1(i8 * %addr) {
393*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_1:
394*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu32 (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7e,0x08,0x6f,0x07]
396*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
397*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i32>*
398*9880d681SAndroid Build Coastguard Worker  %res = load <4 x i32>, <4 x i32>* %vaddr, align 1
399*9880d681SAndroid Build Coastguard Worker  ret <4 x i32>%res
400*9880d681SAndroid Build Coastguard Worker}
401*9880d681SAndroid Build Coastguard Worker
402*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_2(i8 * %addr) {
403*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_2:
404*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6f,0x07]
406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
407*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i32>*
408*9880d681SAndroid Build Coastguard Worker  %res = load <4 x i32>, <4 x i32>* %vaddr, align 16
409*9880d681SAndroid Build Coastguard Worker  ret <4 x i32>%res
410*9880d681SAndroid Build Coastguard Worker}
411*9880d681SAndroid Build Coastguard Worker
412*9880d681SAndroid Build Coastguard Workerdefine void @test_128_3(i8 * %addr, <2 x i64> %data) {
413*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_3:
414*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x08,0x7f,0x07]
416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
417*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x i64>*
418*9880d681SAndroid Build Coastguard Worker  store <2 x i64>%data, <2 x i64>* %vaddr, align 16
419*9880d681SAndroid Build Coastguard Worker  ret void
420*9880d681SAndroid Build Coastguard Worker}
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Workerdefine void @test_128_4(i8 * %addr, <4 x i32> %data) {
423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_4:
424*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
425*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu32 %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7e,0x08,0x7f,0x07]
426*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
427*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i32>*
428*9880d681SAndroid Build Coastguard Worker  store <4 x i32>%data, <4 x i32>* %vaddr, align 1
429*9880d681SAndroid Build Coastguard Worker  ret void
430*9880d681SAndroid Build Coastguard Worker}
431*9880d681SAndroid Build Coastguard Worker
432*9880d681SAndroid Build Coastguard Workerdefine void @test_128_5(i8 * %addr, <4 x i32> %data) {
433*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_5:
434*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7d,0x08,0x7f,0x07]
436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
437*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i32>*
438*9880d681SAndroid Build Coastguard Worker  store <4 x i32>%data, <4 x i32>* %vaddr, align 16
439*9880d681SAndroid Build Coastguard Worker  ret void
440*9880d681SAndroid Build Coastguard Worker}
441*9880d681SAndroid Build Coastguard Worker
442*9880d681SAndroid Build Coastguard Workerdefine  <2 x i64> @test_128_6(i8 * %addr) {
443*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_6:
444*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x6f,0x07]
446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
447*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x i64>*
448*9880d681SAndroid Build Coastguard Worker  %res = load <2 x i64>, <2 x i64>* %vaddr, align 16
449*9880d681SAndroid Build Coastguard Worker  ret <2 x i64>%res
450*9880d681SAndroid Build Coastguard Worker}
451*9880d681SAndroid Build Coastguard Worker
452*9880d681SAndroid Build Coastguard Workerdefine void @test_128_7(i8 * %addr, <2 x i64> %data) {
453*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_7:
454*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu64 %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xfe,0x08,0x7f,0x07]
456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
457*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x i64>*
458*9880d681SAndroid Build Coastguard Worker  store <2 x i64>%data, <2 x i64>* %vaddr, align 1
459*9880d681SAndroid Build Coastguard Worker  ret void
460*9880d681SAndroid Build Coastguard Worker}
461*9880d681SAndroid Build Coastguard Worker
462*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_8(i8 * %addr) {
463*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_8:
464*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu64 (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xfe,0x08,0x6f,0x07]
466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
467*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x i64>*
468*9880d681SAndroid Build Coastguard Worker  %res = load <2 x i64>, <2 x i64>* %vaddr, align 1
469*9880d681SAndroid Build Coastguard Worker  ret <2 x i64>%res
470*9880d681SAndroid Build Coastguard Worker}
471*9880d681SAndroid Build Coastguard Worker
472*9880d681SAndroid Build Coastguard Workerdefine void @test_128_9(i8 * %addr, <2 x double> %data) {
473*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_9:
474*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovapd %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x08,0x29,0x07]
476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
477*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x double>*
478*9880d681SAndroid Build Coastguard Worker  store <2 x double>%data, <2 x double>* %vaddr, align 16
479*9880d681SAndroid Build Coastguard Worker  ret void
480*9880d681SAndroid Build Coastguard Worker}
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_10(i8 * %addr) {
483*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_10:
484*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
485*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovapd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x28,0x07]
486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
487*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x double>*
488*9880d681SAndroid Build Coastguard Worker  %res = load <2 x double>, <2 x double>* %vaddr, align 16
489*9880d681SAndroid Build Coastguard Worker  ret <2 x double>%res
490*9880d681SAndroid Build Coastguard Worker}
491*9880d681SAndroid Build Coastguard Worker
492*9880d681SAndroid Build Coastguard Workerdefine void @test_128_11(i8 * %addr, <4 x float> %data) {
493*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_11:
494*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x08,0x29,0x07]
496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
497*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x float>*
498*9880d681SAndroid Build Coastguard Worker  store <4 x float>%data, <4 x float>* %vaddr, align 16
499*9880d681SAndroid Build Coastguard Worker  ret void
500*9880d681SAndroid Build Coastguard Worker}
501*9880d681SAndroid Build Coastguard Worker
502*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_12(i8 * %addr) {
503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_12:
504*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x28,0x07]
506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
507*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x float>*
508*9880d681SAndroid Build Coastguard Worker  %res = load <4 x float>, <4 x float>* %vaddr, align 16
509*9880d681SAndroid Build Coastguard Worker  ret <4 x float>%res
510*9880d681SAndroid Build Coastguard Worker}
511*9880d681SAndroid Build Coastguard Worker
512*9880d681SAndroid Build Coastguard Workerdefine void @test_128_13(i8 * %addr, <2 x double> %data) {
513*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_13:
514*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovupd %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x08,0x11,0x07]
516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
517*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x double>*
518*9880d681SAndroid Build Coastguard Worker  store <2 x double>%data, <2 x double>* %vaddr, align 1
519*9880d681SAndroid Build Coastguard Worker  ret void
520*9880d681SAndroid Build Coastguard Worker}
521*9880d681SAndroid Build Coastguard Worker
522*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_14(i8 * %addr) {
523*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_14:
524*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovupd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x10,0x07]
526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
527*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x double>*
528*9880d681SAndroid Build Coastguard Worker  %res = load <2 x double>, <2 x double>* %vaddr, align 1
529*9880d681SAndroid Build Coastguard Worker  ret <2 x double>%res
530*9880d681SAndroid Build Coastguard Worker}
531*9880d681SAndroid Build Coastguard Worker
532*9880d681SAndroid Build Coastguard Workerdefine void @test_128_15(i8 * %addr, <4 x float> %data) {
533*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_15:
534*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovups %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x08,0x11,0x07]
536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
537*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x float>*
538*9880d681SAndroid Build Coastguard Worker  store <4 x float>%data, <4 x float>* %vaddr, align 1
539*9880d681SAndroid Build Coastguard Worker  ret void
540*9880d681SAndroid Build Coastguard Worker}
541*9880d681SAndroid Build Coastguard Worker
542*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_16(i8 * %addr) {
543*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_16:
544*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
545*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovups (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x10,0x07]
546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
547*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x float>*
548*9880d681SAndroid Build Coastguard Worker  %res = load <4 x float>, <4 x float>* %vaddr, align 1
549*9880d681SAndroid Build Coastguard Worker  ret <4 x float>%res
550*9880d681SAndroid Build Coastguard Worker}
551*9880d681SAndroid Build Coastguard Worker
552*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_17(i8 * %addr, <4 x i32> %old, <4 x i32> %mask1) {
553*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_17:
554*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2]
556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x08,0x1f,0xca,0x04]
557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x64,0x07]
558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
559*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i32> %mask1, zeroinitializer
560*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i32>*
561*9880d681SAndroid Build Coastguard Worker  %r = load <4 x i32>, <4 x i32>* %vaddr, align 16
562*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x i32> %r, <4 x i32> %old
563*9880d681SAndroid Build Coastguard Worker  ret <4 x i32>%res
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Worker
566*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_18(i8 * %addr, <4 x i32> %old, <4 x i32> %mask1) {
567*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_18:
568*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2]
570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x08,0x1f,0xca,0x04]
571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x64,0x07]
572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
573*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i32> %mask1, zeroinitializer
574*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i32>*
575*9880d681SAndroid Build Coastguard Worker  %r = load <4 x i32>, <4 x i32>* %vaddr, align 1
576*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x i32> %r, <4 x i32> %old
577*9880d681SAndroid Build Coastguard Worker  ret <4 x i32>%res
578*9880d681SAndroid Build Coastguard Worker}
579*9880d681SAndroid Build Coastguard Worker
580*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_19(i8 * %addr, <4 x i32> %mask1) {
581*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_19:
582*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
583*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9]
584*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x1f,0xc9,0x04]
585*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0x6f,0x07]
586*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
587*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i32> %mask1, zeroinitializer
588*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i32>*
589*9880d681SAndroid Build Coastguard Worker  %r = load <4 x i32>, <4 x i32>* %vaddr, align 16
590*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x i32> %r, <4 x i32> zeroinitializer
591*9880d681SAndroid Build Coastguard Worker  ret <4 x i32>%res
592*9880d681SAndroid Build Coastguard Worker}
593*9880d681SAndroid Build Coastguard Worker
594*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_20(i8 * %addr, <4 x i32> %mask1) {
595*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_20:
596*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9]
598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x1f,0xc9,0x04]
599*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu32 (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x6f,0x07]
600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
601*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i32> %mask1, zeroinitializer
602*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x i32>*
603*9880d681SAndroid Build Coastguard Worker  %r = load <4 x i32>, <4 x i32>* %vaddr, align 1
604*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x i32> %r, <4 x i32> zeroinitializer
605*9880d681SAndroid Build Coastguard Worker  ret <4 x i32>%res
606*9880d681SAndroid Build Coastguard Worker}
607*9880d681SAndroid Build Coastguard Worker
608*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_21(i8 * %addr, <2 x i64> %old, <2 x i64> %mask1) {
609*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_21:
610*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
611*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2]
612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x08,0x1f,0xca,0x04]
613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x64,0x07]
614*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
615*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <2 x i64> %mask1, zeroinitializer
616*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x i64>*
617*9880d681SAndroid Build Coastguard Worker  %r = load <2 x i64>, <2 x i64>* %vaddr, align 16
618*9880d681SAndroid Build Coastguard Worker  %res = select <2 x i1> %mask, <2 x i64> %r, <2 x i64> %old
619*9880d681SAndroid Build Coastguard Worker  ret <2 x i64>%res
620*9880d681SAndroid Build Coastguard Worker}
621*9880d681SAndroid Build Coastguard Worker
622*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_22(i8 * %addr, <2 x i64> %old, <2 x i64> %mask1) {
623*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_22:
624*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
625*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2]
626*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x08,0x1f,0xca,0x04]
627*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x64,0x07]
628*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
629*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <2 x i64> %mask1, zeroinitializer
630*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x i64>*
631*9880d681SAndroid Build Coastguard Worker  %r = load <2 x i64>, <2 x i64>* %vaddr, align 1
632*9880d681SAndroid Build Coastguard Worker  %res = select <2 x i1> %mask, <2 x i64> %r, <2 x i64> %old
633*9880d681SAndroid Build Coastguard Worker  ret <2 x i64>%res
634*9880d681SAndroid Build Coastguard Worker}
635*9880d681SAndroid Build Coastguard Worker
636*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_23(i8 * %addr, <2 x i64> %mask1) {
637*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_23:
638*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
639*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9]
640*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x1f,0xc9,0x04]
641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0x89,0x6f,0x07]
642*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
643*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <2 x i64> %mask1, zeroinitializer
644*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x i64>*
645*9880d681SAndroid Build Coastguard Worker  %r = load <2 x i64>, <2 x i64>* %vaddr, align 16
646*9880d681SAndroid Build Coastguard Worker  %res = select <2 x i1> %mask, <2 x i64> %r, <2 x i64> zeroinitializer
647*9880d681SAndroid Build Coastguard Worker  ret <2 x i64>%res
648*9880d681SAndroid Build Coastguard Worker}
649*9880d681SAndroid Build Coastguard Worker
650*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_24(i8 * %addr, <2 x i64> %mask1) {
651*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_24:
652*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
653*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9]
654*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x1f,0xc9,0x04]
655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu64 (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfe,0x89,0x6f,0x07]
656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
657*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <2 x i64> %mask1, zeroinitializer
658*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x i64>*
659*9880d681SAndroid Build Coastguard Worker  %r = load <2 x i64>, <2 x i64>* %vaddr, align 1
660*9880d681SAndroid Build Coastguard Worker  %res = select <2 x i1> %mask, <2 x i64> %r, <2 x i64> zeroinitializer
661*9880d681SAndroid Build Coastguard Worker  ret <2 x i64>%res
662*9880d681SAndroid Build Coastguard Worker}
663*9880d681SAndroid Build Coastguard Worker
664*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_25(i8 * %addr, <4 x float> %old, <4 x i32> %mask1) {
665*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_25:
666*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2]
668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x08,0x1f,0xca,0x04]
669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmps (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x65,0x07]
670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
671*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i32> %mask1, zeroinitializer
672*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x float>*
673*9880d681SAndroid Build Coastguard Worker  %r = load <4 x float>, <4 x float>* %vaddr, align 16
674*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x float> %r, <4 x float> %old
675*9880d681SAndroid Build Coastguard Worker  ret <4 x float>%res
676*9880d681SAndroid Build Coastguard Worker}
677*9880d681SAndroid Build Coastguard Worker
678*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_26(i8 * %addr, <4 x float> %old, <4 x i32> %mask1) {
679*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_26:
680*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2]
682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x08,0x1f,0xca,0x04]
683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmps (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x65,0x07]
684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
685*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i32> %mask1, zeroinitializer
686*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x float>*
687*9880d681SAndroid Build Coastguard Worker  %r = load <4 x float>, <4 x float>* %vaddr, align 1
688*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x float> %r, <4 x float> %old
689*9880d681SAndroid Build Coastguard Worker  ret <4 x float>%res
690*9880d681SAndroid Build Coastguard Worker}
691*9880d681SAndroid Build Coastguard Worker
692*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_27(i8 * %addr, <4 x i32> %mask1) {
693*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_27:
694*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
695*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9]
696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x1f,0xc9,0x04]
697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x28,0x07]
698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
699*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i32> %mask1, zeroinitializer
700*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x float>*
701*9880d681SAndroid Build Coastguard Worker  %r = load <4 x float>, <4 x float>* %vaddr, align 16
702*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x float> %r, <4 x float> zeroinitializer
703*9880d681SAndroid Build Coastguard Worker  ret <4 x float>%res
704*9880d681SAndroid Build Coastguard Worker}
705*9880d681SAndroid Build Coastguard Worker
706*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_28(i8 * %addr, <4 x i32> %mask1) {
707*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_28:
708*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
709*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9]
710*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x1f,0xc9,0x04]
711*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovups (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x10,0x07]
712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
713*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <4 x i32> %mask1, zeroinitializer
714*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <4 x float>*
715*9880d681SAndroid Build Coastguard Worker  %r = load <4 x float>, <4 x float>* %vaddr, align 1
716*9880d681SAndroid Build Coastguard Worker  %res = select <4 x i1> %mask, <4 x float> %r, <4 x float> zeroinitializer
717*9880d681SAndroid Build Coastguard Worker  ret <4 x float>%res
718*9880d681SAndroid Build Coastguard Worker}
719*9880d681SAndroid Build Coastguard Worker
720*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_29(i8 * %addr, <2 x double> %old, <2 x i64> %mask1) {
721*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_29:
722*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
723*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2]
724*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x08,0x1f,0xca,0x04]
725*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmpd (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x65,0x07]
726*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
727*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <2 x i64> %mask1, zeroinitializer
728*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x double>*
729*9880d681SAndroid Build Coastguard Worker  %r = load <2 x double>, <2 x double>* %vaddr, align 16
730*9880d681SAndroid Build Coastguard Worker  %res = select <2 x i1> %mask, <2 x double> %r, <2 x double> %old
731*9880d681SAndroid Build Coastguard Worker  ret <2 x double>%res
732*9880d681SAndroid Build Coastguard Worker}
733*9880d681SAndroid Build Coastguard Worker
734*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_30(i8 * %addr, <2 x double> %old, <2 x i64> %mask1) {
735*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_30:
736*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2]
738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x08,0x1f,0xca,0x04]
739*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmpd (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x65,0x07]
740*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
741*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <2 x i64> %mask1, zeroinitializer
742*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x double>*
743*9880d681SAndroid Build Coastguard Worker  %r = load <2 x double>, <2 x double>* %vaddr, align 1
744*9880d681SAndroid Build Coastguard Worker  %res = select <2 x i1> %mask, <2 x double> %r, <2 x double> %old
745*9880d681SAndroid Build Coastguard Worker  ret <2 x double>%res
746*9880d681SAndroid Build Coastguard Worker}
747*9880d681SAndroid Build Coastguard Worker
748*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_31(i8 * %addr, <2 x i64> %mask1) {
749*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_31:
750*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
751*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9]
752*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x1f,0xc9,0x04]
753*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovapd (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0x89,0x28,0x07]
754*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
755*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <2 x i64> %mask1, zeroinitializer
756*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x double>*
757*9880d681SAndroid Build Coastguard Worker  %r = load <2 x double>, <2 x double>* %vaddr, align 16
758*9880d681SAndroid Build Coastguard Worker  %res = select <2 x i1> %mask, <2 x double> %r, <2 x double> zeroinitializer
759*9880d681SAndroid Build Coastguard Worker  ret <2 x double>%res
760*9880d681SAndroid Build Coastguard Worker}
761*9880d681SAndroid Build Coastguard Worker
762*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_32(i8 * %addr, <2 x i64> %mask1) {
763*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_32:
764*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
765*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9]
766*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x1f,0xc9,0x04]
767*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovupd (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0x89,0x10,0x07]
768*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
769*9880d681SAndroid Build Coastguard Worker  %mask = icmp ne <2 x i64> %mask1, zeroinitializer
770*9880d681SAndroid Build Coastguard Worker  %vaddr = bitcast i8* %addr to <2 x double>*
771*9880d681SAndroid Build Coastguard Worker  %r = load <2 x double>, <2 x double>* %vaddr, align 1
772*9880d681SAndroid Build Coastguard Worker  %res = select <2 x i1> %mask, <2 x double> %r, <2 x double> zeroinitializer
773*9880d681SAndroid Build Coastguard Worker  ret <2 x double>%res
774*9880d681SAndroid Build Coastguard Worker}
775*9880d681SAndroid Build Coastguard Worker
776