xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/neon-bitwise-instructions.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @and8xi8(<8 x i8> %a, <8 x i8> %b) {
4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8xi8:
5*9880d681SAndroid Build Coastguard Worker; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
6*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i8> %a, %b;
7*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
8*9880d681SAndroid Build Coastguard Worker}
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @and16xi8(<16 x i8> %a, <16 x i8> %b) {
11*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16xi8:
12*9880d681SAndroid Build Coastguard Worker; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
13*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <16 x i8> %a, %b;
14*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orr8xi8(<8 x i8> %a, <8 x i8> %b) {
19*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8xi8:
20*9880d681SAndroid Build Coastguard Worker; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
21*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i8> %a, %b;
22*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
23*9880d681SAndroid Build Coastguard Worker}
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orr16xi8(<16 x i8> %a, <16 x i8> %b) {
26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16xi8:
27*9880d681SAndroid Build Coastguard Worker; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
28*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <16 x i8> %a, %b;
29*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
30*9880d681SAndroid Build Coastguard Worker}
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @xor8xi8(<8 x i8> %a, <8 x i8> %b) {
34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: xor8xi8:
35*9880d681SAndroid Build Coastguard Worker; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
36*9880d681SAndroid Build Coastguard Worker	%tmp1 = xor <8 x i8> %a, %b;
37*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
38*9880d681SAndroid Build Coastguard Worker}
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @xor16xi8(<16 x i8> %a, <16 x i8> %b) {
41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: xor16xi8:
42*9880d681SAndroid Build Coastguard Worker; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
43*9880d681SAndroid Build Coastguard Worker	%tmp1 = xor <16 x i8> %a, %b;
44*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
45*9880d681SAndroid Build Coastguard Worker}
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @bsl8xi8_const(<8 x i8> %a, <8 x i8> %b)  {
48*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl8xi8_const:
49*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
50*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i8> %a, < i8 -1, i8 -1, i8 0, i8 0, i8 -1, i8 -1, i8 0, i8 0 >
51*9880d681SAndroid Build Coastguard Worker	%tmp2 = and <8 x i8> %b, < i8 0, i8 0, i8 -1, i8 -1, i8 0, i8 0, i8 -1, i8 -1 >
52*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <8 x i8> %tmp1, %tmp2
53*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp3
54*9880d681SAndroid Build Coastguard Worker}
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @bsl16xi8_const(<16 x i8> %a, <16 x i8> %b) {
57*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl16xi8_const:
58*9880d681SAndroid Build Coastguard Worker; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
59*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <16 x i8> %a, < i8 -1, i8 -1, i8 -1, i8 -1, i8 0, i8 0, i8 0, i8 0, i8 -1, i8 -1, i8 -1, i8 -1, i8 0, i8 0, i8 0, i8 0 >
60*9880d681SAndroid Build Coastguard Worker	%tmp2 = and <16 x i8> %b, < i8 0, i8 0, i8 0, i8 0, i8 -1, i8 -1, i8 -1, i8 -1, i8 0, i8 0, i8 0, i8 0, i8 -1, i8 -1, i8 -1, i8 -1 >
61*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <16 x i8> %tmp1, %tmp2
62*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp3
63*9880d681SAndroid Build Coastguard Worker}
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orn8xi8(<8 x i8> %a, <8 x i8> %b)  {
66*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orn8xi8:
67*9880d681SAndroid Build Coastguard Worker; CHECK:  orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
68*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <8 x i8> %b, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
69*9880d681SAndroid Build Coastguard Worker  %tmp2 = or <8 x i8> %a, %tmp1
70*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %tmp2
71*9880d681SAndroid Build Coastguard Worker}
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orn16xi8(<16 x i8> %a, <16 x i8> %b) {
74*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orn16xi8:
75*9880d681SAndroid Build Coastguard Worker; CHECK:  orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
76*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <16 x i8> %b, < 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 >
77*9880d681SAndroid Build Coastguard Worker  %tmp2 = or <16 x i8> %a, %tmp1
78*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %tmp2
79*9880d681SAndroid Build Coastguard Worker}
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @bic8xi8(<8 x i8> %a, <8 x i8> %b)  {
82*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic8xi8:
83*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
84*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <8 x i8> %b, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
85*9880d681SAndroid Build Coastguard Worker  %tmp2 = and <8 x i8> %a, %tmp1
86*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %tmp2
87*9880d681SAndroid Build Coastguard Worker}
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @bic16xi8(<16 x i8> %a, <16 x i8> %b) {
90*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic16xi8:
91*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
92*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <16 x i8> %b, < 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 >
93*9880d681SAndroid Build Coastguard Worker  %tmp2 = and <16 x i8> %a, %tmp1
94*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %tmp2
95*9880d681SAndroid Build Coastguard Worker}
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @orrimm2s_lsl0(<2 x i32> %a) {
98*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm2s_lsl0:
99*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}
100*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i32> %a, < i32 255, i32 255>
101*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
102*9880d681SAndroid Build Coastguard Worker}
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @orrimm2s_lsl8(<2 x i32> %a) {
105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm2s_lsl8:
106*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
107*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i32> %a, < i32 65280, i32 65280>
108*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
109*9880d681SAndroid Build Coastguard Worker}
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @orrimm2s_lsl16(<2 x i32> %a) {
112*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm2s_lsl16:
113*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
114*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i32> %a, < i32 16711680, i32 16711680>
115*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
116*9880d681SAndroid Build Coastguard Worker}
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @orrimm2s_lsl24(<2 x i32> %a) {
119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm2s_lsl24:
120*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
121*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i32> %a, < i32 4278190080, i32 4278190080>
122*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
123*9880d681SAndroid Build Coastguard Worker}
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @orrimm4s_lsl0(<4 x i32> %a) {
126*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm4s_lsl0:
127*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}
128*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i32> %a, < i32 255, i32 255, i32 255, i32 255>
129*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
130*9880d681SAndroid Build Coastguard Worker}
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @orrimm4s_lsl8(<4 x i32> %a) {
133*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm4s_lsl8:
134*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
135*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i32> %a, < i32 65280, i32 65280, i32 65280, i32 65280>
136*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
137*9880d681SAndroid Build Coastguard Worker}
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @orrimm4s_lsl16(<4 x i32> %a) {
140*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm4s_lsl16:
141*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
142*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i32> %a, < i32 16711680, i32 16711680, i32 16711680, i32 16711680>
143*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
144*9880d681SAndroid Build Coastguard Worker}
145*9880d681SAndroid Build Coastguard Worker
146*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @orrimm4s_lsl24(<4 x i32> %a) {
147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm4s_lsl24:
148*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
149*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i32> %a, < i32 4278190080, i32 4278190080, i32 4278190080, i32 4278190080>
150*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
151*9880d681SAndroid Build Coastguard Worker}
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @orrimm4h_lsl0(<4 x i16> %a) {
154*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm4h_lsl0:
155*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}
156*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i16> %a, < i16 255, i16 255, i16 255, i16 255 >
157*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
158*9880d681SAndroid Build Coastguard Worker}
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @orrimm4h_lsl8(<4 x i16> %a) {
161*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm4h_lsl8:
162*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
163*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280 >
164*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
165*9880d681SAndroid Build Coastguard Worker}
166*9880d681SAndroid Build Coastguard Worker
167*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @orrimm8h_lsl0(<8 x i16> %a) {
168*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm8h_lsl0:
169*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}
170*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i16> %a, < i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255 >
171*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
172*9880d681SAndroid Build Coastguard Worker}
173*9880d681SAndroid Build Coastguard Worker
174*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @orrimm8h_lsl8(<8 x i16> %a) {
175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm8h_lsl8:
176*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
177*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280 >
178*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
179*9880d681SAndroid Build Coastguard Worker}
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @bicimm2s_lsl0(<2 x i32> %a) {
182*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm2s_lsl0:
183*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0x10|16}}
184*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i32> %a, < i32 4294967279, i32 4294967279 >
185*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
186*9880d681SAndroid Build Coastguard Worker}
187*9880d681SAndroid Build Coastguard Worker
188*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @bicimm2s_lsl8(<2 x i32> %a) {
189*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm2s_lsl8:
190*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #8
191*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i32> %a, < i32 4294963199, i32  4294963199 >
192*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
193*9880d681SAndroid Build Coastguard Worker}
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @bicimm2s_lsl16(<2 x i32> %a) {
196*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm2s_lsl16:
197*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #16
198*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i32> %a, < i32 4293918719, i32 4293918719 >
199*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
200*9880d681SAndroid Build Coastguard Worker}
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @bicimm2s_lsl124(<2 x i32> %a) {
203*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm2s_lsl124:
204*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #24
205*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i32> %a, < i32 4026531839, i32  4026531839>
206*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @bicimm4s_lsl0(<4 x i32> %a) {
210*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm4s_lsl0:
211*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0x10|16}}
212*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i32> %a, < i32 4294967279, i32 4294967279, i32 4294967279, i32 4294967279 >
213*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
214*9880d681SAndroid Build Coastguard Worker}
215*9880d681SAndroid Build Coastguard Worker
216*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @bicimm4s_lsl8(<4 x i32> %a) {
217*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm4s_lsl8:
218*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #8
219*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i32> %a, < i32 4294963199, i32  4294963199, i32  4294963199, i32  4294963199 >
220*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
221*9880d681SAndroid Build Coastguard Worker}
222*9880d681SAndroid Build Coastguard Worker
223*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @bicimm4s_lsl16(<4 x i32> %a) {
224*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm4s_lsl16:
225*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #16
226*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i32> %a, < i32 4293918719, i32 4293918719, i32 4293918719, i32 4293918719 >
227*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
228*9880d681SAndroid Build Coastguard Worker}
229*9880d681SAndroid Build Coastguard Worker
230*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @bicimm4s_lsl124(<4 x i32> %a) {
231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm4s_lsl124:
232*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #24
233*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i32> %a, < i32 4026531839, i32  4026531839, i32  4026531839, i32  4026531839>
234*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
235*9880d681SAndroid Build Coastguard Worker}
236*9880d681SAndroid Build Coastguard Worker
237*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @bicimm4h_lsl0_a(<4 x i16> %a) {
238*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm4h_lsl0_a:
239*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0x10|16}}
240*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, < i16 4294967279, i16  4294967279, i16  4294967279, i16  4294967279 >
241*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
242*9880d681SAndroid Build Coastguard Worker}
243*9880d681SAndroid Build Coastguard Worker
244*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @bicimm4h_lsl0_b(<4 x i16> %a) {
245*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm4h_lsl0_b:
246*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0xff|255}}
247*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, < i16 65280, i16  65280, i16  65280, i16 65280 >
248*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @bicimm4h_lsl8_a(<4 x i16> %a) {
252*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm4h_lsl8_a:
253*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0x10|16}}, lsl #8
254*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, < i16 4294963199, i16  4294963199, i16  4294963199, i16  4294963199>
255*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
256*9880d681SAndroid Build Coastguard Worker}
257*9880d681SAndroid Build Coastguard Worker
258*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @bicimm4h_lsl8_b(<4 x i16> %a) {
259*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm4h_lsl8_b:
260*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
261*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, < i16 255, i16 255, i16 255, i16 255>
262*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
263*9880d681SAndroid Build Coastguard Worker}
264*9880d681SAndroid Build Coastguard Worker
265*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @bicimm8h_lsl0_a(<8 x i16> %a) {
266*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm8h_lsl0_a:
267*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0x10|16}}
268*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, < i16 4294967279, i16  4294967279, i16  4294967279, i16  4294967279,
269*9880d681SAndroid Build Coastguard Worker   i16  4294967279, i16  4294967279, i16  4294967279, i16  4294967279 >
270*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
271*9880d681SAndroid Build Coastguard Worker}
272*9880d681SAndroid Build Coastguard Worker
273*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @bicimm8h_lsl0_b(<8 x i16> %a) {
274*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm8h_lsl0_b:
275*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0xff|255}}
276*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, < i16 65280, i16  65280, i16  65280, i16 65280, i16 65280, i16  65280, i16  65280, i16 65280 >
277*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
278*9880d681SAndroid Build Coastguard Worker}
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @bicimm8h_lsl8_a(<8 x i16> %a) {
281*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm8h_lsl8_a:
282*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0x10|16}}, lsl #8
283*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, < i16 4294963199, i16  4294963199, i16  4294963199, i16  4294963199,
284*9880d681SAndroid Build Coastguard Worker   i16  4294963199, i16  4294963199, i16  4294963199, i16  4294963199>
285*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
286*9880d681SAndroid Build Coastguard Worker}
287*9880d681SAndroid Build Coastguard Worker
288*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @bicimm8h_lsl8_b(<8 x i16> %a) {
289*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bicimm8h_lsl8_b:
290*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
291*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, < i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255>
292*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
293*9880d681SAndroid Build Coastguard Worker}
294*9880d681SAndroid Build Coastguard Worker
295*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @and2xi32(<2 x i32> %a, <2 x i32> %b) {
296*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and2xi32:
297*9880d681SAndroid Build Coastguard Worker; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
298*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i32> %a, %b;
299*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
300*9880d681SAndroid Build Coastguard Worker}
301*9880d681SAndroid Build Coastguard Worker
302*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @and4xi16(<4 x i16> %a, <4 x i16> %b) {
303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and4xi16:
304*9880d681SAndroid Build Coastguard Worker; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
305*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, %b;
306*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
307*9880d681SAndroid Build Coastguard Worker}
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @and1xi64(<1 x i64> %a, <1 x i64> %b) {
310*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and1xi64:
311*9880d681SAndroid Build Coastguard Worker; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
312*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <1 x i64> %a, %b;
313*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
314*9880d681SAndroid Build Coastguard Worker}
315*9880d681SAndroid Build Coastguard Worker
316*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @and4xi32(<4 x i32> %a, <4 x i32> %b) {
317*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and4xi32:
318*9880d681SAndroid Build Coastguard Worker; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
319*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i32> %a, %b;
320*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
321*9880d681SAndroid Build Coastguard Worker}
322*9880d681SAndroid Build Coastguard Worker
323*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @and8xi16(<8 x i16> %a, <8 x i16> %b) {
324*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8xi16:
325*9880d681SAndroid Build Coastguard Worker; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
326*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, %b;
327*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
328*9880d681SAndroid Build Coastguard Worker}
329*9880d681SAndroid Build Coastguard Worker
330*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @and2xi64(<2 x i64> %a, <2 x i64> %b) {
331*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and2xi64:
332*9880d681SAndroid Build Coastguard Worker; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
333*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i64> %a, %b;
334*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
335*9880d681SAndroid Build Coastguard Worker}
336*9880d681SAndroid Build Coastguard Worker
337*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @orr2xi32(<2 x i32> %a, <2 x i32> %b) {
338*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr2xi32:
339*9880d681SAndroid Build Coastguard Worker; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
340*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i32> %a, %b;
341*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
342*9880d681SAndroid Build Coastguard Worker}
343*9880d681SAndroid Build Coastguard Worker
344*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @orr4xi16(<4 x i16> %a, <4 x i16> %b) {
345*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr4xi16:
346*9880d681SAndroid Build Coastguard Worker; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
347*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i16> %a, %b;
348*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
349*9880d681SAndroid Build Coastguard Worker}
350*9880d681SAndroid Build Coastguard Worker
351*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @orr1xi64(<1 x i64> %a, <1 x i64> %b) {
352*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr1xi64:
353*9880d681SAndroid Build Coastguard Worker; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
354*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <1 x i64> %a, %b;
355*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
356*9880d681SAndroid Build Coastguard Worker}
357*9880d681SAndroid Build Coastguard Worker
358*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @orr4xi32(<4 x i32> %a, <4 x i32> %b) {
359*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr4xi32:
360*9880d681SAndroid Build Coastguard Worker; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
361*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i32> %a, %b;
362*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
363*9880d681SAndroid Build Coastguard Worker}
364*9880d681SAndroid Build Coastguard Worker
365*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @orr8xi16(<8 x i16> %a, <8 x i16> %b) {
366*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8xi16:
367*9880d681SAndroid Build Coastguard Worker; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
368*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i16> %a, %b;
369*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
370*9880d681SAndroid Build Coastguard Worker}
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @orr2xi64(<2 x i64> %a, <2 x i64> %b) {
373*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr2xi64:
374*9880d681SAndroid Build Coastguard Worker; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
375*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i64> %a, %b;
376*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
377*9880d681SAndroid Build Coastguard Worker}
378*9880d681SAndroid Build Coastguard Worker
379*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @eor2xi32(<2 x i32> %a, <2 x i32> %b) {
380*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: eor2xi32:
381*9880d681SAndroid Build Coastguard Worker; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
382*9880d681SAndroid Build Coastguard Worker	%tmp1 = xor <2 x i32> %a, %b;
383*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
384*9880d681SAndroid Build Coastguard Worker}
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @eor4xi16(<4 x i16> %a, <4 x i16> %b) {
387*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: eor4xi16:
388*9880d681SAndroid Build Coastguard Worker; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
389*9880d681SAndroid Build Coastguard Worker	%tmp1 = xor <4 x i16> %a, %b;
390*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
391*9880d681SAndroid Build Coastguard Worker}
392*9880d681SAndroid Build Coastguard Worker
393*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @eor1xi64(<1 x i64> %a, <1 x i64> %b) {
394*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: eor1xi64:
395*9880d681SAndroid Build Coastguard Worker; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
396*9880d681SAndroid Build Coastguard Worker	%tmp1 = xor <1 x i64> %a, %b;
397*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
398*9880d681SAndroid Build Coastguard Worker}
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @eor4xi32(<4 x i32> %a, <4 x i32> %b) {
401*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: eor4xi32:
402*9880d681SAndroid Build Coastguard Worker; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
403*9880d681SAndroid Build Coastguard Worker	%tmp1 = xor <4 x i32> %a, %b;
404*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
405*9880d681SAndroid Build Coastguard Worker}
406*9880d681SAndroid Build Coastguard Worker
407*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @eor8xi16(<8 x i16> %a, <8 x i16> %b) {
408*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: eor8xi16:
409*9880d681SAndroid Build Coastguard Worker; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
410*9880d681SAndroid Build Coastguard Worker	%tmp1 = xor <8 x i16> %a, %b;
411*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
412*9880d681SAndroid Build Coastguard Worker}
413*9880d681SAndroid Build Coastguard Worker
414*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @eor2xi64(<2 x i64> %a, <2 x i64> %b) {
415*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: eor2xi64:
416*9880d681SAndroid Build Coastguard Worker; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
417*9880d681SAndroid Build Coastguard Worker	%tmp1 = xor <2 x i64> %a, %b;
418*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
419*9880d681SAndroid Build Coastguard Worker}
420*9880d681SAndroid Build Coastguard Worker
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @bic2xi32(<2 x i32> %a, <2 x i32> %b)  {
423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic2xi32:
424*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
425*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <2 x i32> %b, < i32 -1, i32 -1 >
426*9880d681SAndroid Build Coastguard Worker  %tmp2 = and <2 x i32> %a, %tmp1
427*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %tmp2
428*9880d681SAndroid Build Coastguard Worker}
429*9880d681SAndroid Build Coastguard Worker
430*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @bic4xi16(<4 x i16> %a, <4 x i16> %b)  {
431*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic4xi16:
432*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
433*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <4 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1 >
434*9880d681SAndroid Build Coastguard Worker  %tmp2 = and <4 x i16> %a, %tmp1
435*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %tmp2
436*9880d681SAndroid Build Coastguard Worker}
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @bic1xi64(<1 x i64> %a, <1 x i64> %b)  {
439*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic1xi64:
440*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
441*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <1 x i64> %b, < i64 -1>
442*9880d681SAndroid Build Coastguard Worker  %tmp2 = and <1 x i64> %a, %tmp1
443*9880d681SAndroid Build Coastguard Worker  ret <1 x i64> %tmp2
444*9880d681SAndroid Build Coastguard Worker}
445*9880d681SAndroid Build Coastguard Worker
446*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @bic4xi32(<4 x i32> %a, <4 x i32> %b)  {
447*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic4xi32:
448*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
449*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <4 x i32> %b, < i32 -1, i32 -1, i32 -1, i32 -1>
450*9880d681SAndroid Build Coastguard Worker  %tmp2 = and <4 x i32> %a, %tmp1
451*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %tmp2
452*9880d681SAndroid Build Coastguard Worker}
453*9880d681SAndroid Build Coastguard Worker
454*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @bic8xi16(<8 x i16> %a, <8 x i16> %b)  {
455*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic8xi16:
456*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
457*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <8 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1, i16 -1, i16 -1, i16 -1, i16 -1 >
458*9880d681SAndroid Build Coastguard Worker  %tmp2 = and <8 x i16> %a, %tmp1
459*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp2
460*9880d681SAndroid Build Coastguard Worker}
461*9880d681SAndroid Build Coastguard Worker
462*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @bic2xi64(<2 x i64> %a, <2 x i64> %b)  {
463*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic2xi64:
464*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
465*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <2 x i64> %b, < i64 -1, i64 -1>
466*9880d681SAndroid Build Coastguard Worker  %tmp2 = and <2 x i64> %a, %tmp1
467*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %tmp2
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @orn2xi32(<2 x i32> %a, <2 x i32> %b)  {
471*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orn2xi32:
472*9880d681SAndroid Build Coastguard Worker; CHECK:  orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
473*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <2 x i32> %b, < i32 -1, i32 -1 >
474*9880d681SAndroid Build Coastguard Worker  %tmp2 = or <2 x i32> %a, %tmp1
475*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %tmp2
476*9880d681SAndroid Build Coastguard Worker}
477*9880d681SAndroid Build Coastguard Worker
478*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @orn4xi16(<4 x i16> %a, <4 x i16> %b)  {
479*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orn4xi16:
480*9880d681SAndroid Build Coastguard Worker; CHECK:  orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
481*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <4 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1 >
482*9880d681SAndroid Build Coastguard Worker  %tmp2 = or <4 x i16> %a, %tmp1
483*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %tmp2
484*9880d681SAndroid Build Coastguard Worker}
485*9880d681SAndroid Build Coastguard Worker
486*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @orn1xi64(<1 x i64> %a, <1 x i64> %b)  {
487*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orn1xi64:
488*9880d681SAndroid Build Coastguard Worker; CHECK:  orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
489*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <1 x i64> %b, < i64 -1>
490*9880d681SAndroid Build Coastguard Worker  %tmp2 = or <1 x i64> %a, %tmp1
491*9880d681SAndroid Build Coastguard Worker  ret <1 x i64> %tmp2
492*9880d681SAndroid Build Coastguard Worker}
493*9880d681SAndroid Build Coastguard Worker
494*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @orn4xi32(<4 x i32> %a, <4 x i32> %b)  {
495*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orn4xi32:
496*9880d681SAndroid Build Coastguard Worker; CHECK:  orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
497*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <4 x i32> %b, < i32 -1, i32 -1, i32 -1, i32 -1>
498*9880d681SAndroid Build Coastguard Worker  %tmp2 = or <4 x i32> %a, %tmp1
499*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %tmp2
500*9880d681SAndroid Build Coastguard Worker}
501*9880d681SAndroid Build Coastguard Worker
502*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @orn8xi16(<8 x i16> %a, <8 x i16> %b)  {
503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orn8xi16:
504*9880d681SAndroid Build Coastguard Worker; CHECK:  orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
505*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <8 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1, i16 -1, i16 -1, i16 -1, i16 -1 >
506*9880d681SAndroid Build Coastguard Worker  %tmp2 = or <8 x i16> %a, %tmp1
507*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp2
508*9880d681SAndroid Build Coastguard Worker}
509*9880d681SAndroid Build Coastguard Worker
510*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @orn2xi64(<2 x i64> %a, <2 x i64> %b)  {
511*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orn2xi64:
512*9880d681SAndroid Build Coastguard Worker; CHECK:  orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
513*9880d681SAndroid Build Coastguard Worker  %tmp1 = xor <2 x i64> %b, < i64 -1, i64 -1>
514*9880d681SAndroid Build Coastguard Worker  %tmp2 = or <2 x i64> %a, %tmp1
515*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %tmp2
516*9880d681SAndroid Build Coastguard Worker}
517*9880d681SAndroid Build Coastguard Worker
518*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @bsl2xi32_const(<2 x i32> %a, <2 x i32> %b)  {
519*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl2xi32_const:
520*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
521*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i32> %a, < i32 -1, i32 0 >
522*9880d681SAndroid Build Coastguard Worker	%tmp2 = and <2 x i32> %b, < i32 0, i32 -1 >
523*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <2 x i32> %tmp1, %tmp2
524*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
525*9880d681SAndroid Build Coastguard Worker}
526*9880d681SAndroid Build Coastguard Worker
527*9880d681SAndroid Build Coastguard Worker
528*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @bsl4xi16_const(<4 x i16> %a, <4 x i16> %b)  {
529*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl4xi16_const:
530*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
531*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, < i16 -1, i16 0, i16 -1,i16 0 >
532*9880d681SAndroid Build Coastguard Worker	%tmp2 = and <4 x i16> %b, < i16 0, i16 -1,i16 0, i16 -1 >
533*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <4 x i16> %tmp1, %tmp2
534*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp3
535*9880d681SAndroid Build Coastguard Worker}
536*9880d681SAndroid Build Coastguard Worker
537*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @bsl1xi64_const(<1 x i64> %a, <1 x i64> %b)  {
538*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl1xi64_const:
539*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
540*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <1 x i64> %a, < i64 -16 >
541*9880d681SAndroid Build Coastguard Worker	%tmp2 = and <1 x i64> %b, < i64 15 >
542*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <1 x i64> %tmp1, %tmp2
543*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp3
544*9880d681SAndroid Build Coastguard Worker}
545*9880d681SAndroid Build Coastguard Worker
546*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @bsl4xi32_const(<4 x i32> %a, <4 x i32> %b)  {
547*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl4xi32_const:
548*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
549*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i32> %a, < i32 -1, i32 0, i32 -1, i32 0 >
550*9880d681SAndroid Build Coastguard Worker	%tmp2 = and <4 x i32> %b, < i32 0, i32 -1, i32 0, i32 -1 >
551*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <4 x i32> %tmp1, %tmp2
552*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
553*9880d681SAndroid Build Coastguard Worker}
554*9880d681SAndroid Build Coastguard Worker
555*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @bsl8xi16_const(<8 x i16> %a, <8 x i16> %b)  {
556*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl8xi16_const:
557*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
558*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, < i16 -1, i16 -1, i16 0,i16 0, i16 -1, i16 -1, i16 0,i16 0 >
559*9880d681SAndroid Build Coastguard Worker	%tmp2 = and <8 x i16> %b, < i16 0, i16 0, i16 -1, i16 -1, i16 0, i16 0, i16 -1, i16 -1 >
560*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <8 x i16> %tmp1, %tmp2
561*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp3
562*9880d681SAndroid Build Coastguard Worker}
563*9880d681SAndroid Build Coastguard Worker
564*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @bsl2xi64_const(<2 x i64> %a, <2 x i64> %b)  {
565*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl2xi64_const:
566*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
567*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i64> %a, < i64 -1, i64 0 >
568*9880d681SAndroid Build Coastguard Worker	%tmp2 = and <2 x i64> %b, < i64 0, i64 -1 >
569*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <2 x i64> %tmp1, %tmp2
570*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
571*9880d681SAndroid Build Coastguard Worker}
572*9880d681SAndroid Build Coastguard Worker
573*9880d681SAndroid Build Coastguard Worker
574*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @bsl8xi8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) {
575*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl8xi8:
576*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
577*9880d681SAndroid Build Coastguard Worker  %1 = and <8 x i8> %v1, %v2
578*9880d681SAndroid Build Coastguard Worker  %2 = xor <8 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
579*9880d681SAndroid Build Coastguard Worker  %3 = and <8 x i8> %2, %v3
580*9880d681SAndroid Build Coastguard Worker  %4 = or <8 x i8> %1, %3
581*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %4
582*9880d681SAndroid Build Coastguard Worker}
583*9880d681SAndroid Build Coastguard Worker
584*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @bsl4xi16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) {
585*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl4xi16:
586*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
587*9880d681SAndroid Build Coastguard Worker  %1 = and <4 x i16> %v1, %v2
588*9880d681SAndroid Build Coastguard Worker  %2 = xor <4 x i16> %v1, <i16 -1, i16 -1, i16 -1, i16 -1>
589*9880d681SAndroid Build Coastguard Worker  %3 = and <4 x i16> %2, %v3
590*9880d681SAndroid Build Coastguard Worker  %4 = or <4 x i16> %1, %3
591*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %4
592*9880d681SAndroid Build Coastguard Worker}
593*9880d681SAndroid Build Coastguard Worker
594*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @bsl2xi32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) {
595*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl2xi32:
596*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
597*9880d681SAndroid Build Coastguard Worker  %1 = and <2 x i32> %v1, %v2
598*9880d681SAndroid Build Coastguard Worker  %2 = xor <2 x i32> %v1, <i32 -1, i32 -1>
599*9880d681SAndroid Build Coastguard Worker  %3 = and <2 x i32> %2, %v3
600*9880d681SAndroid Build Coastguard Worker  %4 = or <2 x i32> %1, %3
601*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %4
602*9880d681SAndroid Build Coastguard Worker}
603*9880d681SAndroid Build Coastguard Worker
604*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @bsl1xi64(<1 x i64> %v1, <1 x i64> %v2, <1 x i64> %v3) {
605*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl1xi64:
606*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
607*9880d681SAndroid Build Coastguard Worker  %1 = and <1 x i64> %v1, %v2
608*9880d681SAndroid Build Coastguard Worker  %2 = xor <1 x i64> %v1, <i64 -1>
609*9880d681SAndroid Build Coastguard Worker  %3 = and <1 x i64> %2, %v3
610*9880d681SAndroid Build Coastguard Worker  %4 = or <1 x i64> %1, %3
611*9880d681SAndroid Build Coastguard Worker  ret <1 x i64> %4
612*9880d681SAndroid Build Coastguard Worker}
613*9880d681SAndroid Build Coastguard Worker
614*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @bsl16xi8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) {
615*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl16xi8:
616*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
617*9880d681SAndroid Build Coastguard Worker  %1 = and <16 x i8> %v1, %v2
618*9880d681SAndroid Build Coastguard Worker  %2 = xor <16 x i8> %v1, <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>
619*9880d681SAndroid Build Coastguard Worker  %3 = and <16 x i8> %2, %v3
620*9880d681SAndroid Build Coastguard Worker  %4 = or <16 x i8> %1, %3
621*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %4
622*9880d681SAndroid Build Coastguard Worker}
623*9880d681SAndroid Build Coastguard Worker
624*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @bsl8xi16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) {
625*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl8xi16:
626*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
627*9880d681SAndroid Build Coastguard Worker  %1 = and <8 x i16> %v1, %v2
628*9880d681SAndroid Build Coastguard Worker  %2 = xor <8 x i16> %v1, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
629*9880d681SAndroid Build Coastguard Worker  %3 = and <8 x i16> %2, %v3
630*9880d681SAndroid Build Coastguard Worker  %4 = or <8 x i16> %1, %3
631*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %4
632*9880d681SAndroid Build Coastguard Worker}
633*9880d681SAndroid Build Coastguard Worker
634*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @bsl4xi32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) {
635*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl4xi32:
636*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
637*9880d681SAndroid Build Coastguard Worker  %1 = and <4 x i32> %v1, %v2
638*9880d681SAndroid Build Coastguard Worker  %2 = xor <4 x i32> %v1, <i32 -1, i32 -1, i32 -1, i32 -1>
639*9880d681SAndroid Build Coastguard Worker  %3 = and <4 x i32> %2, %v3
640*9880d681SAndroid Build Coastguard Worker  %4 = or <4 x i32> %1, %3
641*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %4
642*9880d681SAndroid Build Coastguard Worker}
643*9880d681SAndroid Build Coastguard Worker
644*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @vselect_v8i8(<8 x i8> %a) {
645*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vselect_v8i8:
646*9880d681SAndroid Build Coastguard Worker; CHECK:  movi {{d[0-9]+}}, #0x{{0*}}ffff
647*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  {{bsl v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b|and v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b}}
648*9880d681SAndroid Build Coastguard Worker  %b = select <8 x i1> <i1 true, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>, <8 x i8> %a, <8 x i8> <i8 undef, i8 undef, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
649*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %b
650*9880d681SAndroid Build Coastguard Worker}
651*9880d681SAndroid Build Coastguard Worker
652*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @vselect_v4i16(<4 x i16> %a) {
653*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vselect_v4i16:
654*9880d681SAndroid Build Coastguard Worker; CHECK:  movi {{d[0-9]+}}, #0x{{0*}}ffff
655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  {{bsl v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b|and v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b}}
656*9880d681SAndroid Build Coastguard Worker  %b = select <4 x i1> <i1 true, i1 false, i1 false, i1 false>, <4 x i16> %a, <4 x i16> <i16 undef, i16 0, i16 0, i16 0>
657*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %b
658*9880d681SAndroid Build Coastguard Worker}
659*9880d681SAndroid Build Coastguard Worker
660*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @vselect_cmp_ne(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
661*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vselect_cmp_ne:
662*9880d681SAndroid Build Coastguard Worker; CHECK:  cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
663*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
665*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ne <8 x i8> %a, %b
666*9880d681SAndroid Build Coastguard Worker  %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
667*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %d
668*9880d681SAndroid Build Coastguard Worker}
669*9880d681SAndroid Build Coastguard Worker
670*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @vselect_cmp_eq(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
671*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vselect_cmp_eq:
672*9880d681SAndroid Build Coastguard Worker; CHECK:  cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
673*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
674*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq <8 x i8> %a, %b
675*9880d681SAndroid Build Coastguard Worker  %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
676*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %d
677*9880d681SAndroid Build Coastguard Worker}
678*9880d681SAndroid Build Coastguard Worker
679*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @vselect_cmpz_ne(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
680*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vselect_cmpz_ne:
681*9880d681SAndroid Build Coastguard Worker; CHECK:  cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
684*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ne <8 x i8> %a, zeroinitializer
685*9880d681SAndroid Build Coastguard Worker  %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
686*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %d
687*9880d681SAndroid Build Coastguard Worker}
688*9880d681SAndroid Build Coastguard Worker
689*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @vselect_cmpz_eq(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
690*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vselect_cmpz_eq:
691*9880d681SAndroid Build Coastguard Worker; CHECK:  cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
692*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
693*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq <8 x i8> %a, zeroinitializer
694*9880d681SAndroid Build Coastguard Worker  %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
695*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %d
696*9880d681SAndroid Build Coastguard Worker}
697*9880d681SAndroid Build Coastguard Worker
698*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @vselect_tst(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
699*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: vselect_tst:
700*9880d681SAndroid Build Coastguard Worker; CHECK:  cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
701*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
702*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <8 x i8> %a, %b
703*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <8 x i8> %tmp3, zeroinitializer
704*9880d681SAndroid Build Coastguard Worker  %d = select <8 x i1> %tmp4, <8 x i8> %b, <8 x i8> %c
705*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %d
706*9880d681SAndroid Build Coastguard Worker}
707*9880d681SAndroid Build Coastguard Worker
708*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @bsl2xi64(<2 x i64> %v1, <2 x i64> %v2, <2 x i64> %v3) {
709*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bsl2xi64:
710*9880d681SAndroid Build Coastguard Worker; CHECK:  bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
711*9880d681SAndroid Build Coastguard Worker  %1 = and <2 x i64> %v1, %v2
712*9880d681SAndroid Build Coastguard Worker  %2 = xor <2 x i64> %v1, <i64 -1, i64 -1>
713*9880d681SAndroid Build Coastguard Worker  %3 = and <2 x i64> %2, %v3
714*9880d681SAndroid Build Coastguard Worker  %4 = or <2 x i64> %1, %3
715*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %4
716*9880d681SAndroid Build Coastguard Worker}
717*9880d681SAndroid Build Coastguard Worker
718*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orrimm8b_as_orrimm4h_lsl0(<8 x i8> %a) {
719*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm8b_as_orrimm4h_lsl0:
720*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}
721*9880d681SAndroid Build Coastguard Worker  %val = or <8 x i8> %a, <i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
722*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %val
723*9880d681SAndroid Build Coastguard Worker}
724*9880d681SAndroid Build Coastguard Worker
725*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orrimm8b_as_orimm4h_lsl8(<8 x i8> %a) {
726*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orrimm8b_as_orimm4h_lsl8:
727*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
728*9880d681SAndroid Build Coastguard Worker  %val = or <8 x i8> %a, <i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
729*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %val
730*9880d681SAndroid Build Coastguard Worker}
731*9880d681SAndroid Build Coastguard Worker
732*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orimm16b_as_orrimm8h_lsl0(<16 x i8> %a) {
733*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orimm16b_as_orrimm8h_lsl0:
734*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}
735*9880d681SAndroid Build Coastguard Worker  %val = or <16 x i8> %a, <i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
736*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %val
737*9880d681SAndroid Build Coastguard Worker}
738*9880d681SAndroid Build Coastguard Worker
739*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orimm16b_as_orrimm8h_lsl8(<16 x i8> %a) {
740*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orimm16b_as_orrimm8h_lsl8:
741*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
742*9880d681SAndroid Build Coastguard Worker  %val = or <16 x i8> %a, <i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
743*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %val
744*9880d681SAndroid Build Coastguard Worker}
745*9880d681SAndroid Build Coastguard Worker
746*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @and8imm2s_lsl0(<8 x i8> %a) {
747*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm2s_lsl0:
748*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xff|255}}
749*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i8> %a, < i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255>
750*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
751*9880d681SAndroid Build Coastguard Worker}
752*9880d681SAndroid Build Coastguard Worker
753*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @and8imm2s_lsl8(<8 x i8> %a) {
754*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm2s_lsl8:
755*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
756*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i8> %a, < i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255>
757*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
758*9880d681SAndroid Build Coastguard Worker}
759*9880d681SAndroid Build Coastguard Worker
760*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @and8imm2s_lsl16(<8 x i8> %a) {
761*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm2s_lsl16:
762*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
763*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i8> %a, < i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255>
764*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
765*9880d681SAndroid Build Coastguard Worker}
766*9880d681SAndroid Build Coastguard Worker
767*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @and8imm2s_lsl24(<8 x i8> %a) {
768*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm2s_lsl24:
769*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24
770*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i8> %a, < i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1>
771*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
772*9880d681SAndroid Build Coastguard Worker}
773*9880d681SAndroid Build Coastguard Worker
774*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @and16imm2s_lsl0(<4 x i16> %a) {
775*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm2s_lsl0:
776*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xff|255}}
777*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, < i16 65280, i16 65535, i16 65280, i16 65535>
778*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
779*9880d681SAndroid Build Coastguard Worker}
780*9880d681SAndroid Build Coastguard Worker
781*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @and16imm2s_lsl8(<4 x i16> %a) {
782*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm2s_lsl8:
783*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
784*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, < i16 255, i16 65535, i16 255, i16 65535>
785*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
786*9880d681SAndroid Build Coastguard Worker}
787*9880d681SAndroid Build Coastguard Worker
788*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @and16imm2s_lsl16(<4 x i16> %a) {
789*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm2s_lsl16:
790*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
791*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, < i16 65535, i16 65280, i16 65535, i16 65280>
792*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
793*9880d681SAndroid Build Coastguard Worker}
794*9880d681SAndroid Build Coastguard Worker
795*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @and16imm2s_lsl24(<4 x i16> %a) {
796*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm2s_lsl24:
797*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24
798*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i16> %a, < i16 65535, i16 511, i16 65535, i16 511>
799*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
800*9880d681SAndroid Build Coastguard Worker}
801*9880d681SAndroid Build Coastguard Worker
802*9880d681SAndroid Build Coastguard Worker
803*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @and64imm2s_lsl0(<1 x i64> %a) {
804*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm2s_lsl0:
805*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xff|255}}
806*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <1 x i64> %a, < i64 -1095216660736>
807*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
808*9880d681SAndroid Build Coastguard Worker}
809*9880d681SAndroid Build Coastguard Worker
810*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @and64imm2s_lsl8(<1 x i64> %a) {
811*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm2s_lsl8:
812*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
813*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <1 x i64> %a, < i64 -280375465148161>
814*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
815*9880d681SAndroid Build Coastguard Worker}
816*9880d681SAndroid Build Coastguard Worker
817*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @and64imm2s_lsl16(<1 x i64> %a) {
818*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm2s_lsl16:
819*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
820*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <1 x i64> %a, < i64 -71776119077928961>
821*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
822*9880d681SAndroid Build Coastguard Worker}
823*9880d681SAndroid Build Coastguard Worker
824*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @and64imm2s_lsl24(<1 x i64> %a) {
825*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm2s_lsl24:
826*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24
827*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <1 x i64> %a, < i64 144115183814443007>
828*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
829*9880d681SAndroid Build Coastguard Worker}
830*9880d681SAndroid Build Coastguard Worker
831*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @and8imm4s_lsl0(<16 x i8> %a) {
832*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm4s_lsl0:
833*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xff|255}}
834*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <16 x i8> %a, < i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255>
835*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
836*9880d681SAndroid Build Coastguard Worker}
837*9880d681SAndroid Build Coastguard Worker
838*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @and8imm4s_lsl8(<16 x i8> %a) {
839*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm4s_lsl8:
840*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
841*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <16 x i8> %a, < i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255>
842*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
843*9880d681SAndroid Build Coastguard Worker}
844*9880d681SAndroid Build Coastguard Worker
845*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @and8imm4s_lsl16(<16 x i8> %a) {
846*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm4s_lsl16:
847*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
848*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <16 x i8> %a, < i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255>
849*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
850*9880d681SAndroid Build Coastguard Worker}
851*9880d681SAndroid Build Coastguard Worker
852*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @and8imm4s_lsl24(<16 x i8> %a) {
853*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm4s_lsl24:
854*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24
855*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <16 x i8> %a, < i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1>
856*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
857*9880d681SAndroid Build Coastguard Worker}
858*9880d681SAndroid Build Coastguard Worker
859*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @and16imm4s_lsl0(<8 x i16> %a) {
860*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm4s_lsl0:
861*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xff|255}}
862*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, < i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535>
863*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
864*9880d681SAndroid Build Coastguard Worker}
865*9880d681SAndroid Build Coastguard Worker
866*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @and16imm4s_lsl8(<8 x i16> %a) {
867*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm4s_lsl8:
868*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
869*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, < i16 255, i16 65535, i16 255, i16 65535, i16 255, i16 65535, i16 255, i16 65535>
870*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
871*9880d681SAndroid Build Coastguard Worker}
872*9880d681SAndroid Build Coastguard Worker
873*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @and16imm4s_lsl16(<8 x i16> %a) {
874*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm4s_lsl16:
875*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
876*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, < i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280>
877*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
878*9880d681SAndroid Build Coastguard Worker}
879*9880d681SAndroid Build Coastguard Worker
880*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @and16imm4s_lsl24(<8 x i16> %a) {
881*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm4s_lsl24:
882*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24
883*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i16> %a, < i16 65535, i16 511, i16 65535, i16 511, i16 65535, i16 511, i16 65535, i16 511>
884*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
885*9880d681SAndroid Build Coastguard Worker}
886*9880d681SAndroid Build Coastguard Worker
887*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @and64imm4s_lsl0(<2 x i64> %a) {
888*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm4s_lsl0:
889*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xff|255}}
890*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i64> %a, < i64 -1095216660736, i64 -1095216660736>
891*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
892*9880d681SAndroid Build Coastguard Worker}
893*9880d681SAndroid Build Coastguard Worker
894*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @and64imm4s_lsl8(<2 x i64> %a) {
895*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm4s_lsl8:
896*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
897*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i64> %a, < i64 -280375465148161, i64 -280375465148161>
898*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
899*9880d681SAndroid Build Coastguard Worker}
900*9880d681SAndroid Build Coastguard Worker
901*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @and64imm4s_lsl16(<2 x i64> %a) {
902*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm4s_lsl16:
903*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
904*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i64> %a, < i64 -71776119077928961, i64 -71776119077928961>
905*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
906*9880d681SAndroid Build Coastguard Worker}
907*9880d681SAndroid Build Coastguard Worker
908*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @and64imm4s_lsl24(<2 x i64> %a) {
909*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm4s_lsl24:
910*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24
911*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i64> %a, < i64 144115183814443007, i64 144115183814443007>
912*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
913*9880d681SAndroid Build Coastguard Worker}
914*9880d681SAndroid Build Coastguard Worker
915*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @and8imm4h_lsl0(<8 x i8> %a) {
916*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm4h_lsl0:
917*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0xff|255}}
918*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
919*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
920*9880d681SAndroid Build Coastguard Worker}
921*9880d681SAndroid Build Coastguard Worker
922*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @and8imm4h_lsl8(<8 x i8> %a) {
923*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm4h_lsl8:
924*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
925*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <8 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
926*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
927*9880d681SAndroid Build Coastguard Worker}
928*9880d681SAndroid Build Coastguard Worker
929*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @and16imm4h_lsl0(<2 x i32> %a) {
930*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm4h_lsl0:
931*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0xff|255}}
932*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i32> %a, < i32 4278255360, i32 4278255360>
933*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
934*9880d681SAndroid Build Coastguard Worker}
935*9880d681SAndroid Build Coastguard Worker
936*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @and16imm4h_lsl8(<2 x i32> %a) {
937*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm4h_lsl8:
938*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
939*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i32> %a, < i32 16711935, i32 16711935>
940*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
941*9880d681SAndroid Build Coastguard Worker}
942*9880d681SAndroid Build Coastguard Worker
943*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @and64imm4h_lsl0(<1 x i64> %a) {
944*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm4h_lsl0:
945*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0xff|255}}
946*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <1 x i64> %a, < i64 -71777214294589696>
947*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
948*9880d681SAndroid Build Coastguard Worker}
949*9880d681SAndroid Build Coastguard Worker
950*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @and64imm4h_lsl8(<1 x i64> %a) {
951*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm4h_lsl8:
952*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
953*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <1 x i64> %a, < i64 71777214294589695>
954*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
955*9880d681SAndroid Build Coastguard Worker}
956*9880d681SAndroid Build Coastguard Worker
957*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @and8imm8h_lsl0(<16 x i8> %a) {
958*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm8h_lsl0:
959*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0xff|255}}
960*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <16 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255 >
961*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
962*9880d681SAndroid Build Coastguard Worker}
963*9880d681SAndroid Build Coastguard Worker
964*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @and8imm8h_lsl8(<16 x i8> %a) {
965*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and8imm8h_lsl8:
966*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
967*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <16 x i8> %a, <i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0 >
968*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
969*9880d681SAndroid Build Coastguard Worker}
970*9880d681SAndroid Build Coastguard Worker
971*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @and16imm8h_lsl0(<4 x i32> %a) {
972*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm8h_lsl0:
973*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0xff|255}}
974*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i32> %a, < i32 4278255360, i32 4278255360, i32 4278255360, i32 4278255360>
975*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
976*9880d681SAndroid Build Coastguard Worker}
977*9880d681SAndroid Build Coastguard Worker
978*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @and16imm8h_lsl8(<4 x i32> %a) {
979*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and16imm8h_lsl8:
980*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
981*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <4 x i32> %a, < i32 16711935, i32 16711935, i32 16711935, i32 16711935>
982*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
983*9880d681SAndroid Build Coastguard Worker}
984*9880d681SAndroid Build Coastguard Worker
985*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @and64imm8h_lsl0(<2 x i64> %a) {
986*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm8h_lsl0:
987*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0xff|255}}
988*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i64> %a, < i64 -71777214294589696, i64 -71777214294589696>
989*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
990*9880d681SAndroid Build Coastguard Worker}
991*9880d681SAndroid Build Coastguard Worker
992*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @and64imm8h_lsl8(<2 x i64> %a) {
993*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: and64imm8h_lsl8:
994*9880d681SAndroid Build Coastguard Worker; CHECK:  bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
995*9880d681SAndroid Build Coastguard Worker	%tmp1 = and <2 x i64> %a, < i64 71777214294589695, i64 71777214294589695>
996*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
997*9880d681SAndroid Build Coastguard Worker}
998*9880d681SAndroid Build Coastguard Worker
999*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orr8imm2s_lsl0(<8 x i8> %a) {
1000*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm2s_lsl0:
1001*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}
1002*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i8> %a, < i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0>
1003*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
1004*9880d681SAndroid Build Coastguard Worker}
1005*9880d681SAndroid Build Coastguard Worker
1006*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orr8imm2s_lsl8(<8 x i8> %a) {
1007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm2s_lsl8:
1008*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
1009*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i8> %a, < i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0>
1010*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
1011*9880d681SAndroid Build Coastguard Worker}
1012*9880d681SAndroid Build Coastguard Worker
1013*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orr8imm2s_lsl16(<8 x i8> %a) {
1014*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm2s_lsl16:
1015*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
1016*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i8> %a, < i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0>
1017*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
1018*9880d681SAndroid Build Coastguard Worker}
1019*9880d681SAndroid Build Coastguard Worker
1020*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orr8imm2s_lsl24(<8 x i8> %a) {
1021*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm2s_lsl24:
1022*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
1023*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i8> %a, < i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255>
1024*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
1025*9880d681SAndroid Build Coastguard Worker}
1026*9880d681SAndroid Build Coastguard Worker
1027*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @orr16imm2s_lsl0(<4 x i16> %a) {
1028*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm2s_lsl0:
1029*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}
1030*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i16> %a, < i16 255, i16 0, i16 255, i16 0>
1031*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
1032*9880d681SAndroid Build Coastguard Worker}
1033*9880d681SAndroid Build Coastguard Worker
1034*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @orr16imm2s_lsl8(<4 x i16> %a) {
1035*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm2s_lsl8:
1036*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
1037*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i16> %a, < i16 65280, i16 0, i16 65280, i16 0>
1038*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
1039*9880d681SAndroid Build Coastguard Worker}
1040*9880d681SAndroid Build Coastguard Worker
1041*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @orr16imm2s_lsl16(<4 x i16> %a) {
1042*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm2s_lsl16:
1043*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
1044*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i16> %a, < i16 0, i16 255, i16 0, i16 255>
1045*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
1046*9880d681SAndroid Build Coastguard Worker}
1047*9880d681SAndroid Build Coastguard Worker
1048*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @orr16imm2s_lsl24(<4 x i16> %a) {
1049*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm2s_lsl24:
1050*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
1051*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i16> %a, < i16 0, i16 65280, i16 0, i16 65280>
1052*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp1
1053*9880d681SAndroid Build Coastguard Worker}
1054*9880d681SAndroid Build Coastguard Worker
1055*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @orr64imm2s_lsl0(<1 x i64> %a) {
1056*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm2s_lsl0:
1057*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}
1058*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <1 x i64> %a, < i64 1095216660735>
1059*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
1060*9880d681SAndroid Build Coastguard Worker}
1061*9880d681SAndroid Build Coastguard Worker
1062*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @orr64imm2s_lsl8(<1 x i64> %a) {
1063*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm2s_lsl8:
1064*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
1065*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <1 x i64> %a, < i64 280375465148160>
1066*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
1067*9880d681SAndroid Build Coastguard Worker}
1068*9880d681SAndroid Build Coastguard Worker
1069*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @orr64imm2s_lsl16(<1 x i64> %a) {
1070*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm2s_lsl16:
1071*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
1072*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <1 x i64> %a, < i64 71776119077928960>
1073*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
1074*9880d681SAndroid Build Coastguard Worker}
1075*9880d681SAndroid Build Coastguard Worker
1076*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @orr64imm2s_lsl24(<1 x i64> %a) {
1077*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm2s_lsl24:
1078*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
1079*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <1 x i64> %a, < i64 -72057589759737856>
1080*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
1081*9880d681SAndroid Build Coastguard Worker}
1082*9880d681SAndroid Build Coastguard Worker
1083*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orr8imm4s_lsl0(<16 x i8> %a) {
1084*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm4s_lsl0:
1085*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}
1086*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <16 x i8> %a, < i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0>
1087*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
1088*9880d681SAndroid Build Coastguard Worker}
1089*9880d681SAndroid Build Coastguard Worker
1090*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orr8imm4s_lsl8(<16 x i8> %a) {
1091*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm4s_lsl8:
1092*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
1093*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <16 x i8> %a, < i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0>
1094*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
1095*9880d681SAndroid Build Coastguard Worker}
1096*9880d681SAndroid Build Coastguard Worker
1097*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orr8imm4s_lsl16(<16 x i8> %a) {
1098*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm4s_lsl16:
1099*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
1100*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <16 x i8> %a, < i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0>
1101*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
1102*9880d681SAndroid Build Coastguard Worker}
1103*9880d681SAndroid Build Coastguard Worker
1104*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orr8imm4s_lsl24(<16 x i8> %a) {
1105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm4s_lsl24:
1106*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
1107*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <16 x i8> %a, < i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255>
1108*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
1109*9880d681SAndroid Build Coastguard Worker}
1110*9880d681SAndroid Build Coastguard Worker
1111*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @orr16imm4s_lsl0(<8 x i16> %a) {
1112*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm4s_lsl0:
1113*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}
1114*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i16> %a, < i16 255, i16 0, i16 255, i16 0, i16 255, i16 0, i16 255, i16 0>
1115*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
1116*9880d681SAndroid Build Coastguard Worker}
1117*9880d681SAndroid Build Coastguard Worker
1118*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @orr16imm4s_lsl8(<8 x i16> %a) {
1119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm4s_lsl8:
1120*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
1121*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i16> %a, < i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0>
1122*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
1123*9880d681SAndroid Build Coastguard Worker}
1124*9880d681SAndroid Build Coastguard Worker
1125*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @orr16imm4s_lsl16(<8 x i16> %a) {
1126*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm4s_lsl16:
1127*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
1128*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i16> %a, < i16 0, i16 255, i16 0, i16 255, i16 0, i16 255, i16 0, i16 255>
1129*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
1130*9880d681SAndroid Build Coastguard Worker}
1131*9880d681SAndroid Build Coastguard Worker
1132*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @orr16imm4s_lsl24(<8 x i16> %a) {
1133*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm4s_lsl24:
1134*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
1135*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i16> %a, < i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280>
1136*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp1
1137*9880d681SAndroid Build Coastguard Worker}
1138*9880d681SAndroid Build Coastguard Worker
1139*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @orr64imm4s_lsl0(<2 x i64> %a) {
1140*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm4s_lsl0:
1141*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}
1142*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i64> %a, < i64 1095216660735, i64 1095216660735>
1143*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
1144*9880d681SAndroid Build Coastguard Worker}
1145*9880d681SAndroid Build Coastguard Worker
1146*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @orr64imm4s_lsl8(<2 x i64> %a) {
1147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm4s_lsl8:
1148*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
1149*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i64> %a, < i64 280375465148160, i64 280375465148160>
1150*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
1151*9880d681SAndroid Build Coastguard Worker}
1152*9880d681SAndroid Build Coastguard Worker
1153*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @orr64imm4s_lsl16(<2 x i64> %a) {
1154*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm4s_lsl16:
1155*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
1156*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i64> %a, < i64 71776119077928960, i64 71776119077928960>
1157*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
1158*9880d681SAndroid Build Coastguard Worker}
1159*9880d681SAndroid Build Coastguard Worker
1160*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @orr64imm4s_lsl24(<2 x i64> %a) {
1161*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm4s_lsl24:
1162*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
1163*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i64> %a, < i64 -72057589759737856, i64 -72057589759737856>
1164*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
1165*9880d681SAndroid Build Coastguard Worker}
1166*9880d681SAndroid Build Coastguard Worker
1167*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orr8imm4h_lsl0(<8 x i8> %a) {
1168*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm4h_lsl0:
1169*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}
1170*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
1171*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
1172*9880d681SAndroid Build Coastguard Worker}
1173*9880d681SAndroid Build Coastguard Worker
1174*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @orr8imm4h_lsl8(<8 x i8> %a) {
1175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm4h_lsl8:
1176*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
1177*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <8 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
1178*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp1
1179*9880d681SAndroid Build Coastguard Worker}
1180*9880d681SAndroid Build Coastguard Worker
1181*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @orr16imm4h_lsl0(<2 x i32> %a) {
1182*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm4h_lsl0:
1183*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}
1184*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i32> %a, < i32 16711935, i32 16711935>
1185*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
1186*9880d681SAndroid Build Coastguard Worker}
1187*9880d681SAndroid Build Coastguard Worker
1188*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @orr16imm4h_lsl8(<2 x i32> %a) {
1189*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm4h_lsl8:
1190*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
1191*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i32> %a, < i32 4278255360, i32 4278255360>
1192*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp1
1193*9880d681SAndroid Build Coastguard Worker}
1194*9880d681SAndroid Build Coastguard Worker
1195*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @orr64imm4h_lsl0(<1 x i64> %a) {
1196*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm4h_lsl0:
1197*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}
1198*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <1 x i64> %a, < i64 71777214294589695>
1199*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
1200*9880d681SAndroid Build Coastguard Worker}
1201*9880d681SAndroid Build Coastguard Worker
1202*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @orr64imm4h_lsl8(<1 x i64> %a) {
1203*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm4h_lsl8:
1204*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
1205*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <1 x i64> %a, < i64 -71777214294589696>
1206*9880d681SAndroid Build Coastguard Worker	ret <1 x i64> %tmp1
1207*9880d681SAndroid Build Coastguard Worker}
1208*9880d681SAndroid Build Coastguard Worker
1209*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orr8imm8h_lsl0(<16 x i8> %a) {
1210*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm8h_lsl0:
1211*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}
1212*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <16 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
1213*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
1214*9880d681SAndroid Build Coastguard Worker}
1215*9880d681SAndroid Build Coastguard Worker
1216*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @orr8imm8h_lsl8(<16 x i8> %a) {
1217*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr8imm8h_lsl8:
1218*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
1219*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <16 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
1220*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp1
1221*9880d681SAndroid Build Coastguard Worker}
1222*9880d681SAndroid Build Coastguard Worker
1223*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @orr16imm8h_lsl0(<4 x i32> %a) {
1224*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm8h_lsl0:
1225*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}
1226*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i32> %a, < i32 16711935, i32 16711935, i32 16711935, i32 16711935>
1227*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
1228*9880d681SAndroid Build Coastguard Worker}
1229*9880d681SAndroid Build Coastguard Worker
1230*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @orr16imm8h_lsl8(<4 x i32> %a) {
1231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr16imm8h_lsl8:
1232*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
1233*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <4 x i32> %a, < i32 4278255360, i32 4278255360, i32 4278255360, i32 4278255360>
1234*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp1
1235*9880d681SAndroid Build Coastguard Worker}
1236*9880d681SAndroid Build Coastguard Worker
1237*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @orr64imm8h_lsl0(<2 x i64> %a) {
1238*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm8h_lsl0:
1239*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}
1240*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i64> %a, < i64 71777214294589695, i64 71777214294589695>
1241*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
1242*9880d681SAndroid Build Coastguard Worker}
1243*9880d681SAndroid Build Coastguard Worker
1244*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @orr64imm8h_lsl8(<2 x i64> %a) {
1245*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr64imm8h_lsl8:
1246*9880d681SAndroid Build Coastguard Worker; CHECK:  orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
1247*9880d681SAndroid Build Coastguard Worker	%tmp1 = or <2 x i64> %a, < i64 -71777214294589696, i64 -71777214294589696>
1248*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp1
1249*9880d681SAndroid Build Coastguard Worker}
1250*9880d681SAndroid Build Coastguard Worker
1251