xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/msa/bitwise.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mattr=+msa,+fp64 < %s | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine void @and_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
5*9880d681SAndroid Build Coastguard Worker  ; CHECK: and_v16i8:
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
8*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
9*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
10*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
11*9880d681SAndroid Build Coastguard Worker  %3 = and <16 x i8> %1, %2
12*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: and.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
13*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
14*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker  ret void
17*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size and_v16i8
18*9880d681SAndroid Build Coastguard Worker}
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerdefine void @and_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
21*9880d681SAndroid Build Coastguard Worker  ; CHECK: and_v8i16:
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
24*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
25*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
26*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
27*9880d681SAndroid Build Coastguard Worker  %3 = and <8 x i16> %1, %2
28*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: and.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
29*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
30*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker  ret void
33*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size and_v8i16
34*9880d681SAndroid Build Coastguard Worker}
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerdefine void @and_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
37*9880d681SAndroid Build Coastguard Worker  ; CHECK: and_v4i32:
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
40*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
41*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
42*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
43*9880d681SAndroid Build Coastguard Worker  %3 = and <4 x i32> %1, %2
44*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: and.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
45*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
46*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Worker  ret void
49*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size and_v4i32
50*9880d681SAndroid Build Coastguard Worker}
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Workerdefine void @and_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
53*9880d681SAndroid Build Coastguard Worker  ; CHECK: and_v2i64:
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
56*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
57*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
58*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
59*9880d681SAndroid Build Coastguard Worker  %3 = and <2 x i64> %1, %2
60*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: and.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
61*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
62*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Worker  ret void
65*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size and_v2i64
66*9880d681SAndroid Build Coastguard Worker}
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerdefine void @and_v16i8_i(<16 x i8>* %c, <16 x i8>* %a) nounwind {
69*9880d681SAndroid Build Coastguard Worker  ; CHECK: and_v16i8_i:
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
72*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
73*9880d681SAndroid Build Coastguard Worker  %2 = and <16 x 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, i8 1>
74*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: andi.b [[R4:\$w[0-9]+]], [[R1]], 1
75*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
76*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R4]], 0($4)
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Worker  ret void
79*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size and_v16i8_i
80*9880d681SAndroid Build Coastguard Worker}
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Workerdefine void @and_v8i16_i(<8 x i16>* %c, <8 x i16>* %a) nounwind {
83*9880d681SAndroid Build Coastguard Worker  ; CHECK: and_v8i16_i:
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
86*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
87*9880d681SAndroid Build Coastguard Worker  %2 = and <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
88*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.h [[R3:\$w[0-9]+]], 1
89*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: and.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
90*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
91*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Worker  ret void
94*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size and_v8i16_i
95*9880d681SAndroid Build Coastguard Worker}
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdefine void @and_v4i32_i(<4 x i32>* %c, <4 x i32>* %a) nounwind {
98*9880d681SAndroid Build Coastguard Worker  ; CHECK: and_v4i32_i:
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
101*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
102*9880d681SAndroid Build Coastguard Worker  %2 = and <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
103*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.w [[R3:\$w[0-9]+]], 1
104*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: and.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
105*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
106*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Worker  ret void
109*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size and_v4i32_i
110*9880d681SAndroid Build Coastguard Worker}
111*9880d681SAndroid Build Coastguard Worker
112*9880d681SAndroid Build Coastguard Workerdefine void @and_v2i64_i(<2 x i64>* %c, <2 x i64>* %a) nounwind {
113*9880d681SAndroid Build Coastguard Worker  ; CHECK: and_v2i64_i:
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
116*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
117*9880d681SAndroid Build Coastguard Worker  %2 = and <2 x i64> %1, <i64 1, i64 1>
118*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.d [[R3:\$w[0-9]+]], 1
119*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: and.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
120*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
121*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Worker  ret void
124*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size and_v2i64_i
125*9880d681SAndroid Build Coastguard Worker}
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Workerdefine void @or_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
128*9880d681SAndroid Build Coastguard Worker  ; CHECK: or_v16i8:
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
131*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
132*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
133*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
134*9880d681SAndroid Build Coastguard Worker  %3 = or <16 x i8> %1, %2
135*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: or.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
136*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
137*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker  ret void
140*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size or_v16i8
141*9880d681SAndroid Build Coastguard Worker}
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Workerdefine void @or_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
144*9880d681SAndroid Build Coastguard Worker  ; CHECK: or_v8i16:
145*9880d681SAndroid Build Coastguard Worker
146*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
147*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
148*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
149*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
150*9880d681SAndroid Build Coastguard Worker  %3 = or <8 x i16> %1, %2
151*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: or.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
152*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
153*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard Worker  ret void
156*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size or_v8i16
157*9880d681SAndroid Build Coastguard Worker}
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Workerdefine void @or_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
160*9880d681SAndroid Build Coastguard Worker  ; CHECK: or_v4i32:
161*9880d681SAndroid Build Coastguard Worker
162*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
163*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
164*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
165*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
166*9880d681SAndroid Build Coastguard Worker  %3 = or <4 x i32> %1, %2
167*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: or.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
168*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
169*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
170*9880d681SAndroid Build Coastguard Worker
171*9880d681SAndroid Build Coastguard Worker  ret void
172*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size or_v4i32
173*9880d681SAndroid Build Coastguard Worker}
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerdefine void @or_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
176*9880d681SAndroid Build Coastguard Worker  ; CHECK: or_v2i64:
177*9880d681SAndroid Build Coastguard Worker
178*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
179*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
180*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
181*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
182*9880d681SAndroid Build Coastguard Worker  %3 = or <2 x i64> %1, %2
183*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: or.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
184*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
185*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
186*9880d681SAndroid Build Coastguard Worker
187*9880d681SAndroid Build Coastguard Worker  ret void
188*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size or_v2i64
189*9880d681SAndroid Build Coastguard Worker}
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Workerdefine void @or_v16i8_i(<16 x i8>* %c, <16 x i8>* %a) nounwind {
192*9880d681SAndroid Build Coastguard Worker  ; CHECK: or_v16i8_i:
193*9880d681SAndroid Build Coastguard Worker
194*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
195*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
196*9880d681SAndroid Build Coastguard Worker  %2 = or <16 x i8> %1, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
197*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ori.b [[R4:\$w[0-9]+]], [[R1]], 3
198*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
199*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R4]], 0($4)
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Worker  ret void
202*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size or_v16i8_i
203*9880d681SAndroid Build Coastguard Worker}
204*9880d681SAndroid Build Coastguard Worker
205*9880d681SAndroid Build Coastguard Workerdefine void @or_v8i16_i(<8 x i16>* %c, <8 x i16>* %a) nounwind {
206*9880d681SAndroid Build Coastguard Worker  ; CHECK: or_v8i16_i:
207*9880d681SAndroid Build Coastguard Worker
208*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
209*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
210*9880d681SAndroid Build Coastguard Worker  %2 = or <8 x i16> %1, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
211*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.h [[R3:\$w[0-9]+]], 3
212*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: or.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
213*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
214*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
215*9880d681SAndroid Build Coastguard Worker
216*9880d681SAndroid Build Coastguard Worker  ret void
217*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size or_v8i16_i
218*9880d681SAndroid Build Coastguard Worker}
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Workerdefine void @or_v4i32_i(<4 x i32>* %c, <4 x i32>* %a) nounwind {
221*9880d681SAndroid Build Coastguard Worker  ; CHECK: or_v4i32_i:
222*9880d681SAndroid Build Coastguard Worker
223*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
224*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
225*9880d681SAndroid Build Coastguard Worker  %2 = or <4 x i32> %1, <i32 3, i32 3, i32 3, i32 3>
226*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.w [[R3:\$w[0-9]+]], 3
227*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: or.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
228*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
229*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Worker  ret void
232*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size or_v4i32_i
233*9880d681SAndroid Build Coastguard Worker}
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Workerdefine void @or_v2i64_i(<2 x i64>* %c, <2 x i64>* %a) nounwind {
236*9880d681SAndroid Build Coastguard Worker  ; CHECK: or_v2i64_i:
237*9880d681SAndroid Build Coastguard Worker
238*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
239*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
240*9880d681SAndroid Build Coastguard Worker  %2 = or <2 x i64> %1, <i64 3, i64 3>
241*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.d [[R3:\$w[0-9]+]], 3
242*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: or.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
243*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
244*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Worker  ret void
247*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size or_v2i64_i
248*9880d681SAndroid Build Coastguard Worker}
249*9880d681SAndroid Build Coastguard Worker
250*9880d681SAndroid Build Coastguard Workerdefine void @nor_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
251*9880d681SAndroid Build Coastguard Worker  ; CHECK: nor_v16i8:
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
254*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
255*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
256*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
257*9880d681SAndroid Build Coastguard Worker  %3 = or <16 x i8> %1, %2
258*9880d681SAndroid Build Coastguard Worker  %4 = xor <16 x i8> %3, <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>
259*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nor.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
260*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
261*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
262*9880d681SAndroid Build Coastguard Worker
263*9880d681SAndroid Build Coastguard Worker  ret void
264*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size nor_v16i8
265*9880d681SAndroid Build Coastguard Worker}
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Workerdefine void @nor_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
268*9880d681SAndroid Build Coastguard Worker  ; CHECK: nor_v8i16:
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
271*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
272*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
273*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
274*9880d681SAndroid Build Coastguard Worker  %3 = or <8 x i16> %1, %2
275*9880d681SAndroid Build Coastguard Worker  %4 = xor <8 x i16> %3, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
276*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nor.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
277*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
278*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Worker  ret void
281*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size nor_v8i16
282*9880d681SAndroid Build Coastguard Worker}
283*9880d681SAndroid Build Coastguard Worker
284*9880d681SAndroid Build Coastguard Workerdefine void @nor_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
285*9880d681SAndroid Build Coastguard Worker  ; CHECK: nor_v4i32:
286*9880d681SAndroid Build Coastguard Worker
287*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
288*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
289*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
290*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
291*9880d681SAndroid Build Coastguard Worker  %3 = or <4 x i32> %1, %2
292*9880d681SAndroid Build Coastguard Worker  %4 = xor <4 x i32> %3, <i32 -1, i32 -1, i32 -1, i32 -1>
293*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nor.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
294*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
295*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
296*9880d681SAndroid Build Coastguard Worker
297*9880d681SAndroid Build Coastguard Worker  ret void
298*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size nor_v4i32
299*9880d681SAndroid Build Coastguard Worker}
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdefine void @nor_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
302*9880d681SAndroid Build Coastguard Worker  ; CHECK: nor_v2i64:
303*9880d681SAndroid Build Coastguard Worker
304*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
305*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
306*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
307*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
308*9880d681SAndroid Build Coastguard Worker  %3 = or <2 x i64> %1, %2
309*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %3, <i64 -1, i64 -1>
310*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nor.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
311*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
312*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Worker  ret void
315*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size nor_v2i64
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Worker
318*9880d681SAndroid Build Coastguard Workerdefine void @nor_v16i8_i(<16 x i8>* %c, <16 x i8>* %a) nounwind {
319*9880d681SAndroid Build Coastguard Worker  ; CHECK: nor_v16i8_i:
320*9880d681SAndroid Build Coastguard Worker
321*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
322*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
323*9880d681SAndroid Build Coastguard Worker  %2 = or <16 x 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, i8 1>
324*9880d681SAndroid Build Coastguard Worker  %3 = xor <16 x i8> %2, <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>
325*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ori.b [[R4:\$w[0-9]+]], [[R1]], 1
326*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
327*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R4]], 0($4)
328*9880d681SAndroid Build Coastguard Worker
329*9880d681SAndroid Build Coastguard Worker  ret void
330*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size nor_v16i8_i
331*9880d681SAndroid Build Coastguard Worker}
332*9880d681SAndroid Build Coastguard Worker
333*9880d681SAndroid Build Coastguard Workerdefine void @nor_v8i16_i(<8 x i16>* %c, <8 x i16>* %a) nounwind {
334*9880d681SAndroid Build Coastguard Worker  ; CHECK: nor_v8i16_i:
335*9880d681SAndroid Build Coastguard Worker
336*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
337*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
338*9880d681SAndroid Build Coastguard Worker  %2 = or <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
339*9880d681SAndroid Build Coastguard Worker  %3 = xor <8 x i16> %2, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
340*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.h [[R3:\$w[0-9]+]], 1
341*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nor.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
342*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
343*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
344*9880d681SAndroid Build Coastguard Worker
345*9880d681SAndroid Build Coastguard Worker  ret void
346*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size nor_v8i16_i
347*9880d681SAndroid Build Coastguard Worker}
348*9880d681SAndroid Build Coastguard Worker
349*9880d681SAndroid Build Coastguard Workerdefine void @nor_v4i32_i(<4 x i32>* %c, <4 x i32>* %a) nounwind {
350*9880d681SAndroid Build Coastguard Worker  ; CHECK: nor_v4i32_i:
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
353*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
354*9880d681SAndroid Build Coastguard Worker  %2 = or <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
355*9880d681SAndroid Build Coastguard Worker  %3 = xor <4 x i32> %2, <i32 -1, i32 -1, i32 -1, i32 -1>
356*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.w [[R3:\$w[0-9]+]], 1
357*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nor.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
358*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
359*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Worker  ret void
362*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size nor_v4i32_i
363*9880d681SAndroid Build Coastguard Worker}
364*9880d681SAndroid Build Coastguard Worker
365*9880d681SAndroid Build Coastguard Workerdefine void @nor_v2i64_i(<2 x i64>* %c, <2 x i64>* %a) nounwind {
366*9880d681SAndroid Build Coastguard Worker  ; CHECK: nor_v2i64_i:
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
369*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
370*9880d681SAndroid Build Coastguard Worker  %2 = or <2 x i64> %1, <i64 1, i64 1>
371*9880d681SAndroid Build Coastguard Worker  %3 = xor <2 x i64> %2, <i64 -1, i64 -1>
372*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.d [[R3:\$w[0-9]+]], 1
373*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nor.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
374*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
375*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
376*9880d681SAndroid Build Coastguard Worker
377*9880d681SAndroid Build Coastguard Worker  ret void
378*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size nor_v2i64_i
379*9880d681SAndroid Build Coastguard Worker}
380*9880d681SAndroid Build Coastguard Worker
381*9880d681SAndroid Build Coastguard Workerdefine void @xor_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
382*9880d681SAndroid Build Coastguard Worker  ; CHECK: xor_v16i8:
383*9880d681SAndroid Build Coastguard Worker
384*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
385*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
386*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
387*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
388*9880d681SAndroid Build Coastguard Worker  %3 = xor <16 x i8> %1, %2
389*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
390*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
391*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
392*9880d681SAndroid Build Coastguard Worker
393*9880d681SAndroid Build Coastguard Worker  ret void
394*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size xor_v16i8
395*9880d681SAndroid Build Coastguard Worker}
396*9880d681SAndroid Build Coastguard Worker
397*9880d681SAndroid Build Coastguard Workerdefine void @xor_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
398*9880d681SAndroid Build Coastguard Worker  ; CHECK: xor_v8i16:
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
401*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
402*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
403*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
404*9880d681SAndroid Build Coastguard Worker  %3 = xor <8 x i16> %1, %2
405*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
406*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
407*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
408*9880d681SAndroid Build Coastguard Worker
409*9880d681SAndroid Build Coastguard Worker  ret void
410*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size xor_v8i16
411*9880d681SAndroid Build Coastguard Worker}
412*9880d681SAndroid Build Coastguard Worker
413*9880d681SAndroid Build Coastguard Workerdefine void @xor_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
414*9880d681SAndroid Build Coastguard Worker  ; CHECK: xor_v4i32:
415*9880d681SAndroid Build Coastguard Worker
416*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
417*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
418*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
419*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
420*9880d681SAndroid Build Coastguard Worker  %3 = xor <4 x i32> %1, %2
421*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
422*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
423*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
424*9880d681SAndroid Build Coastguard Worker
425*9880d681SAndroid Build Coastguard Worker  ret void
426*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size xor_v4i32
427*9880d681SAndroid Build Coastguard Worker}
428*9880d681SAndroid Build Coastguard Worker
429*9880d681SAndroid Build Coastguard Workerdefine void @xor_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
430*9880d681SAndroid Build Coastguard Worker  ; CHECK: xor_v2i64:
431*9880d681SAndroid Build Coastguard Worker
432*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
433*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
434*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
435*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
436*9880d681SAndroid Build Coastguard Worker  %3 = xor <2 x i64> %1, %2
437*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R3:\$w[0-9]+]], [[R1]], [[R2]]
438*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
439*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
440*9880d681SAndroid Build Coastguard Worker
441*9880d681SAndroid Build Coastguard Worker  ret void
442*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size xor_v2i64
443*9880d681SAndroid Build Coastguard Worker}
444*9880d681SAndroid Build Coastguard Worker
445*9880d681SAndroid Build Coastguard Workerdefine void @xor_v16i8_i(<16 x i8>* %c, <16 x i8>* %a) nounwind {
446*9880d681SAndroid Build Coastguard Worker  ; CHECK: xor_v16i8_i:
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
449*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
450*9880d681SAndroid Build Coastguard Worker  %2 = xor <16 x i8> %1, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
451*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xori.b [[R4:\$w[0-9]+]], [[R1]], 3
452*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
453*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R4]], 0($4)
454*9880d681SAndroid Build Coastguard Worker
455*9880d681SAndroid Build Coastguard Worker  ret void
456*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size xor_v16i8_i
457*9880d681SAndroid Build Coastguard Worker}
458*9880d681SAndroid Build Coastguard Worker
459*9880d681SAndroid Build Coastguard Workerdefine void @xor_v8i16_i(<8 x i16>* %c, <8 x i16>* %a) nounwind {
460*9880d681SAndroid Build Coastguard Worker  ; CHECK: xor_v8i16_i:
461*9880d681SAndroid Build Coastguard Worker
462*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
463*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
464*9880d681SAndroid Build Coastguard Worker  %2 = xor <8 x i16> %1, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
465*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.h [[R3:\$w[0-9]+]], 3
466*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
467*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
468*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Worker  ret void
471*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size xor_v8i16_i
472*9880d681SAndroid Build Coastguard Worker}
473*9880d681SAndroid Build Coastguard Worker
474*9880d681SAndroid Build Coastguard Workerdefine void @xor_v4i32_i(<4 x i32>* %c, <4 x i32>* %a) nounwind {
475*9880d681SAndroid Build Coastguard Worker  ; CHECK: xor_v4i32_i:
476*9880d681SAndroid Build Coastguard Worker
477*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
478*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
479*9880d681SAndroid Build Coastguard Worker  %2 = xor <4 x i32> %1, <i32 3, i32 3, i32 3, i32 3>
480*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.w [[R3:\$w[0-9]+]], 3
481*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
482*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
483*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Worker  ret void
486*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size xor_v4i32_i
487*9880d681SAndroid Build Coastguard Worker}
488*9880d681SAndroid Build Coastguard Worker
489*9880d681SAndroid Build Coastguard Workerdefine void @xor_v2i64_i(<2 x i64>* %c, <2 x i64>* %a) nounwind {
490*9880d681SAndroid Build Coastguard Worker  ; CHECK: xor_v2i64_i:
491*9880d681SAndroid Build Coastguard Worker
492*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
493*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
494*9880d681SAndroid Build Coastguard Worker  %2 = xor <2 x i64> %1, <i64 3, i64 3>
495*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.d [[R3:\$w[0-9]+]], 3
496*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R4:\$w[0-9]+]], [[R1]], [[R3]]
497*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
498*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
499*9880d681SAndroid Build Coastguard Worker
500*9880d681SAndroid Build Coastguard Worker  ret void
501*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size xor_v2i64_i
502*9880d681SAndroid Build Coastguard Worker}
503*9880d681SAndroid Build Coastguard Worker
504*9880d681SAndroid Build Coastguard Workerdefine void @sll_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
505*9880d681SAndroid Build Coastguard Worker  ; CHECK: sll_v16i8:
506*9880d681SAndroid Build Coastguard Worker
507*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
508*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
509*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
510*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
511*9880d681SAndroid Build Coastguard Worker  %3 = shl <16 x i8> %1, %2
512*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: sll.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
513*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
514*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
515*9880d681SAndroid Build Coastguard Worker
516*9880d681SAndroid Build Coastguard Worker  ret void
517*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sll_v16i8
518*9880d681SAndroid Build Coastguard Worker}
519*9880d681SAndroid Build Coastguard Worker
520*9880d681SAndroid Build Coastguard Workerdefine void @sll_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
521*9880d681SAndroid Build Coastguard Worker  ; CHECK: sll_v8i16:
522*9880d681SAndroid Build Coastguard Worker
523*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
524*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
525*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
526*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
527*9880d681SAndroid Build Coastguard Worker  %3 = shl <8 x i16> %1, %2
528*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: sll.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
529*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
530*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
531*9880d681SAndroid Build Coastguard Worker
532*9880d681SAndroid Build Coastguard Worker  ret void
533*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sll_v8i16
534*9880d681SAndroid Build Coastguard Worker}
535*9880d681SAndroid Build Coastguard Worker
536*9880d681SAndroid Build Coastguard Workerdefine void @sll_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
537*9880d681SAndroid Build Coastguard Worker  ; CHECK: sll_v4i32:
538*9880d681SAndroid Build Coastguard Worker
539*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
540*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
541*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
542*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
543*9880d681SAndroid Build Coastguard Worker  %3 = shl <4 x i32> %1, %2
544*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: sll.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
545*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
546*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
547*9880d681SAndroid Build Coastguard Worker
548*9880d681SAndroid Build Coastguard Worker  ret void
549*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sll_v4i32
550*9880d681SAndroid Build Coastguard Worker}
551*9880d681SAndroid Build Coastguard Worker
552*9880d681SAndroid Build Coastguard Workerdefine void @sll_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
553*9880d681SAndroid Build Coastguard Worker  ; CHECK: sll_v2i64:
554*9880d681SAndroid Build Coastguard Worker
555*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
556*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
557*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
558*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
559*9880d681SAndroid Build Coastguard Worker  %3 = shl <2 x i64> %1, %2
560*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: sll.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
561*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
562*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
563*9880d681SAndroid Build Coastguard Worker
564*9880d681SAndroid Build Coastguard Worker  ret void
565*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sll_v2i64
566*9880d681SAndroid Build Coastguard Worker}
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Workerdefine void @sll_v16i8_i(<16 x i8>* %c, <16 x i8>* %a) nounwind {
569*9880d681SAndroid Build Coastguard Worker  ; CHECK: sll_v16i8_i:
570*9880d681SAndroid Build Coastguard Worker
571*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
572*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
573*9880d681SAndroid Build Coastguard Worker  %2 = shl <16 x 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, i8 1>
574*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: slli.b [[R4:\$w[0-9]+]], [[R1]], 1
575*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
576*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R4]], 0($4)
577*9880d681SAndroid Build Coastguard Worker
578*9880d681SAndroid Build Coastguard Worker  ret void
579*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sll_v16i8_i
580*9880d681SAndroid Build Coastguard Worker}
581*9880d681SAndroid Build Coastguard Worker
582*9880d681SAndroid Build Coastguard Workerdefine void @sll_v8i16_i(<8 x i16>* %c, <8 x i16>* %a) nounwind {
583*9880d681SAndroid Build Coastguard Worker  ; CHECK: sll_v8i16_i:
584*9880d681SAndroid Build Coastguard Worker
585*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
586*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
587*9880d681SAndroid Build Coastguard Worker  %2 = shl <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
588*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: slli.h [[R4:\$w[0-9]+]], [[R1]], 1
589*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
590*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
591*9880d681SAndroid Build Coastguard Worker
592*9880d681SAndroid Build Coastguard Worker  ret void
593*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sll_v8i16_i
594*9880d681SAndroid Build Coastguard Worker}
595*9880d681SAndroid Build Coastguard Worker
596*9880d681SAndroid Build Coastguard Workerdefine void @sll_v4i32_i(<4 x i32>* %c, <4 x i32>* %a) nounwind {
597*9880d681SAndroid Build Coastguard Worker  ; CHECK: sll_v4i32_i:
598*9880d681SAndroid Build Coastguard Worker
599*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
600*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
601*9880d681SAndroid Build Coastguard Worker  %2 = shl <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
602*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: slli.w [[R4:\$w[0-9]+]], [[R1]], 1
603*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
604*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
605*9880d681SAndroid Build Coastguard Worker
606*9880d681SAndroid Build Coastguard Worker  ret void
607*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sll_v4i32_i
608*9880d681SAndroid Build Coastguard Worker}
609*9880d681SAndroid Build Coastguard Worker
610*9880d681SAndroid Build Coastguard Workerdefine void @sll_v2i64_i(<2 x i64>* %c, <2 x i64>* %a) nounwind {
611*9880d681SAndroid Build Coastguard Worker  ; CHECK: sll_v2i64_i:
612*9880d681SAndroid Build Coastguard Worker
613*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
614*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
615*9880d681SAndroid Build Coastguard Worker  %2 = shl <2 x i64> %1, <i64 1, i64 1>
616*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: slli.d [[R4:\$w[0-9]+]], [[R1]], 1
617*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
618*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
619*9880d681SAndroid Build Coastguard Worker
620*9880d681SAndroid Build Coastguard Worker  ret void
621*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sll_v2i64_i
622*9880d681SAndroid Build Coastguard Worker}
623*9880d681SAndroid Build Coastguard Worker
624*9880d681SAndroid Build Coastguard Workerdefine void @sra_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
625*9880d681SAndroid Build Coastguard Worker  ; CHECK: sra_v16i8:
626*9880d681SAndroid Build Coastguard Worker
627*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
628*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
629*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
630*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
631*9880d681SAndroid Build Coastguard Worker  %3 = ashr <16 x i8> %1, %2
632*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: sra.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
633*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
634*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
635*9880d681SAndroid Build Coastguard Worker
636*9880d681SAndroid Build Coastguard Worker  ret void
637*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sra_v16i8
638*9880d681SAndroid Build Coastguard Worker}
639*9880d681SAndroid Build Coastguard Worker
640*9880d681SAndroid Build Coastguard Workerdefine void @sra_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
641*9880d681SAndroid Build Coastguard Worker  ; CHECK: sra_v8i16:
642*9880d681SAndroid Build Coastguard Worker
643*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
644*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
645*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
646*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
647*9880d681SAndroid Build Coastguard Worker  %3 = ashr <8 x i16> %1, %2
648*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: sra.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
649*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
650*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
651*9880d681SAndroid Build Coastguard Worker
652*9880d681SAndroid Build Coastguard Worker  ret void
653*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sra_v8i16
654*9880d681SAndroid Build Coastguard Worker}
655*9880d681SAndroid Build Coastguard Worker
656*9880d681SAndroid Build Coastguard Workerdefine void @sra_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
657*9880d681SAndroid Build Coastguard Worker  ; CHECK: sra_v4i32:
658*9880d681SAndroid Build Coastguard Worker
659*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
660*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
661*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
662*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
663*9880d681SAndroid Build Coastguard Worker  %3 = ashr <4 x i32> %1, %2
664*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: sra.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
665*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
666*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
667*9880d681SAndroid Build Coastguard Worker
668*9880d681SAndroid Build Coastguard Worker  ret void
669*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sra_v4i32
670*9880d681SAndroid Build Coastguard Worker}
671*9880d681SAndroid Build Coastguard Worker
672*9880d681SAndroid Build Coastguard Workerdefine void @sra_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
673*9880d681SAndroid Build Coastguard Worker  ; CHECK: sra_v2i64:
674*9880d681SAndroid Build Coastguard Worker
675*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
676*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
677*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
678*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
679*9880d681SAndroid Build Coastguard Worker  %3 = ashr <2 x i64> %1, %2
680*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: sra.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
681*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
682*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
683*9880d681SAndroid Build Coastguard Worker
684*9880d681SAndroid Build Coastguard Worker  ret void
685*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sra_v2i64
686*9880d681SAndroid Build Coastguard Worker}
687*9880d681SAndroid Build Coastguard Worker
688*9880d681SAndroid Build Coastguard Workerdefine void @sra_v16i8_i(<16 x i8>* %c, <16 x i8>* %a) nounwind {
689*9880d681SAndroid Build Coastguard Worker  ; CHECK: sra_v16i8_i:
690*9880d681SAndroid Build Coastguard Worker
691*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
692*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
693*9880d681SAndroid Build Coastguard Worker  %2 = ashr <16 x 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, i8 1>
694*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srai.b [[R4:\$w[0-9]+]], [[R1]], 1
695*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
696*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R4]], 0($4)
697*9880d681SAndroid Build Coastguard Worker
698*9880d681SAndroid Build Coastguard Worker  ret void
699*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sra_v16i8_i
700*9880d681SAndroid Build Coastguard Worker}
701*9880d681SAndroid Build Coastguard Worker
702*9880d681SAndroid Build Coastguard Workerdefine void @sra_v8i16_i(<8 x i16>* %c, <8 x i16>* %a) nounwind {
703*9880d681SAndroid Build Coastguard Worker  ; CHECK: sra_v8i16_i:
704*9880d681SAndroid Build Coastguard Worker
705*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
706*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
707*9880d681SAndroid Build Coastguard Worker  %2 = ashr <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
708*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srai.h [[R4:\$w[0-9]+]], [[R1]], 1
709*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
710*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
711*9880d681SAndroid Build Coastguard Worker
712*9880d681SAndroid Build Coastguard Worker  ret void
713*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sra_v8i16_i
714*9880d681SAndroid Build Coastguard Worker}
715*9880d681SAndroid Build Coastguard Worker
716*9880d681SAndroid Build Coastguard Workerdefine void @sra_v4i32_i(<4 x i32>* %c, <4 x i32>* %a) nounwind {
717*9880d681SAndroid Build Coastguard Worker  ; CHECK: sra_v4i32_i:
718*9880d681SAndroid Build Coastguard Worker
719*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
720*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
721*9880d681SAndroid Build Coastguard Worker  %2 = ashr <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
722*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srai.w [[R4:\$w[0-9]+]], [[R1]], 1
723*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
724*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
725*9880d681SAndroid Build Coastguard Worker
726*9880d681SAndroid Build Coastguard Worker  ret void
727*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sra_v4i32_i
728*9880d681SAndroid Build Coastguard Worker}
729*9880d681SAndroid Build Coastguard Worker
730*9880d681SAndroid Build Coastguard Workerdefine void @sra_v2i64_i(<2 x i64>* %c, <2 x i64>* %a) nounwind {
731*9880d681SAndroid Build Coastguard Worker  ; CHECK: sra_v2i64_i:
732*9880d681SAndroid Build Coastguard Worker
733*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
734*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
735*9880d681SAndroid Build Coastguard Worker  %2 = ashr <2 x i64> %1, <i64 1, i64 1>
736*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srai.d [[R4:\$w[0-9]+]], [[R1]], 1
737*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
738*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
739*9880d681SAndroid Build Coastguard Worker
740*9880d681SAndroid Build Coastguard Worker  ret void
741*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size sra_v2i64_i
742*9880d681SAndroid Build Coastguard Worker}
743*9880d681SAndroid Build Coastguard Worker
744*9880d681SAndroid Build Coastguard Workerdefine void @srl_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
745*9880d681SAndroid Build Coastguard Worker  ; CHECK: srl_v16i8:
746*9880d681SAndroid Build Coastguard Worker
747*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
748*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
749*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
750*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
751*9880d681SAndroid Build Coastguard Worker  %3 = lshr <16 x i8> %1, %2
752*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srl.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
753*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
754*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
755*9880d681SAndroid Build Coastguard Worker
756*9880d681SAndroid Build Coastguard Worker  ret void
757*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size srl_v16i8
758*9880d681SAndroid Build Coastguard Worker}
759*9880d681SAndroid Build Coastguard Worker
760*9880d681SAndroid Build Coastguard Workerdefine void @srl_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
761*9880d681SAndroid Build Coastguard Worker  ; CHECK: srl_v8i16:
762*9880d681SAndroid Build Coastguard Worker
763*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
764*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
765*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
766*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
767*9880d681SAndroid Build Coastguard Worker  %3 = lshr <8 x i16> %1, %2
768*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srl.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
769*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
770*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
771*9880d681SAndroid Build Coastguard Worker
772*9880d681SAndroid Build Coastguard Worker  ret void
773*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size srl_v8i16
774*9880d681SAndroid Build Coastguard Worker}
775*9880d681SAndroid Build Coastguard Worker
776*9880d681SAndroid Build Coastguard Workerdefine void @srl_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
777*9880d681SAndroid Build Coastguard Worker  ; CHECK: srl_v4i32:
778*9880d681SAndroid Build Coastguard Worker
779*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
780*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
781*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
782*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
783*9880d681SAndroid Build Coastguard Worker  %3 = lshr <4 x i32> %1, %2
784*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srl.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
785*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
786*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
787*9880d681SAndroid Build Coastguard Worker
788*9880d681SAndroid Build Coastguard Worker  ret void
789*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size srl_v4i32
790*9880d681SAndroid Build Coastguard Worker}
791*9880d681SAndroid Build Coastguard Worker
792*9880d681SAndroid Build Coastguard Workerdefine void @srl_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
793*9880d681SAndroid Build Coastguard Worker  ; CHECK: srl_v2i64:
794*9880d681SAndroid Build Coastguard Worker
795*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
796*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
797*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
798*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
799*9880d681SAndroid Build Coastguard Worker  %3 = lshr <2 x i64> %1, %2
800*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srl.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
801*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
802*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
803*9880d681SAndroid Build Coastguard Worker
804*9880d681SAndroid Build Coastguard Worker  ret void
805*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size srl_v2i64
806*9880d681SAndroid Build Coastguard Worker}
807*9880d681SAndroid Build Coastguard Worker
808*9880d681SAndroid Build Coastguard Workerdefine void @srl_v16i8_i(<16 x i8>* %c, <16 x i8>* %a) nounwind {
809*9880d681SAndroid Build Coastguard Worker  ; CHECK: srl_v16i8_i:
810*9880d681SAndroid Build Coastguard Worker
811*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
812*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
813*9880d681SAndroid Build Coastguard Worker  %2 = lshr <16 x 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, i8 1>
814*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srli.b [[R4:\$w[0-9]+]], [[R1]], 1
815*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
816*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R4]], 0($4)
817*9880d681SAndroid Build Coastguard Worker
818*9880d681SAndroid Build Coastguard Worker  ret void
819*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size srl_v16i8_i
820*9880d681SAndroid Build Coastguard Worker}
821*9880d681SAndroid Build Coastguard Worker
822*9880d681SAndroid Build Coastguard Workerdefine void @srl_v8i16_i(<8 x i16>* %c, <8 x i16>* %a) nounwind {
823*9880d681SAndroid Build Coastguard Worker  ; CHECK: srl_v8i16_i:
824*9880d681SAndroid Build Coastguard Worker
825*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
826*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
827*9880d681SAndroid Build Coastguard Worker  %2 = lshr <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
828*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srli.h [[R4:\$w[0-9]+]], [[R1]], 1
829*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
830*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
831*9880d681SAndroid Build Coastguard Worker
832*9880d681SAndroid Build Coastguard Worker  ret void
833*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size srl_v8i16_i
834*9880d681SAndroid Build Coastguard Worker}
835*9880d681SAndroid Build Coastguard Worker
836*9880d681SAndroid Build Coastguard Workerdefine void @srl_v4i32_i(<4 x i32>* %c, <4 x i32>* %a) nounwind {
837*9880d681SAndroid Build Coastguard Worker  ; CHECK: srl_v4i32_i:
838*9880d681SAndroid Build Coastguard Worker
839*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
840*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
841*9880d681SAndroid Build Coastguard Worker  %2 = lshr <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
842*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srli.w [[R4:\$w[0-9]+]], [[R1]], 1
843*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
844*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
845*9880d681SAndroid Build Coastguard Worker
846*9880d681SAndroid Build Coastguard Worker  ret void
847*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size srl_v4i32_i
848*9880d681SAndroid Build Coastguard Worker}
849*9880d681SAndroid Build Coastguard Worker
850*9880d681SAndroid Build Coastguard Workerdefine void @srl_v2i64_i(<2 x i64>* %c, <2 x i64>* %a) nounwind {
851*9880d681SAndroid Build Coastguard Worker  ; CHECK: srl_v2i64_i:
852*9880d681SAndroid Build Coastguard Worker
853*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
854*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
855*9880d681SAndroid Build Coastguard Worker  %2 = lshr <2 x i64> %1, <i64 1, i64 1>
856*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: srli.d [[R4:\$w[0-9]+]], [[R1]], 1
857*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
858*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
859*9880d681SAndroid Build Coastguard Worker
860*9880d681SAndroid Build Coastguard Worker  ret void
861*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size srl_v2i64_i
862*9880d681SAndroid Build Coastguard Worker}
863*9880d681SAndroid Build Coastguard Worker
864*9880d681SAndroid Build Coastguard Workerdefine void @ctpop_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
865*9880d681SAndroid Build Coastguard Worker  ; CHECK: ctpop_v16i8:
866*9880d681SAndroid Build Coastguard Worker
867*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
868*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
869*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.ctpop.v16i8 (<16 x i8> %1)
870*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: pcnt.b [[R3:\$w[0-9]+]], [[R1]]
871*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
872*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
873*9880d681SAndroid Build Coastguard Worker
874*9880d681SAndroid Build Coastguard Worker  ret void
875*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ctpop_v16i8
876*9880d681SAndroid Build Coastguard Worker}
877*9880d681SAndroid Build Coastguard Worker
878*9880d681SAndroid Build Coastguard Workerdefine void @ctpop_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
879*9880d681SAndroid Build Coastguard Worker  ; CHECK: ctpop_v8i16:
880*9880d681SAndroid Build Coastguard Worker
881*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
882*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
883*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.ctpop.v8i16 (<8 x i16> %1)
884*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: pcnt.h [[R3:\$w[0-9]+]], [[R1]]
885*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
886*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
887*9880d681SAndroid Build Coastguard Worker
888*9880d681SAndroid Build Coastguard Worker  ret void
889*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ctpop_v8i16
890*9880d681SAndroid Build Coastguard Worker}
891*9880d681SAndroid Build Coastguard Worker
892*9880d681SAndroid Build Coastguard Workerdefine void @ctpop_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
893*9880d681SAndroid Build Coastguard Worker  ; CHECK: ctpop_v4i32:
894*9880d681SAndroid Build Coastguard Worker
895*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
896*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
897*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.ctpop.v4i32 (<4 x i32> %1)
898*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: pcnt.w [[R3:\$w[0-9]+]], [[R1]]
899*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
900*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
901*9880d681SAndroid Build Coastguard Worker
902*9880d681SAndroid Build Coastguard Worker  ret void
903*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ctpop_v4i32
904*9880d681SAndroid Build Coastguard Worker}
905*9880d681SAndroid Build Coastguard Worker
906*9880d681SAndroid Build Coastguard Workerdefine void @ctpop_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
907*9880d681SAndroid Build Coastguard Worker  ; CHECK: ctpop_v2i64:
908*9880d681SAndroid Build Coastguard Worker
909*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
910*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
911*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.ctpop.v2i64 (<2 x i64> %1)
912*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: pcnt.d [[R3:\$w[0-9]+]], [[R1]]
913*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
914*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
915*9880d681SAndroid Build Coastguard Worker
916*9880d681SAndroid Build Coastguard Worker  ret void
917*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ctpop_v2i64
918*9880d681SAndroid Build Coastguard Worker}
919*9880d681SAndroid Build Coastguard Worker
920*9880d681SAndroid Build Coastguard Workerdefine void @ctlz_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
921*9880d681SAndroid Build Coastguard Worker  ; CHECK: ctlz_v16i8:
922*9880d681SAndroid Build Coastguard Worker
923*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
924*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
925*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.ctlz.v16i8 (<16 x i8> %1)
926*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nlzc.b [[R3:\$w[0-9]+]], [[R1]]
927*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
928*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
929*9880d681SAndroid Build Coastguard Worker
930*9880d681SAndroid Build Coastguard Worker  ret void
931*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ctlz_v16i8
932*9880d681SAndroid Build Coastguard Worker}
933*9880d681SAndroid Build Coastguard Worker
934*9880d681SAndroid Build Coastguard Workerdefine void @ctlz_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
935*9880d681SAndroid Build Coastguard Worker  ; CHECK: ctlz_v8i16:
936*9880d681SAndroid Build Coastguard Worker
937*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
938*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
939*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.ctlz.v8i16 (<8 x i16> %1)
940*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nlzc.h [[R3:\$w[0-9]+]], [[R1]]
941*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
942*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
943*9880d681SAndroid Build Coastguard Worker
944*9880d681SAndroid Build Coastguard Worker  ret void
945*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ctlz_v8i16
946*9880d681SAndroid Build Coastguard Worker}
947*9880d681SAndroid Build Coastguard Worker
948*9880d681SAndroid Build Coastguard Workerdefine void @ctlz_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
949*9880d681SAndroid Build Coastguard Worker  ; CHECK: ctlz_v4i32:
950*9880d681SAndroid Build Coastguard Worker
951*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
952*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
953*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.ctlz.v4i32 (<4 x i32> %1)
954*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nlzc.w [[R3:\$w[0-9]+]], [[R1]]
955*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
956*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
957*9880d681SAndroid Build Coastguard Worker
958*9880d681SAndroid Build Coastguard Worker  ret void
959*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ctlz_v4i32
960*9880d681SAndroid Build Coastguard Worker}
961*9880d681SAndroid Build Coastguard Worker
962*9880d681SAndroid Build Coastguard Workerdefine void @ctlz_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
963*9880d681SAndroid Build Coastguard Worker  ; CHECK: ctlz_v2i64:
964*9880d681SAndroid Build Coastguard Worker
965*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
966*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
967*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.ctlz.v2i64 (<2 x i64> %1)
968*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: nlzc.d [[R3:\$w[0-9]+]], [[R1]]
969*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
970*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
971*9880d681SAndroid Build Coastguard Worker
972*9880d681SAndroid Build Coastguard Worker  ret void
973*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ctlz_v2i64
974*9880d681SAndroid Build Coastguard Worker}
975*9880d681SAndroid Build Coastguard Worker
976*9880d681SAndroid Build Coastguard Workerdefine void @bsel_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %m) nounwind {
977*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_v16i8:
978*9880d681SAndroid Build Coastguard Worker
979*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
980*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
981*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
982*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
983*9880d681SAndroid Build Coastguard Worker  %3 = load <16 x i8>, <16 x i8>* %m
984*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R3:\$w[0-9]+]], 0($7)
985*9880d681SAndroid Build Coastguard Worker  %4 = xor <16 x i8> %3, <i8 -1, i8 -1, i8 -1, i8 -1,
986*9880d681SAndroid Build Coastguard Worker                          i8 -1, i8 -1, i8 -1, i8 -1,
987*9880d681SAndroid Build Coastguard Worker                          i8 -1, i8 -1, i8 -1, i8 -1,
988*9880d681SAndroid Build Coastguard Worker                          i8 -1, i8 -1, i8 -1, i8 -1>
989*9880d681SAndroid Build Coastguard Worker  %5 = and <16 x i8> %1, %3
990*9880d681SAndroid Build Coastguard Worker  %6 = and <16 x i8> %2, %4
991*9880d681SAndroid Build Coastguard Worker  %7 = or <16 x i8> %5, %6
992*9880d681SAndroid Build Coastguard Worker  ; bmnz is the same operation
993*9880d681SAndroid Build Coastguard Worker  ; (vselect Mask, IfSet, IfClr) -> (BMNZ IfClr, IfSet, Mask)
994*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bmnz.v [[R2]], [[R1]], [[R3]]
995*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %7, <16 x i8>* %c
996*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R2]], 0($4)
997*9880d681SAndroid Build Coastguard Worker
998*9880d681SAndroid Build Coastguard Worker  ret void
999*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_v16i8
1000*9880d681SAndroid Build Coastguard Worker}
1001*9880d681SAndroid Build Coastguard Worker
1002*9880d681SAndroid Build Coastguard Workerdefine void @bsel_v16i8_i(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %m) nounwind {
1003*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_v16i8_i:
1004*9880d681SAndroid Build Coastguard Worker
1005*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1006*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1007*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %m
1008*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R3:\$w[0-9]+]], 0($6)
1009*9880d681SAndroid Build Coastguard Worker  %3 = xor <16 x i8> %2, <i8 -1, i8 -1, i8 -1, i8 -1,
1010*9880d681SAndroid Build Coastguard Worker                          i8 -1, i8 -1, i8 -1, i8 -1,
1011*9880d681SAndroid Build Coastguard Worker                          i8 -1, i8 -1, i8 -1, i8 -1,
1012*9880d681SAndroid Build Coastguard Worker                          i8 -1, i8 -1, i8 -1, i8 -1>
1013*9880d681SAndroid Build Coastguard Worker  %4 = and <16 x i8> %1, %3
1014*9880d681SAndroid Build Coastguard Worker  %5 = and <16 x i8> <i8 6, i8 6, i8 6, i8 6,
1015*9880d681SAndroid Build Coastguard Worker                      i8 6, i8 6, i8 6, i8 6,
1016*9880d681SAndroid Build Coastguard Worker                      i8 6, i8 6, i8 6, i8 6,
1017*9880d681SAndroid Build Coastguard Worker                      i8 6, i8 6, i8 6, i8 6>, %2
1018*9880d681SAndroid Build Coastguard Worker  %6 = or <16 x i8> %4, %5
1019*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bseli.b [[R3]], [[R1]], 6
1020*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %6, <16 x i8>* %c
1021*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1022*9880d681SAndroid Build Coastguard Worker
1023*9880d681SAndroid Build Coastguard Worker  ret void
1024*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_v16i8_i
1025*9880d681SAndroid Build Coastguard Worker}
1026*9880d681SAndroid Build Coastguard Worker
1027*9880d681SAndroid Build Coastguard Workerdefine void @bsel_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1028*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_v8i16:
1029*9880d681SAndroid Build Coastguard Worker
1030*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1031*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1032*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1033*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1034*9880d681SAndroid Build Coastguard Worker  %3 = and <8 x i16> %1, <i16 6, i16 6, i16 6, i16 6,
1035*9880d681SAndroid Build Coastguard Worker                          i16 6, i16 6, i16 6, i16 6>
1036*9880d681SAndroid Build Coastguard Worker  %4 = and <8 x i16> %2, <i16 65529, i16 65529, i16 65529, i16 65529,
1037*9880d681SAndroid Build Coastguard Worker                          i16 65529, i16 65529, i16 65529, i16 65529>
1038*9880d681SAndroid Build Coastguard Worker  %5 = or <8 x i16> %3, %4
1039*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.h [[R3:\$w[0-9]+]], 6
1040*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R3]], [[R2]], [[R1]]
1041*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %5, <8 x i16>* %c
1042*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1043*9880d681SAndroid Build Coastguard Worker
1044*9880d681SAndroid Build Coastguard Worker  ret void
1045*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_v8i16
1046*9880d681SAndroid Build Coastguard Worker}
1047*9880d681SAndroid Build Coastguard Worker
1048*9880d681SAndroid Build Coastguard Workerdefine void @bsel_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1049*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_v4i32:
1050*9880d681SAndroid Build Coastguard Worker
1051*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1052*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1053*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1054*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1055*9880d681SAndroid Build Coastguard Worker  %3 = and <4 x i32> %1, <i32 6, i32 6, i32 6, i32 6>
1056*9880d681SAndroid Build Coastguard Worker  %4 = and <4 x i32> %2, <i32 4294967289, i32 4294967289, i32 4294967289, i32 4294967289>
1057*9880d681SAndroid Build Coastguard Worker  %5 = or <4 x i32> %3, %4
1058*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.w [[R3:\$w[0-9]+]], 6
1059*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R3]], [[R2]], [[R1]]
1060*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %5, <4 x i32>* %c
1061*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1062*9880d681SAndroid Build Coastguard Worker
1063*9880d681SAndroid Build Coastguard Worker  ret void
1064*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_v4i32
1065*9880d681SAndroid Build Coastguard Worker}
1066*9880d681SAndroid Build Coastguard Worker
1067*9880d681SAndroid Build Coastguard Workerdefine void @bsel_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1068*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_v2i64:
1069*9880d681SAndroid Build Coastguard Worker
1070*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1071*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1072*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1073*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1074*9880d681SAndroid Build Coastguard Worker  %3 = and <2 x i64> %1, <i64 6, i64 6>
1075*9880d681SAndroid Build Coastguard Worker  %4 = and <2 x i64> %2, <i64 18446744073709551609, i64 18446744073709551609>
1076*9880d681SAndroid Build Coastguard Worker  %5 = or <2 x i64> %3, %4
1077*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.d [[R3:\$w[0-9]+]], 6
1078*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R3]], [[R2]], [[R1]]
1079*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %5, <2 x i64>* %c
1080*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1081*9880d681SAndroid Build Coastguard Worker
1082*9880d681SAndroid Build Coastguard Worker  ret void
1083*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_v2i64
1084*9880d681SAndroid Build Coastguard Worker}
1085*9880d681SAndroid Build Coastguard Worker
1086*9880d681SAndroid Build Coastguard Workerdefine void @binsl_v16i8_i(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1087*9880d681SAndroid Build Coastguard Worker  ; CHECK: binsl_v16i8_i:
1088*9880d681SAndroid Build Coastguard Worker
1089*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1090*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1091*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1092*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1093*9880d681SAndroid Build Coastguard Worker  %3 = and <16 x i8> %1, <i8 192, i8 192, i8 192, i8 192,
1094*9880d681SAndroid Build Coastguard Worker                          i8 192, i8 192, i8 192, i8 192,
1095*9880d681SAndroid Build Coastguard Worker                          i8 192, i8 192, i8 192, i8 192,
1096*9880d681SAndroid Build Coastguard Worker                          i8 192, i8 192, i8 192, i8 192>
1097*9880d681SAndroid Build Coastguard Worker  %4 = and <16 x i8> %2, <i8 63, i8 63, i8 63, i8 63,
1098*9880d681SAndroid Build Coastguard Worker                          i8 63, i8 63, i8 63, i8 63,
1099*9880d681SAndroid Build Coastguard Worker                          i8 63, i8 63, i8 63, i8 63,
1100*9880d681SAndroid Build Coastguard Worker                          i8 63, i8 63, i8 63, i8 63>
1101*9880d681SAndroid Build Coastguard Worker  %5 = or <16 x i8> %3, %4
1102*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: binsli.b [[R2]], [[R1]], 2
1103*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %5, <16 x i8>* %c
1104*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R2]], 0($4)
1105*9880d681SAndroid Build Coastguard Worker
1106*9880d681SAndroid Build Coastguard Worker  ret void
1107*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size binsl_v16i8_i
1108*9880d681SAndroid Build Coastguard Worker}
1109*9880d681SAndroid Build Coastguard Worker
1110*9880d681SAndroid Build Coastguard Workerdefine void @binsl_v8i16_i(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1111*9880d681SAndroid Build Coastguard Worker  ; CHECK: binsl_v8i16_i:
1112*9880d681SAndroid Build Coastguard Worker
1113*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1114*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1115*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1116*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1117*9880d681SAndroid Build Coastguard Worker  %3 = and <8 x i16> %1, <i16 49152, i16 49152, i16 49152, i16 49152,
1118*9880d681SAndroid Build Coastguard Worker                          i16 49152, i16 49152, i16 49152, i16 49152>
1119*9880d681SAndroid Build Coastguard Worker  %4 = and <8 x i16> %2, <i16 16383, i16 16383, i16 16383, i16 16383,
1120*9880d681SAndroid Build Coastguard Worker                          i16 16383, i16 16383, i16 16383, i16 16383>
1121*9880d681SAndroid Build Coastguard Worker  %5 = or <8 x i16> %3, %4
1122*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: binsli.h [[R2]], [[R1]], 2
1123*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %5, <8 x i16>* %c
1124*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R2]], 0($4)
1125*9880d681SAndroid Build Coastguard Worker
1126*9880d681SAndroid Build Coastguard Worker  ret void
1127*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size binsl_v8i16_i
1128*9880d681SAndroid Build Coastguard Worker}
1129*9880d681SAndroid Build Coastguard Worker
1130*9880d681SAndroid Build Coastguard Workerdefine void @binsl_v4i32_i(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1131*9880d681SAndroid Build Coastguard Worker  ; CHECK: binsl_v4i32_i:
1132*9880d681SAndroid Build Coastguard Worker
1133*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1134*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1135*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1136*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1137*9880d681SAndroid Build Coastguard Worker  %3 = and <4 x i32> %1, <i32 3221225472, i32 3221225472, i32 3221225472, i32 3221225472>
1138*9880d681SAndroid Build Coastguard Worker  %4 = and <4 x i32> %2, <i32 1073741823, i32 1073741823, i32 1073741823, i32 1073741823>
1139*9880d681SAndroid Build Coastguard Worker  %5 = or <4 x i32> %3, %4
1140*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: binsli.w [[R2]], [[R1]], 2
1141*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %5, <4 x i32>* %c
1142*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R2]], 0($4)
1143*9880d681SAndroid Build Coastguard Worker
1144*9880d681SAndroid Build Coastguard Worker  ret void
1145*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size binsl_v4i32_i
1146*9880d681SAndroid Build Coastguard Worker}
1147*9880d681SAndroid Build Coastguard Worker
1148*9880d681SAndroid Build Coastguard Workerdefine void @binsl_v2i64_i(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1149*9880d681SAndroid Build Coastguard Worker  ; CHECK: binsl_v2i64_i:
1150*9880d681SAndroid Build Coastguard Worker
1151*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1152*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1153*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1154*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1155*9880d681SAndroid Build Coastguard Worker  %3 = and <2 x i64> %1, <i64 18446744073709551608, i64 18446744073709551608>
1156*9880d681SAndroid Build Coastguard Worker  %4 = and <2 x i64> %2, <i64 7, i64 7>
1157*9880d681SAndroid Build Coastguard Worker  %5 = or <2 x i64> %3, %4
1158*9880d681SAndroid Build Coastguard Worker  ; TODO: We use a particularly wide mask here to work around a legalization
1159*9880d681SAndroid Build Coastguard Worker  ;       issue. If the mask doesn't fit within a 10-bit immediate, it gets
1160*9880d681SAndroid Build Coastguard Worker  ;       legalized into a constant pool. We should add a test to cover the
1161*9880d681SAndroid Build Coastguard Worker  ;       other cases once they correctly select binsli.d.
1162*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: binsli.d [[R2]], [[R1]], 61
1163*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %5, <2 x i64>* %c
1164*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R2]], 0($4)
1165*9880d681SAndroid Build Coastguard Worker
1166*9880d681SAndroid Build Coastguard Worker  ret void
1167*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size binsl_v2i64_i
1168*9880d681SAndroid Build Coastguard Worker}
1169*9880d681SAndroid Build Coastguard Worker
1170*9880d681SAndroid Build Coastguard Workerdefine void @binsr_v16i8_i(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1171*9880d681SAndroid Build Coastguard Worker  ; CHECK: binsr_v16i8_i:
1172*9880d681SAndroid Build Coastguard Worker
1173*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1174*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1175*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1176*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1177*9880d681SAndroid Build Coastguard Worker  %3 = and <16 x i8> %1, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3,
1178*9880d681SAndroid Build Coastguard Worker                          i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
1179*9880d681SAndroid Build Coastguard Worker  %4 = and <16 x i8> %2, <i8 252, i8 252, i8 252, i8 252,
1180*9880d681SAndroid Build Coastguard Worker                          i8 252, i8 252, i8 252, i8 252,
1181*9880d681SAndroid Build Coastguard Worker                          i8 252, i8 252, i8 252, i8 252,
1182*9880d681SAndroid Build Coastguard Worker                          i8 252, i8 252, i8 252, i8 252>
1183*9880d681SAndroid Build Coastguard Worker  %5 = or <16 x i8> %3, %4
1184*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: binsri.b [[R2]], [[R1]], 2
1185*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %5, <16 x i8>* %c
1186*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R2]], 0($4)
1187*9880d681SAndroid Build Coastguard Worker
1188*9880d681SAndroid Build Coastguard Worker  ret void
1189*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size binsr_v16i8_i
1190*9880d681SAndroid Build Coastguard Worker}
1191*9880d681SAndroid Build Coastguard Worker
1192*9880d681SAndroid Build Coastguard Workerdefine void @binsr_v8i16_i(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1193*9880d681SAndroid Build Coastguard Worker  ; CHECK: binsr_v8i16_i:
1194*9880d681SAndroid Build Coastguard Worker
1195*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1196*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1197*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1198*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1199*9880d681SAndroid Build Coastguard Worker  %3 = and <8 x i16> %1, <i16 3, i16 3, i16 3, i16 3,
1200*9880d681SAndroid Build Coastguard Worker                          i16 3, i16 3, i16 3, i16 3>
1201*9880d681SAndroid Build Coastguard Worker  %4 = and <8 x i16> %2, <i16 65532, i16 65532, i16 65532, i16 65532,
1202*9880d681SAndroid Build Coastguard Worker                          i16 65532, i16 65532, i16 65532, i16 65532>
1203*9880d681SAndroid Build Coastguard Worker  %5 = or <8 x i16> %3, %4
1204*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: binsri.h [[R2]], [[R1]], 2
1205*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %5, <8 x i16>* %c
1206*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R2]], 0($4)
1207*9880d681SAndroid Build Coastguard Worker
1208*9880d681SAndroid Build Coastguard Worker  ret void
1209*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size binsr_v8i16_i
1210*9880d681SAndroid Build Coastguard Worker}
1211*9880d681SAndroid Build Coastguard Worker
1212*9880d681SAndroid Build Coastguard Workerdefine void @binsr_v4i32_i(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1213*9880d681SAndroid Build Coastguard Worker  ; CHECK: binsr_v4i32_i:
1214*9880d681SAndroid Build Coastguard Worker
1215*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1216*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1217*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1218*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1219*9880d681SAndroid Build Coastguard Worker  %3 = and <4 x i32> %1, <i32 3, i32 3, i32 3, i32 3>
1220*9880d681SAndroid Build Coastguard Worker  %4 = and <4 x i32> %2, <i32 4294967292, i32 4294967292, i32 4294967292, i32 4294967292>
1221*9880d681SAndroid Build Coastguard Worker  %5 = or <4 x i32> %3, %4
1222*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: binsri.w [[R2]], [[R1]], 2
1223*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %5, <4 x i32>* %c
1224*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R2]], 0($4)
1225*9880d681SAndroid Build Coastguard Worker
1226*9880d681SAndroid Build Coastguard Worker  ret void
1227*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size binsr_v4i32_i
1228*9880d681SAndroid Build Coastguard Worker}
1229*9880d681SAndroid Build Coastguard Worker
1230*9880d681SAndroid Build Coastguard Workerdefine void @binsr_v2i64_i(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1231*9880d681SAndroid Build Coastguard Worker  ; CHECK: binsr_v2i64_i:
1232*9880d681SAndroid Build Coastguard Worker
1233*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1234*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1235*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1236*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1237*9880d681SAndroid Build Coastguard Worker  %3 = and <2 x i64> %1, <i64 3, i64 3>
1238*9880d681SAndroid Build Coastguard Worker  %4 = and <2 x i64> %2, <i64 18446744073709551612, i64 18446744073709551612>
1239*9880d681SAndroid Build Coastguard Worker  %5 = or <2 x i64> %3, %4
1240*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: binsri.d [[R2]], [[R1]], 2
1241*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %5, <2 x i64>* %c
1242*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R2]], 0($4)
1243*9880d681SAndroid Build Coastguard Worker
1244*9880d681SAndroid Build Coastguard Worker  ret void
1245*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size binsr_v2i64_i
1246*9880d681SAndroid Build Coastguard Worker}
1247*9880d681SAndroid Build Coastguard Worker
1248*9880d681SAndroid Build Coastguard Workerdefine void @bclr_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1249*9880d681SAndroid Build Coastguard Worker  ; CHECK: bclr_v16i8:
1250*9880d681SAndroid Build Coastguard Worker
1251*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1252*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1253*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1254*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1255*9880d681SAndroid Build Coastguard Worker  %3 = shl <16 x i8> <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>, %2
1256*9880d681SAndroid Build Coastguard Worker  %4 = xor <16 x i8> %3, <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>
1257*9880d681SAndroid Build Coastguard Worker  %5 = and <16 x i8> %1, %4
1258*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bclr.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1259*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %5, <16 x i8>* %c
1260*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1261*9880d681SAndroid Build Coastguard Worker
1262*9880d681SAndroid Build Coastguard Worker  ret void
1263*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bclr_v16i8
1264*9880d681SAndroid Build Coastguard Worker}
1265*9880d681SAndroid Build Coastguard Worker
1266*9880d681SAndroid Build Coastguard Workerdefine void @bclr_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1267*9880d681SAndroid Build Coastguard Worker  ; CHECK: bclr_v8i16:
1268*9880d681SAndroid Build Coastguard Worker
1269*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1270*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1271*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1272*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1273*9880d681SAndroid Build Coastguard Worker  %3 = shl <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>, %2
1274*9880d681SAndroid Build Coastguard Worker  %4 = xor <8 x i16> %3, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1275*9880d681SAndroid Build Coastguard Worker  %5 = and <8 x i16> %1, %4
1276*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bclr.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1277*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %5, <8 x i16>* %c
1278*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1279*9880d681SAndroid Build Coastguard Worker
1280*9880d681SAndroid Build Coastguard Worker  ret void
1281*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bclr_v8i16
1282*9880d681SAndroid Build Coastguard Worker}
1283*9880d681SAndroid Build Coastguard Worker
1284*9880d681SAndroid Build Coastguard Workerdefine void @bclr_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1285*9880d681SAndroid Build Coastguard Worker  ; CHECK: bclr_v4i32:
1286*9880d681SAndroid Build Coastguard Worker
1287*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1288*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1289*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1290*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1291*9880d681SAndroid Build Coastguard Worker  %3 = shl <4 x i32> <i32 1, i32 1, i32 1, i32 1>, %2
1292*9880d681SAndroid Build Coastguard Worker  %4 = xor <4 x i32> %3, <i32 -1, i32 -1, i32 -1, i32 -1>
1293*9880d681SAndroid Build Coastguard Worker  %5 = and <4 x i32> %1, %4
1294*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bclr.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1295*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %5, <4 x i32>* %c
1296*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1297*9880d681SAndroid Build Coastguard Worker
1298*9880d681SAndroid Build Coastguard Worker  ret void
1299*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bclr_v4i32
1300*9880d681SAndroid Build Coastguard Worker}
1301*9880d681SAndroid Build Coastguard Worker
1302*9880d681SAndroid Build Coastguard Workerdefine void @bclr_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1303*9880d681SAndroid Build Coastguard Worker  ; CHECK: bclr_v2i64:
1304*9880d681SAndroid Build Coastguard Worker
1305*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1306*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1307*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1308*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1309*9880d681SAndroid Build Coastguard Worker  %3 = shl <2 x i64> <i64 1, i64 1>, %2
1310*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %3, <i64 -1, i64 -1>
1311*9880d681SAndroid Build Coastguard Worker  %5 = and <2 x i64> %1, %4
1312*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bclr.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1313*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %5, <2 x i64>* %c
1314*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1315*9880d681SAndroid Build Coastguard Worker
1316*9880d681SAndroid Build Coastguard Worker  ret void
1317*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bclr_v2i64
1318*9880d681SAndroid Build Coastguard Worker}
1319*9880d681SAndroid Build Coastguard Worker
1320*9880d681SAndroid Build Coastguard Workerdefine void @bset_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1321*9880d681SAndroid Build Coastguard Worker  ; CHECK: bset_v16i8:
1322*9880d681SAndroid Build Coastguard Worker
1323*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1324*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1325*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1326*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1327*9880d681SAndroid Build Coastguard Worker  %3 = shl <16 x i8> <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>, %2
1328*9880d681SAndroid Build Coastguard Worker  %4 = or <16 x i8> %1, %3
1329*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bset.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1330*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1331*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1332*9880d681SAndroid Build Coastguard Worker
1333*9880d681SAndroid Build Coastguard Worker  ret void
1334*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bset_v16i8
1335*9880d681SAndroid Build Coastguard Worker}
1336*9880d681SAndroid Build Coastguard Worker
1337*9880d681SAndroid Build Coastguard Workerdefine void @bset_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1338*9880d681SAndroid Build Coastguard Worker  ; CHECK: bset_v8i16:
1339*9880d681SAndroid Build Coastguard Worker
1340*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1341*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1342*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1343*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1344*9880d681SAndroid Build Coastguard Worker  %3 = shl <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>, %2
1345*9880d681SAndroid Build Coastguard Worker  %4 = or <8 x i16> %1, %3
1346*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bset.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1347*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1348*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1349*9880d681SAndroid Build Coastguard Worker
1350*9880d681SAndroid Build Coastguard Worker  ret void
1351*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bset_v8i16
1352*9880d681SAndroid Build Coastguard Worker}
1353*9880d681SAndroid Build Coastguard Worker
1354*9880d681SAndroid Build Coastguard Workerdefine void @bset_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1355*9880d681SAndroid Build Coastguard Worker  ; CHECK: bset_v4i32:
1356*9880d681SAndroid Build Coastguard Worker
1357*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1358*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1359*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1360*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1361*9880d681SAndroid Build Coastguard Worker  %3 = shl <4 x i32> <i32 1, i32 1, i32 1, i32 1>, %2
1362*9880d681SAndroid Build Coastguard Worker  %4 = or <4 x i32> %1, %3
1363*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bset.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1364*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1365*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1366*9880d681SAndroid Build Coastguard Worker
1367*9880d681SAndroid Build Coastguard Worker  ret void
1368*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bset_v4i32
1369*9880d681SAndroid Build Coastguard Worker}
1370*9880d681SAndroid Build Coastguard Worker
1371*9880d681SAndroid Build Coastguard Workerdefine void @bset_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1372*9880d681SAndroid Build Coastguard Worker  ; CHECK: bset_v2i64:
1373*9880d681SAndroid Build Coastguard Worker
1374*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1375*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1376*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1377*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1378*9880d681SAndroid Build Coastguard Worker  %3 = shl <2 x i64> <i64 1, i64 1>, %2
1379*9880d681SAndroid Build Coastguard Worker  %4 = or <2 x i64> %1, %3
1380*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bset.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1381*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1382*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1383*9880d681SAndroid Build Coastguard Worker
1384*9880d681SAndroid Build Coastguard Worker  ret void
1385*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bset_v2i64
1386*9880d681SAndroid Build Coastguard Worker}
1387*9880d681SAndroid Build Coastguard Worker
1388*9880d681SAndroid Build Coastguard Workerdefine void @bneg_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1389*9880d681SAndroid Build Coastguard Worker  ; CHECK: bneg_v16i8:
1390*9880d681SAndroid Build Coastguard Worker
1391*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1392*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1393*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1394*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1395*9880d681SAndroid Build Coastguard Worker  %3 = shl <16 x i8> <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>, %2
1396*9880d681SAndroid Build Coastguard Worker  %4 = xor <16 x i8> %1, %3
1397*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bneg.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1398*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1399*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1400*9880d681SAndroid Build Coastguard Worker
1401*9880d681SAndroid Build Coastguard Worker  ret void
1402*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bneg_v16i8
1403*9880d681SAndroid Build Coastguard Worker}
1404*9880d681SAndroid Build Coastguard Worker
1405*9880d681SAndroid Build Coastguard Workerdefine void @bneg_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1406*9880d681SAndroid Build Coastguard Worker  ; CHECK: bneg_v8i16:
1407*9880d681SAndroid Build Coastguard Worker
1408*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1409*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1410*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1411*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1412*9880d681SAndroid Build Coastguard Worker  %3 = shl <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>, %2
1413*9880d681SAndroid Build Coastguard Worker  %4 = xor <8 x i16> %1, %3
1414*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bneg.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1415*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1416*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1417*9880d681SAndroid Build Coastguard Worker
1418*9880d681SAndroid Build Coastguard Worker  ret void
1419*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bneg_v8i16
1420*9880d681SAndroid Build Coastguard Worker}
1421*9880d681SAndroid Build Coastguard Worker
1422*9880d681SAndroid Build Coastguard Workerdefine void @bneg_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1423*9880d681SAndroid Build Coastguard Worker  ; CHECK: bneg_v4i32:
1424*9880d681SAndroid Build Coastguard Worker
1425*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1426*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1427*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1428*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1429*9880d681SAndroid Build Coastguard Worker  %3 = shl <4 x i32> <i32 1, i32 1, i32 1, i32 1>, %2
1430*9880d681SAndroid Build Coastguard Worker  %4 = xor <4 x i32> %1, %3
1431*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bneg.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1432*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1433*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1434*9880d681SAndroid Build Coastguard Worker
1435*9880d681SAndroid Build Coastguard Worker  ret void
1436*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bneg_v4i32
1437*9880d681SAndroid Build Coastguard Worker}
1438*9880d681SAndroid Build Coastguard Worker
1439*9880d681SAndroid Build Coastguard Workerdefine void @bneg_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1440*9880d681SAndroid Build Coastguard Worker  ; CHECK: bneg_v2i64:
1441*9880d681SAndroid Build Coastguard Worker
1442*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1443*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1444*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1445*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1446*9880d681SAndroid Build Coastguard Worker  %3 = shl <2 x i64> <i64 1, i64 1>, %2
1447*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %1, %3
1448*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bneg.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1449*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1450*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1451*9880d681SAndroid Build Coastguard Worker
1452*9880d681SAndroid Build Coastguard Worker  ret void
1453*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bneg_v2i64
1454*9880d681SAndroid Build Coastguard Worker}
1455*9880d681SAndroid Build Coastguard Worker
1456*9880d681SAndroid Build Coastguard Workerdefine void @bclri_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1457*9880d681SAndroid Build Coastguard Worker  ; CHECK: bclri_v16i8:
1458*9880d681SAndroid Build Coastguard Worker
1459*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1460*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1461*9880d681SAndroid Build Coastguard Worker  %2 = xor <16 x i8> <i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8, i8  8>,
1462*9880d681SAndroid Build Coastguard Worker                     <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>
1463*9880d681SAndroid Build Coastguard Worker  %3 = and <16 x i8> %1, %2
1464*9880d681SAndroid Build Coastguard Worker  ; bclri.b and andi.b are exactly equivalent.
1465*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: andi.b [[R3:\$w[0-9]+]], [[R1]], 247
1466*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
1467*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1468*9880d681SAndroid Build Coastguard Worker
1469*9880d681SAndroid Build Coastguard Worker  ret void
1470*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bclri_v16i8
1471*9880d681SAndroid Build Coastguard Worker}
1472*9880d681SAndroid Build Coastguard Worker
1473*9880d681SAndroid Build Coastguard Workerdefine void @bclri_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1474*9880d681SAndroid Build Coastguard Worker  ; CHECK: bclri_v8i16:
1475*9880d681SAndroid Build Coastguard Worker
1476*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1477*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1478*9880d681SAndroid Build Coastguard Worker  %2 = xor <8 x i16> <i16  8, i16  8, i16  8, i16  8, i16  8, i16  8, i16  8, i16  8>,
1479*9880d681SAndroid Build Coastguard Worker                     <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1480*9880d681SAndroid Build Coastguard Worker  %3 = and <8 x i16> %1, %2
1481*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bclri.h [[R3:\$w[0-9]+]], [[R1]], 3
1482*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
1483*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1484*9880d681SAndroid Build Coastguard Worker
1485*9880d681SAndroid Build Coastguard Worker  ret void
1486*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bclri_v8i16
1487*9880d681SAndroid Build Coastguard Worker}
1488*9880d681SAndroid Build Coastguard Worker
1489*9880d681SAndroid Build Coastguard Workerdefine void @bclri_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1490*9880d681SAndroid Build Coastguard Worker  ; CHECK: bclri_v4i32:
1491*9880d681SAndroid Build Coastguard Worker
1492*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1493*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1494*9880d681SAndroid Build Coastguard Worker  %2 = xor <4 x i32> <i32  8, i32  8, i32  8, i32  8>,
1495*9880d681SAndroid Build Coastguard Worker                     <i32 -1, i32 -1, i32 -1, i32 -1>
1496*9880d681SAndroid Build Coastguard Worker  %3 = and <4 x i32> %1, %2
1497*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bclri.w [[R3:\$w[0-9]+]], [[R1]], 3
1498*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
1499*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1500*9880d681SAndroid Build Coastguard Worker
1501*9880d681SAndroid Build Coastguard Worker  ret void
1502*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bclri_v4i32
1503*9880d681SAndroid Build Coastguard Worker}
1504*9880d681SAndroid Build Coastguard Worker
1505*9880d681SAndroid Build Coastguard Workerdefine void @bclri_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
1506*9880d681SAndroid Build Coastguard Worker  ; CHECK: bclri_v2i64:
1507*9880d681SAndroid Build Coastguard Worker
1508*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1509*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1510*9880d681SAndroid Build Coastguard Worker  %2 = xor <2 x i64> <i64  8, i64  8>,
1511*9880d681SAndroid Build Coastguard Worker                     <i64 -1, i64 -1>
1512*9880d681SAndroid Build Coastguard Worker  %3 = and <2 x i64> %1, %2
1513*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bclri.d [[R3:\$w[0-9]+]], [[R1]], 3
1514*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
1515*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1516*9880d681SAndroid Build Coastguard Worker
1517*9880d681SAndroid Build Coastguard Worker  ret void
1518*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bclri_v2i64
1519*9880d681SAndroid Build Coastguard Worker}
1520*9880d681SAndroid Build Coastguard Worker
1521*9880d681SAndroid Build Coastguard Workerdefine void @bseti_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1522*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseti_v16i8:
1523*9880d681SAndroid Build Coastguard Worker
1524*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1525*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1526*9880d681SAndroid Build Coastguard Worker  %2 = or <16 x i8> %1, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
1527*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bseti.b [[R3:\$w[0-9]+]], [[R1]], 3
1528*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
1529*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1530*9880d681SAndroid Build Coastguard Worker
1531*9880d681SAndroid Build Coastguard Worker  ret void
1532*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseti_v16i8
1533*9880d681SAndroid Build Coastguard Worker}
1534*9880d681SAndroid Build Coastguard Worker
1535*9880d681SAndroid Build Coastguard Workerdefine void @bseti_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1536*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseti_v8i16:
1537*9880d681SAndroid Build Coastguard Worker
1538*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1539*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1540*9880d681SAndroid Build Coastguard Worker  %2 = or <8 x i16> %1, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
1541*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bseti.h [[R3:\$w[0-9]+]], [[R1]], 3
1542*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
1543*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1544*9880d681SAndroid Build Coastguard Worker
1545*9880d681SAndroid Build Coastguard Worker  ret void
1546*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseti_v8i16
1547*9880d681SAndroid Build Coastguard Worker}
1548*9880d681SAndroid Build Coastguard Worker
1549*9880d681SAndroid Build Coastguard Workerdefine void @bseti_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1550*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseti_v4i32:
1551*9880d681SAndroid Build Coastguard Worker
1552*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1553*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1554*9880d681SAndroid Build Coastguard Worker  %2 = or <4 x i32> %1, <i32 8, i32 8, i32 8, i32 8>
1555*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bseti.w [[R3:\$w[0-9]+]], [[R1]], 3
1556*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
1557*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1558*9880d681SAndroid Build Coastguard Worker
1559*9880d681SAndroid Build Coastguard Worker  ret void
1560*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseti_v4i32
1561*9880d681SAndroid Build Coastguard Worker}
1562*9880d681SAndroid Build Coastguard Worker
1563*9880d681SAndroid Build Coastguard Workerdefine void @bseti_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
1564*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseti_v2i64:
1565*9880d681SAndroid Build Coastguard Worker
1566*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1567*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1568*9880d681SAndroid Build Coastguard Worker  %2 = or <2 x i64> %1, <i64 8, i64 8>
1569*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bseti.d [[R3:\$w[0-9]+]], [[R1]], 3
1570*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
1571*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1572*9880d681SAndroid Build Coastguard Worker
1573*9880d681SAndroid Build Coastguard Worker  ret void
1574*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseti_v2i64
1575*9880d681SAndroid Build Coastguard Worker}
1576*9880d681SAndroid Build Coastguard Worker
1577*9880d681SAndroid Build Coastguard Workerdefine void @bnegi_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1578*9880d681SAndroid Build Coastguard Worker  ; CHECK: bnegi_v16i8:
1579*9880d681SAndroid Build Coastguard Worker
1580*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1581*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1582*9880d681SAndroid Build Coastguard Worker  %2 = xor <16 x i8> %1, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
1583*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bnegi.b [[R3:\$w[0-9]+]], [[R1]], 3
1584*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* %c
1585*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1586*9880d681SAndroid Build Coastguard Worker
1587*9880d681SAndroid Build Coastguard Worker  ret void
1588*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bnegi_v16i8
1589*9880d681SAndroid Build Coastguard Worker}
1590*9880d681SAndroid Build Coastguard Worker
1591*9880d681SAndroid Build Coastguard Workerdefine void @bnegi_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1592*9880d681SAndroid Build Coastguard Worker  ; CHECK: bnegi_v8i16:
1593*9880d681SAndroid Build Coastguard Worker
1594*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1595*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1596*9880d681SAndroid Build Coastguard Worker  %2 = xor <8 x i16> %1, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
1597*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bnegi.h [[R3:\$w[0-9]+]], [[R1]], 3
1598*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* %c
1599*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1600*9880d681SAndroid Build Coastguard Worker
1601*9880d681SAndroid Build Coastguard Worker  ret void
1602*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bnegi_v8i16
1603*9880d681SAndroid Build Coastguard Worker}
1604*9880d681SAndroid Build Coastguard Worker
1605*9880d681SAndroid Build Coastguard Workerdefine void @bnegi_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1606*9880d681SAndroid Build Coastguard Worker  ; CHECK: bnegi_v4i32:
1607*9880d681SAndroid Build Coastguard Worker
1608*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1609*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1610*9880d681SAndroid Build Coastguard Worker  %2 = xor <4 x i32> %1, <i32 8, i32 8, i32 8, i32 8>
1611*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bnegi.w [[R3:\$w[0-9]+]], [[R1]], 3
1612*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* %c
1613*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1614*9880d681SAndroid Build Coastguard Worker
1615*9880d681SAndroid Build Coastguard Worker  ret void
1616*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bnegi_v4i32
1617*9880d681SAndroid Build Coastguard Worker}
1618*9880d681SAndroid Build Coastguard Worker
1619*9880d681SAndroid Build Coastguard Workerdefine void @bnegi_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
1620*9880d681SAndroid Build Coastguard Worker  ; CHECK: bnegi_v2i64:
1621*9880d681SAndroid Build Coastguard Worker
1622*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1623*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1624*9880d681SAndroid Build Coastguard Worker  %2 = xor <2 x i64> %1, <i64 8, i64 8>
1625*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bnegi.d [[R3:\$w[0-9]+]], [[R1]], 3
1626*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* %c
1627*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1628*9880d681SAndroid Build Coastguard Worker
1629*9880d681SAndroid Build Coastguard Worker  ret void
1630*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bnegi_v2i64
1631*9880d681SAndroid Build Coastguard Worker}
1632*9880d681SAndroid Build Coastguard Worker
1633*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %val)
1634*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %val)
1635*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %val)
1636*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %val)
1637*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %val)
1638*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %val)
1639*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %val)
1640*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %val)
1641