xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/vbits.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mattr=+neon -mcpu=cortex-a8 %s -o - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_andi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
4*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_andi8:
5*9880d681SAndroid Build Coastguard Worker;CHECK: vand
6*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
7*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i8>, <8 x i8>* %B
8*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <8 x i8> %tmp1, %tmp2
9*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp3
10*9880d681SAndroid Build Coastguard Worker}
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @v_andi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
13*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_andi16:
14*9880d681SAndroid Build Coastguard Worker;CHECK: vand
15*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i16>, <4 x i16>* %A
16*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i16>, <4 x i16>* %B
17*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <4 x i16> %tmp1, %tmp2
18*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp3
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @v_andi32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
22*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_andi32:
23*9880d681SAndroid Build Coastguard Worker;CHECK: vand
24*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i32>, <2 x i32>* %A
25*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i32>, <2 x i32>* %B
26*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <2 x i32> %tmp1, %tmp2
27*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @v_andi64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
31*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_andi64:
32*9880d681SAndroid Build Coastguard Worker;CHECK: vand
33*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <1 x i64>, <1 x i64>* %A
34*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <1 x i64>, <1 x i64>* %B
35*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <1 x i64> %tmp1, %tmp2
36*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp3
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_andQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
40*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_andQi8:
41*9880d681SAndroid Build Coastguard Worker;CHECK: vand
42*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
43*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <16 x i8>, <16 x i8>* %B
44*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <16 x i8> %tmp1, %tmp2
45*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp3
46*9880d681SAndroid Build Coastguard Worker}
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v_andQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
49*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_andQi16:
50*9880d681SAndroid Build Coastguard Worker;CHECK: vand
51*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i16>, <8 x i16>* %A
52*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i16>, <8 x i16>* %B
53*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <8 x i16> %tmp1, %tmp2
54*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp3
55*9880d681SAndroid Build Coastguard Worker}
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v_andQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
58*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_andQi32:
59*9880d681SAndroid Build Coastguard Worker;CHECK: vand
60*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i32>, <4 x i32>* %A
61*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i32>, <4 x i32>* %B
62*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <4 x i32> %tmp1, %tmp2
63*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
64*9880d681SAndroid Build Coastguard Worker}
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @v_andQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
67*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_andQi64:
68*9880d681SAndroid Build Coastguard Worker;CHECK: vand
69*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i64>, <2 x i64>* %A
70*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i64>, <2 x i64>* %B
71*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <2 x i64> %tmp1, %tmp2
72*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
73*9880d681SAndroid Build Coastguard Worker}
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_bici8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
76*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_bici8:
77*9880d681SAndroid Build Coastguard Worker;CHECK: vbic
78*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
79*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i8>, <8 x i8>* %B
80*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <8 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
81*9880d681SAndroid Build Coastguard Worker	%tmp4 = and <8 x i8> %tmp1, %tmp3
82*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
83*9880d681SAndroid Build Coastguard Worker}
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @v_bici16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
86*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_bici16:
87*9880d681SAndroid Build Coastguard Worker;CHECK: vbic
88*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i16>, <4 x i16>* %A
89*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i16>, <4 x i16>* %B
90*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <4 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1 >
91*9880d681SAndroid Build Coastguard Worker	%tmp4 = and <4 x i16> %tmp1, %tmp3
92*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
93*9880d681SAndroid Build Coastguard Worker}
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @v_bici32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
96*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_bici32:
97*9880d681SAndroid Build Coastguard Worker;CHECK: vbic
98*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i32>, <2 x i32>* %A
99*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i32>, <2 x i32>* %B
100*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <2 x i32> %tmp2, < i32 -1, i32 -1 >
101*9880d681SAndroid Build Coastguard Worker	%tmp4 = and <2 x i32> %tmp1, %tmp3
102*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @v_bici64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
106*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_bici64:
107*9880d681SAndroid Build Coastguard Worker;CHECK: vbic
108*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <1 x i64>, <1 x i64>* %A
109*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <1 x i64>, <1 x i64>* %B
110*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <1 x i64> %tmp2, < i64 -1 >
111*9880d681SAndroid Build Coastguard Worker	%tmp4 = and <1 x i64> %tmp1, %tmp3
112*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp4
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_bicQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
116*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_bicQi8:
117*9880d681SAndroid Build Coastguard Worker;CHECK: vbic
118*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
119*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <16 x i8>, <16 x i8>* %B
120*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <16 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
121*9880d681SAndroid Build Coastguard Worker	%tmp4 = and <16 x i8> %tmp1, %tmp3
122*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
123*9880d681SAndroid Build Coastguard Worker}
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v_bicQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
126*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_bicQi16:
127*9880d681SAndroid Build Coastguard Worker;CHECK: vbic
128*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i16>, <8 x i16>* %A
129*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i16>, <8 x i16>* %B
130*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <8 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1 >
131*9880d681SAndroid Build Coastguard Worker	%tmp4 = and <8 x i16> %tmp1, %tmp3
132*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
133*9880d681SAndroid Build Coastguard Worker}
134*9880d681SAndroid Build Coastguard Worker
135*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v_bicQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
136*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_bicQi32:
137*9880d681SAndroid Build Coastguard Worker;CHECK: vbic
138*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i32>, <4 x i32>* %A
139*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i32>, <4 x i32>* %B
140*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <4 x i32> %tmp2, < i32 -1, i32 -1, i32 -1, i32 -1 >
141*9880d681SAndroid Build Coastguard Worker	%tmp4 = and <4 x i32> %tmp1, %tmp3
142*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
143*9880d681SAndroid Build Coastguard Worker}
144*9880d681SAndroid Build Coastguard Worker
145*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @v_bicQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
146*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_bicQi64:
147*9880d681SAndroid Build Coastguard Worker;CHECK: vbic
148*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i64>, <2 x i64>* %A
149*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i64>, <2 x i64>* %B
150*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <2 x i64> %tmp2, < i64 -1, i64 -1 >
151*9880d681SAndroid Build Coastguard Worker	%tmp4 = and <2 x i64> %tmp1, %tmp3
152*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
153*9880d681SAndroid Build Coastguard Worker}
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_eori8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
156*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_eori8:
157*9880d681SAndroid Build Coastguard Worker;CHECK: veor
158*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
159*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i8>, <8 x i8>* %B
160*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <8 x i8> %tmp1, %tmp2
161*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp3
162*9880d681SAndroid Build Coastguard Worker}
163*9880d681SAndroid Build Coastguard Worker
164*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @v_eori16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
165*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_eori16:
166*9880d681SAndroid Build Coastguard Worker;CHECK: veor
167*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i16>, <4 x i16>* %A
168*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i16>, <4 x i16>* %B
169*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <4 x i16> %tmp1, %tmp2
170*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp3
171*9880d681SAndroid Build Coastguard Worker}
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @v_eori32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
174*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_eori32:
175*9880d681SAndroid Build Coastguard Worker;CHECK: veor
176*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i32>, <2 x i32>* %A
177*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i32>, <2 x i32>* %B
178*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <2 x i32> %tmp1, %tmp2
179*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
180*9880d681SAndroid Build Coastguard Worker}
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @v_eori64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
183*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_eori64:
184*9880d681SAndroid Build Coastguard Worker;CHECK: veor
185*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <1 x i64>, <1 x i64>* %A
186*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <1 x i64>, <1 x i64>* %B
187*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <1 x i64> %tmp1, %tmp2
188*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp3
189*9880d681SAndroid Build Coastguard Worker}
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_eorQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
192*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_eorQi8:
193*9880d681SAndroid Build Coastguard Worker;CHECK: veor
194*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
195*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <16 x i8>, <16 x i8>* %B
196*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <16 x i8> %tmp1, %tmp2
197*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp3
198*9880d681SAndroid Build Coastguard Worker}
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v_eorQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
201*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_eorQi16:
202*9880d681SAndroid Build Coastguard Worker;CHECK: veor
203*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i16>, <8 x i16>* %A
204*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i16>, <8 x i16>* %B
205*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <8 x i16> %tmp1, %tmp2
206*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp3
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v_eorQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
210*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_eorQi32:
211*9880d681SAndroid Build Coastguard Worker;CHECK: veor
212*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i32>, <4 x i32>* %A
213*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i32>, <4 x i32>* %B
214*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <4 x i32> %tmp1, %tmp2
215*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
216*9880d681SAndroid Build Coastguard Worker}
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @v_eorQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
219*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_eorQi64:
220*9880d681SAndroid Build Coastguard Worker;CHECK: veor
221*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i64>, <2 x i64>* %A
222*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i64>, <2 x i64>* %B
223*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <2 x i64> %tmp1, %tmp2
224*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
225*9880d681SAndroid Build Coastguard Worker}
226*9880d681SAndroid Build Coastguard Worker
227*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_mvni8(<8 x i8>* %A) nounwind {
228*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_mvni8:
229*9880d681SAndroid Build Coastguard Worker;CHECK: vmvn
230*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
231*9880d681SAndroid Build Coastguard Worker	%tmp2 = xor <8 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
232*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp2
233*9880d681SAndroid Build Coastguard Worker}
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @v_mvni16(<4 x i16>* %A) nounwind {
236*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_mvni16:
237*9880d681SAndroid Build Coastguard Worker;CHECK: vmvn
238*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i16>, <4 x i16>* %A
239*9880d681SAndroid Build Coastguard Worker	%tmp2 = xor <4 x i16> %tmp1, < i16 -1, i16 -1, i16 -1, i16 -1 >
240*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp2
241*9880d681SAndroid Build Coastguard Worker}
242*9880d681SAndroid Build Coastguard Worker
243*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @v_mvni32(<2 x i32>* %A) nounwind {
244*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_mvni32:
245*9880d681SAndroid Build Coastguard Worker;CHECK: vmvn
246*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i32>, <2 x i32>* %A
247*9880d681SAndroid Build Coastguard Worker	%tmp2 = xor <2 x i32> %tmp1, < i32 -1, i32 -1 >
248*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp2
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @v_mvni64(<1 x i64>* %A) nounwind {
252*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_mvni64:
253*9880d681SAndroid Build Coastguard Worker;CHECK: vmvn
254*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <1 x i64>, <1 x i64>* %A
255*9880d681SAndroid Build Coastguard Worker	%tmp2 = xor <1 x i64> %tmp1, < i64 -1 >
256*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp2
257*9880d681SAndroid Build Coastguard Worker}
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_mvnQi8(<16 x i8>* %A) nounwind {
260*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_mvnQi8:
261*9880d681SAndroid Build Coastguard Worker;CHECK: vmvn
262*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
263*9880d681SAndroid Build Coastguard Worker	%tmp2 = xor <16 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
264*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp2
265*9880d681SAndroid Build Coastguard Worker}
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v_mvnQi16(<8 x i16>* %A) nounwind {
268*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_mvnQi16:
269*9880d681SAndroid Build Coastguard Worker;CHECK: vmvn
270*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i16>, <8 x i16>* %A
271*9880d681SAndroid Build Coastguard Worker	%tmp2 = xor <8 x i16> %tmp1, < i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1 >
272*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp2
273*9880d681SAndroid Build Coastguard Worker}
274*9880d681SAndroid Build Coastguard Worker
275*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v_mvnQi32(<4 x i32>* %A) nounwind {
276*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_mvnQi32:
277*9880d681SAndroid Build Coastguard Worker;CHECK: vmvn
278*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i32>, <4 x i32>* %A
279*9880d681SAndroid Build Coastguard Worker	%tmp2 = xor <4 x i32> %tmp1, < i32 -1, i32 -1, i32 -1, i32 -1 >
280*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp2
281*9880d681SAndroid Build Coastguard Worker}
282*9880d681SAndroid Build Coastguard Worker
283*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @v_mvnQi64(<2 x i64>* %A) nounwind {
284*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_mvnQi64:
285*9880d681SAndroid Build Coastguard Worker;CHECK: vmvn
286*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i64>, <2 x i64>* %A
287*9880d681SAndroid Build Coastguard Worker	%tmp2 = xor <2 x i64> %tmp1, < i64 -1, i64 -1 >
288*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp2
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_orri8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
292*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orri8:
293*9880d681SAndroid Build Coastguard Worker;CHECK: vorr
294*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
295*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i8>, <8 x i8>* %B
296*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <8 x i8> %tmp1, %tmp2
297*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp3
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @v_orri16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
301*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orri16:
302*9880d681SAndroid Build Coastguard Worker;CHECK: vorr
303*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i16>, <4 x i16>* %A
304*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i16>, <4 x i16>* %B
305*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <4 x i16> %tmp1, %tmp2
306*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp3
307*9880d681SAndroid Build Coastguard Worker}
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @v_orri32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
310*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orri32:
311*9880d681SAndroid Build Coastguard Worker;CHECK: vorr
312*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i32>, <2 x i32>* %A
313*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i32>, <2 x i32>* %B
314*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <2 x i32> %tmp1, %tmp2
315*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Worker
318*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @v_orri64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
319*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orri64:
320*9880d681SAndroid Build Coastguard Worker;CHECK: vorr
321*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <1 x i64>, <1 x i64>* %A
322*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <1 x i64>, <1 x i64>* %B
323*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <1 x i64> %tmp1, %tmp2
324*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp3
325*9880d681SAndroid Build Coastguard Worker}
326*9880d681SAndroid Build Coastguard Worker
327*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_orrQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
328*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orrQi8:
329*9880d681SAndroid Build Coastguard Worker;CHECK: vorr
330*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
331*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <16 x i8>, <16 x i8>* %B
332*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <16 x i8> %tmp1, %tmp2
333*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp3
334*9880d681SAndroid Build Coastguard Worker}
335*9880d681SAndroid Build Coastguard Worker
336*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v_orrQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
337*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orrQi16:
338*9880d681SAndroid Build Coastguard Worker;CHECK: vorr
339*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i16>, <8 x i16>* %A
340*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i16>, <8 x i16>* %B
341*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <8 x i16> %tmp1, %tmp2
342*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp3
343*9880d681SAndroid Build Coastguard Worker}
344*9880d681SAndroid Build Coastguard Worker
345*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v_orrQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
346*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orrQi32:
347*9880d681SAndroid Build Coastguard Worker;CHECK: vorr
348*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i32>, <4 x i32>* %A
349*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i32>, <4 x i32>* %B
350*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <4 x i32> %tmp1, %tmp2
351*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
352*9880d681SAndroid Build Coastguard Worker}
353*9880d681SAndroid Build Coastguard Worker
354*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @v_orrQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
355*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orrQi64:
356*9880d681SAndroid Build Coastguard Worker;CHECK: vorr
357*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i64>, <2 x i64>* %A
358*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i64>, <2 x i64>* %B
359*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <2 x i64> %tmp1, %tmp2
360*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
361*9880d681SAndroid Build Coastguard Worker}
362*9880d681SAndroid Build Coastguard Worker
363*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_orni8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
364*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orni8:
365*9880d681SAndroid Build Coastguard Worker;CHECK: vorn
366*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
367*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i8>, <8 x i8>* %B
368*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <8 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
369*9880d681SAndroid Build Coastguard Worker	%tmp4 = or <8 x i8> %tmp1, %tmp3
370*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
371*9880d681SAndroid Build Coastguard Worker}
372*9880d681SAndroid Build Coastguard Worker
373*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @v_orni16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
374*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orni16:
375*9880d681SAndroid Build Coastguard Worker;CHECK: vorn
376*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i16>, <4 x i16>* %A
377*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i16>, <4 x i16>* %B
378*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <4 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1 >
379*9880d681SAndroid Build Coastguard Worker	%tmp4 = or <4 x i16> %tmp1, %tmp3
380*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
381*9880d681SAndroid Build Coastguard Worker}
382*9880d681SAndroid Build Coastguard Worker
383*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @v_orni32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
384*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orni32:
385*9880d681SAndroid Build Coastguard Worker;CHECK: vorn
386*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i32>, <2 x i32>* %A
387*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i32>, <2 x i32>* %B
388*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <2 x i32> %tmp2, < i32 -1, i32 -1 >
389*9880d681SAndroid Build Coastguard Worker	%tmp4 = or <2 x i32> %tmp1, %tmp3
390*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
391*9880d681SAndroid Build Coastguard Worker}
392*9880d681SAndroid Build Coastguard Worker
393*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @v_orni64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
394*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_orni64:
395*9880d681SAndroid Build Coastguard Worker;CHECK: vorn
396*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <1 x i64>, <1 x i64>* %A
397*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <1 x i64>, <1 x i64>* %B
398*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <1 x i64> %tmp2, < i64 -1 >
399*9880d681SAndroid Build Coastguard Worker	%tmp4 = or <1 x i64> %tmp1, %tmp3
400*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp4
401*9880d681SAndroid Build Coastguard Worker}
402*9880d681SAndroid Build Coastguard Worker
403*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_ornQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
404*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_ornQi8:
405*9880d681SAndroid Build Coastguard Worker;CHECK: vorn
406*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
407*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <16 x i8>, <16 x i8>* %B
408*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <16 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
409*9880d681SAndroid Build Coastguard Worker	%tmp4 = or <16 x i8> %tmp1, %tmp3
410*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
411*9880d681SAndroid Build Coastguard Worker}
412*9880d681SAndroid Build Coastguard Worker
413*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v_ornQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
414*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_ornQi16:
415*9880d681SAndroid Build Coastguard Worker;CHECK: vorn
416*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i16>, <8 x i16>* %A
417*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i16>, <8 x i16>* %B
418*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <8 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1 >
419*9880d681SAndroid Build Coastguard Worker	%tmp4 = or <8 x i16> %tmp1, %tmp3
420*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
421*9880d681SAndroid Build Coastguard Worker}
422*9880d681SAndroid Build Coastguard Worker
423*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v_ornQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
424*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_ornQi32:
425*9880d681SAndroid Build Coastguard Worker;CHECK: vorn
426*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i32>, <4 x i32>* %A
427*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i32>, <4 x i32>* %B
428*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <4 x i32> %tmp2, < i32 -1, i32 -1, i32 -1, i32 -1 >
429*9880d681SAndroid Build Coastguard Worker	%tmp4 = or <4 x i32> %tmp1, %tmp3
430*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
431*9880d681SAndroid Build Coastguard Worker}
432*9880d681SAndroid Build Coastguard Worker
433*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @v_ornQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
434*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: v_ornQi64:
435*9880d681SAndroid Build Coastguard Worker;CHECK: vorn
436*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i64>, <2 x i64>* %A
437*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i64>, <2 x i64>* %B
438*9880d681SAndroid Build Coastguard Worker	%tmp3 = xor <2 x i64> %tmp2, < i64 -1, i64 -1 >
439*9880d681SAndroid Build Coastguard Worker	%tmp4 = or <2 x i64> %tmp1, %tmp3
440*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
441*9880d681SAndroid Build Coastguard Worker}
442*9880d681SAndroid Build Coastguard Worker
443*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @vtsti8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
444*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: vtsti8:
445*9880d681SAndroid Build Coastguard Worker;CHECK: vtst.8
446*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
447*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i8>, <8 x i8>* %B
448*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <8 x i8> %tmp1, %tmp2
449*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <8 x i8> %tmp3, zeroinitializer
450*9880d681SAndroid Build Coastguard Worker        %tmp5 = sext <8 x i1> %tmp4 to <8 x i8>
451*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp5
452*9880d681SAndroid Build Coastguard Worker}
453*9880d681SAndroid Build Coastguard Worker
454*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @vtsti16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
455*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: vtsti16:
456*9880d681SAndroid Build Coastguard Worker;CHECK: vtst.16
457*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i16>, <4 x i16>* %A
458*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i16>, <4 x i16>* %B
459*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <4 x i16> %tmp1, %tmp2
460*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <4 x i16> %tmp3, zeroinitializer
461*9880d681SAndroid Build Coastguard Worker        %tmp5 = sext <4 x i1> %tmp4 to <4 x i16>
462*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp5
463*9880d681SAndroid Build Coastguard Worker}
464*9880d681SAndroid Build Coastguard Worker
465*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @vtsti32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
466*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: vtsti32:
467*9880d681SAndroid Build Coastguard Worker;CHECK: vtst.32
468*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <2 x i32>, <2 x i32>* %A
469*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <2 x i32>, <2 x i32>* %B
470*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <2 x i32> %tmp1, %tmp2
471*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <2 x i32> %tmp3, zeroinitializer
472*9880d681SAndroid Build Coastguard Worker        %tmp5 = sext <2 x i1> %tmp4 to <2 x i32>
473*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp5
474*9880d681SAndroid Build Coastguard Worker}
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @vtstQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
477*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: vtstQi8:
478*9880d681SAndroid Build Coastguard Worker;CHECK: vtst.8
479*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
480*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <16 x i8>, <16 x i8>* %B
481*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <16 x i8> %tmp1, %tmp2
482*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <16 x i8> %tmp3, zeroinitializer
483*9880d681SAndroid Build Coastguard Worker        %tmp5 = sext <16 x i1> %tmp4 to <16 x i8>
484*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp5
485*9880d681SAndroid Build Coastguard Worker}
486*9880d681SAndroid Build Coastguard Worker
487*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @vtstQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
488*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: vtstQi16:
489*9880d681SAndroid Build Coastguard Worker;CHECK: vtst.16
490*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i16>, <8 x i16>* %A
491*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <8 x i16>, <8 x i16>* %B
492*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <8 x i16> %tmp1, %tmp2
493*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <8 x i16> %tmp3, zeroinitializer
494*9880d681SAndroid Build Coastguard Worker        %tmp5 = sext <8 x i1> %tmp4 to <8 x i16>
495*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp5
496*9880d681SAndroid Build Coastguard Worker}
497*9880d681SAndroid Build Coastguard Worker
498*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vtstQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
499*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: vtstQi32:
500*9880d681SAndroid Build Coastguard Worker;CHECK: vtst.32
501*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <4 x i32>, <4 x i32>* %A
502*9880d681SAndroid Build Coastguard Worker	%tmp2 = load <4 x i32>, <4 x i32>* %B
503*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <4 x i32> %tmp1, %tmp2
504*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <4 x i32> %tmp3, zeroinitializer
505*9880d681SAndroid Build Coastguard Worker        %tmp5 = sext <4 x i1> %tmp4 to <4 x i32>
506*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp5
507*9880d681SAndroid Build Coastguard Worker}
508*9880d681SAndroid Build Coastguard Worker
509*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_orrimm(<8 x i8>* %A) nounwind {
510*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v_orrimm:
511*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmov
512*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmvn
513*9880d681SAndroid Build Coastguard Worker; CHECK: vorr
514*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
515*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <8 x i8> %tmp1, <i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1>
516*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp3
517*9880d681SAndroid Build Coastguard Worker}
518*9880d681SAndroid Build Coastguard Worker
519*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_orrimmQ(<16 x i8>* %A) nounwind {
520*9880d681SAndroid Build Coastguard Worker; CHECK: v_orrimmQ
521*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmov
522*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmvn
523*9880d681SAndroid Build Coastguard Worker; CHECK: vorr
524*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
525*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <16 x i8> %tmp1, <i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1>
526*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp3
527*9880d681SAndroid Build Coastguard Worker}
528*9880d681SAndroid Build Coastguard Worker
529*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_bicimm(<8 x i8>* %A) nounwind {
530*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v_bicimm:
531*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmov
532*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmvn
533*9880d681SAndroid Build Coastguard Worker; CHECK: vbic
534*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
535*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <8 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0 >
536*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp3
537*9880d681SAndroid Build Coastguard Worker}
538*9880d681SAndroid Build Coastguard Worker
539*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_bicimmQ(<16 x i8>* %A) nounwind {
540*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v_bicimmQ:
541*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmov
542*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmvn
543*9880d681SAndroid Build Coastguard Worker; CHECK: vbic
544*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
545*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <16 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0 >
546*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp3
547*9880d681SAndroid Build Coastguard Worker}
548