blob: 6497856c7d36c90e98e3517e829c13545b5ead45 [file] [log] [blame]
Tim Northover3b0846e2014-05-24 12:50:23 +00001; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s
Tim Northover40e9efd2013-08-01 09:20:35 +00002
Tim Northover40e9efd2013-08-01 09:20:35 +00003define <8 x i8> @and8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +00004; CHECK-LABEL: and8xi8:
5; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +00006 %tmp1 = and <8 x i8> %a, %b;
7 ret <8 x i8> %tmp1
8}
9
10define <16 x i8> @and16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000011; CHECK-LABEL: and16xi8:
12; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000013 %tmp1 = and <16 x i8> %a, %b;
14 ret <16 x i8> %tmp1
15}
16
17
18define <8 x i8> @orr8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000019; CHECK-LABEL: orr8xi8:
20; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +000021 %tmp1 = or <8 x i8> %a, %b;
22 ret <8 x i8> %tmp1
23}
24
25define <16 x i8> @orr16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000026; CHECK-LABEL: orr16xi8:
27; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000028 %tmp1 = or <16 x i8> %a, %b;
29 ret <16 x i8> %tmp1
30}
31
32
33define <8 x i8> @xor8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000034; CHECK-LABEL: xor8xi8:
35; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +000036 %tmp1 = xor <8 x i8> %a, %b;
37 ret <8 x i8> %tmp1
38}
39
40define <16 x i8> @xor16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000041; CHECK-LABEL: xor16xi8:
42; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000043 %tmp1 = xor <16 x i8> %a, %b;
44 ret <16 x i8> %tmp1
45}
46
47define <8 x i8> @bsl8xi8_const(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000048; CHECK-LABEL: bsl8xi8_const:
49; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +000050 %tmp1 = and <8 x i8> %a, < i8 -1, i8 -1, i8 0, i8 0, i8 -1, i8 -1, i8 0, i8 0 >
51 %tmp2 = and <8 x i8> %b, < i8 0, i8 0, i8 -1, i8 -1, i8 0, i8 0, i8 -1, i8 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +000052 %tmp3 = or <8 x i8> %tmp1, %tmp2
53 ret <8 x i8> %tmp3
54}
55
56define <16 x i8> @bsl16xi8_const(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000057; CHECK-LABEL: bsl16xi8_const:
58; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +000059 %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 %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 >
Tim Northover40e9efd2013-08-01 09:20:35 +000061 %tmp3 = or <16 x i8> %tmp1, %tmp2
62 ret <16 x i8> %tmp3
63}
64
65define <8 x i8> @orn8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000066; CHECK-LABEL: orn8xi8:
67; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +000068 %tmp1 = xor <8 x i8> %b, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
69 %tmp2 = or <8 x i8> %a, %tmp1
70 ret <8 x i8> %tmp2
71}
72
73define <16 x i8> @orn16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000074; CHECK-LABEL: orn16xi8:
75; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000076 %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 %tmp2 = or <16 x i8> %a, %tmp1
78 ret <16 x i8> %tmp2
79}
80
81define <8 x i8> @bic8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000082; CHECK-LABEL: bic8xi8:
83; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +000084 %tmp1 = xor <8 x i8> %b, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
85 %tmp2 = and <8 x i8> %a, %tmp1
86 ret <8 x i8> %tmp2
87}
88
89define <16 x i8> @bic16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000090; CHECK-LABEL: bic16xi8:
91; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000092 %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 %tmp2 = and <16 x i8> %a, %tmp1
94 ret <16 x i8> %tmp2
95}
96
97define <2 x i32> @orrimm2s_lsl0(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +000098; CHECK-LABEL: orrimm2s_lsl0:
99; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000100 %tmp1 = or <2 x i32> %a, < i32 255, i32 255>
101 ret <2 x i32> %tmp1
102}
103
104define <2 x i32> @orrimm2s_lsl8(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000105; CHECK-LABEL: orrimm2s_lsl8:
106; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000107 %tmp1 = or <2 x i32> %a, < i32 65280, i32 65280>
108 ret <2 x i32> %tmp1
109}
110
111define <2 x i32> @orrimm2s_lsl16(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000112; CHECK-LABEL: orrimm2s_lsl16:
113; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Tim Northover40e9efd2013-08-01 09:20:35 +0000114 %tmp1 = or <2 x i32> %a, < i32 16711680, i32 16711680>
115 ret <2 x i32> %tmp1
116}
117
118define <2 x i32> @orrimm2s_lsl24(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000119; CHECK-LABEL: orrimm2s_lsl24:
120; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
Tim Northover40e9efd2013-08-01 09:20:35 +0000121 %tmp1 = or <2 x i32> %a, < i32 4278190080, i32 4278190080>
122 ret <2 x i32> %tmp1
123}
124
125define <4 x i32> @orrimm4s_lsl0(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000126; CHECK-LABEL: orrimm4s_lsl0:
127; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000128 %tmp1 = or <4 x i32> %a, < i32 255, i32 255, i32 255, i32 255>
129 ret <4 x i32> %tmp1
130}
131
132define <4 x i32> @orrimm4s_lsl8(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000133; CHECK-LABEL: orrimm4s_lsl8:
134; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000135 %tmp1 = or <4 x i32> %a, < i32 65280, i32 65280, i32 65280, i32 65280>
136 ret <4 x i32> %tmp1
137}
138
139define <4 x i32> @orrimm4s_lsl16(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000140; CHECK-LABEL: orrimm4s_lsl16:
141; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Tim Northover40e9efd2013-08-01 09:20:35 +0000142 %tmp1 = or <4 x i32> %a, < i32 16711680, i32 16711680, i32 16711680, i32 16711680>
143 ret <4 x i32> %tmp1
144}
145
146define <4 x i32> @orrimm4s_lsl24(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000147; CHECK-LABEL: orrimm4s_lsl24:
148; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
Tim Northover40e9efd2013-08-01 09:20:35 +0000149 %tmp1 = or <4 x i32> %a, < i32 4278190080, i32 4278190080, i32 4278190080, i32 4278190080>
150 ret <4 x i32> %tmp1
151}
152
153define <4 x i16> @orrimm4h_lsl0(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000154; CHECK-LABEL: orrimm4h_lsl0:
155; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000156 %tmp1 = or <4 x i16> %a, < i16 255, i16 255, i16 255, i16 255 >
157 ret <4 x i16> %tmp1
158}
159
160define <4 x i16> @orrimm4h_lsl8(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000161; CHECK-LABEL: orrimm4h_lsl8:
162; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000163 %tmp1 = or <4 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280 >
164 ret <4 x i16> %tmp1
165}
166
167define <8 x i16> @orrimm8h_lsl0(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000168; CHECK-LABEL: orrimm8h_lsl0:
169; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000170 %tmp1 = or <8 x i16> %a, < i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255 >
171 ret <8 x i16> %tmp1
172}
173
174define <8 x i16> @orrimm8h_lsl8(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000175; CHECK-LABEL: orrimm8h_lsl8:
176; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000177 %tmp1 = or <8 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280 >
178 ret <8 x i16> %tmp1
179}
180
181define <2 x i32> @bicimm2s_lsl0(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000182; CHECK-LABEL: bicimm2s_lsl0:
183; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000184 %tmp1 = and <2 x i32> %a, < i32 4294967279, i32 4294967279 >
185 ret <2 x i32> %tmp1
186}
187
188define <2 x i32> @bicimm2s_lsl8(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000189; CHECK-LABEL: bicimm2s_lsl8:
190; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000191 %tmp1 = and <2 x i32> %a, < i32 4294963199, i32 4294963199 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000192 ret <2 x i32> %tmp1
193}
194
195define <2 x i32> @bicimm2s_lsl16(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000196; CHECK-LABEL: bicimm2s_lsl16:
197; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000198 %tmp1 = and <2 x i32> %a, < i32 4293918719, i32 4293918719 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000199 ret <2 x i32> %tmp1
200}
201
202define <2 x i32> @bicimm2s_lsl124(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000203; CHECK-LABEL: bicimm2s_lsl124:
204; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000205 %tmp1 = and <2 x i32> %a, < i32 4026531839, i32 4026531839>
Tim Northover40e9efd2013-08-01 09:20:35 +0000206 ret <2 x i32> %tmp1
207}
208
209define <4 x i32> @bicimm4s_lsl0(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000210; CHECK-LABEL: bicimm4s_lsl0:
211; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000212 %tmp1 = and <4 x i32> %a, < i32 4294967279, i32 4294967279, i32 4294967279, i32 4294967279 >
213 ret <4 x i32> %tmp1
214}
215
216define <4 x i32> @bicimm4s_lsl8(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000217; CHECK-LABEL: bicimm4s_lsl8:
218; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000219 %tmp1 = and <4 x i32> %a, < i32 4294963199, i32 4294963199, i32 4294963199, i32 4294963199 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000220 ret <4 x i32> %tmp1
221}
222
223define <4 x i32> @bicimm4s_lsl16(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000224; CHECK-LABEL: bicimm4s_lsl16:
225; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000226 %tmp1 = and <4 x i32> %a, < i32 4293918719, i32 4293918719, i32 4293918719, i32 4293918719 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000227 ret <4 x i32> %tmp1
228}
229
230define <4 x i32> @bicimm4s_lsl124(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000231; CHECK-LABEL: bicimm4s_lsl124:
232; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000233 %tmp1 = and <4 x i32> %a, < i32 4026531839, i32 4026531839, i32 4026531839, i32 4026531839>
Tim Northover40e9efd2013-08-01 09:20:35 +0000234 ret <4 x i32> %tmp1
235}
236
237define <4 x i16> @bicimm4h_lsl0_a(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000238; CHECK-LABEL: bicimm4h_lsl0_a:
239; CHECK: bic {{v[0-9]+}}.4h, #{{0x10|16}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000240 %tmp1 = and <4 x i16> %a, < i16 4294967279, i16 4294967279, i16 4294967279, i16 4294967279 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000241 ret <4 x i16> %tmp1
242}
243
244define <4 x i16> @bicimm4h_lsl0_b(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000245; CHECK-LABEL: bicimm4h_lsl0_b:
246; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000247 %tmp1 = and <4 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280 >
248 ret <4 x i16> %tmp1
249}
250
251define <4 x i16> @bicimm4h_lsl8_a(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000252; CHECK-LABEL: bicimm4h_lsl8_a:
253; CHECK: bic {{v[0-9]+}}.4h, #{{0x10|16}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000254 %tmp1 = and <4 x i16> %a, < i16 4294963199, i16 4294963199, i16 4294963199, i16 4294963199>
Tim Northover40e9efd2013-08-01 09:20:35 +0000255 ret <4 x i16> %tmp1
256}
257
258define <4 x i16> @bicimm4h_lsl8_b(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000259; CHECK-LABEL: bicimm4h_lsl8_b:
260; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000261 %tmp1 = and <4 x i16> %a, < i16 255, i16 255, i16 255, i16 255>
262 ret <4 x i16> %tmp1
263}
264
265define <8 x i16> @bicimm8h_lsl0_a(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000266; CHECK-LABEL: bicimm8h_lsl0_a:
267; CHECK: bic {{v[0-9]+}}.8h, #{{0x10|16}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000268 %tmp1 = and <8 x i16> %a, < i16 4294967279, i16 4294967279, i16 4294967279, i16 4294967279,
269 i16 4294967279, i16 4294967279, i16 4294967279, i16 4294967279 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000270 ret <8 x i16> %tmp1
271}
272
273define <8 x i16> @bicimm8h_lsl0_b(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000274; CHECK-LABEL: bicimm8h_lsl0_b:
275; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000276 %tmp1 = and <8 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280 >
277 ret <8 x i16> %tmp1
278}
279
280define <8 x i16> @bicimm8h_lsl8_a(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000281; CHECK-LABEL: bicimm8h_lsl8_a:
282; CHECK: bic {{v[0-9]+}}.8h, #{{0x10|16}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000283 %tmp1 = and <8 x i16> %a, < i16 4294963199, i16 4294963199, i16 4294963199, i16 4294963199,
284 i16 4294963199, i16 4294963199, i16 4294963199, i16 4294963199>
Tim Northover40e9efd2013-08-01 09:20:35 +0000285 ret <8 x i16> %tmp1
286}
287
288define <8 x i16> @bicimm8h_lsl8_b(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000289; CHECK-LABEL: bicimm8h_lsl8_b:
290; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000291 %tmp1 = and <8 x i16> %a, < i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255>
292 ret <8 x i16> %tmp1
293}
294
295define <2 x i32> @and2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000296; CHECK-LABEL: and2xi32:
297; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000298 %tmp1 = and <2 x i32> %a, %b;
299 ret <2 x i32> %tmp1
300}
301
302define <4 x i16> @and4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000303; CHECK-LABEL: and4xi16:
304; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000305 %tmp1 = and <4 x i16> %a, %b;
306 ret <4 x i16> %tmp1
307}
308
309define <1 x i64> @and1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000310; CHECK-LABEL: and1xi64:
311; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000312 %tmp1 = and <1 x i64> %a, %b;
313 ret <1 x i64> %tmp1
314}
315
316define <4 x i32> @and4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000317; CHECK-LABEL: and4xi32:
318; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000319 %tmp1 = and <4 x i32> %a, %b;
320 ret <4 x i32> %tmp1
321}
322
323define <8 x i16> @and8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000324; CHECK-LABEL: and8xi16:
325; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000326 %tmp1 = and <8 x i16> %a, %b;
327 ret <8 x i16> %tmp1
328}
329
330define <2 x i64> @and2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000331; CHECK-LABEL: and2xi64:
332; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000333 %tmp1 = and <2 x i64> %a, %b;
334 ret <2 x i64> %tmp1
335}
336
337define <2 x i32> @orr2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000338; CHECK-LABEL: orr2xi32:
339; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000340 %tmp1 = or <2 x i32> %a, %b;
341 ret <2 x i32> %tmp1
342}
343
344define <4 x i16> @orr4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000345; CHECK-LABEL: orr4xi16:
346; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000347 %tmp1 = or <4 x i16> %a, %b;
348 ret <4 x i16> %tmp1
349}
350
351define <1 x i64> @orr1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000352; CHECK-LABEL: orr1xi64:
353; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000354 %tmp1 = or <1 x i64> %a, %b;
355 ret <1 x i64> %tmp1
356}
357
358define <4 x i32> @orr4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000359; CHECK-LABEL: orr4xi32:
360; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000361 %tmp1 = or <4 x i32> %a, %b;
362 ret <4 x i32> %tmp1
363}
364
365define <8 x i16> @orr8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000366; CHECK-LABEL: orr8xi16:
367; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000368 %tmp1 = or <8 x i16> %a, %b;
369 ret <8 x i16> %tmp1
370}
371
372define <2 x i64> @orr2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000373; CHECK-LABEL: orr2xi64:
374; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000375 %tmp1 = or <2 x i64> %a, %b;
376 ret <2 x i64> %tmp1
377}
378
379define <2 x i32> @eor2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000380; CHECK-LABEL: eor2xi32:
381; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000382 %tmp1 = xor <2 x i32> %a, %b;
383 ret <2 x i32> %tmp1
384}
385
386define <4 x i16> @eor4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000387; CHECK-LABEL: eor4xi16:
388; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000389 %tmp1 = xor <4 x i16> %a, %b;
390 ret <4 x i16> %tmp1
391}
392
393define <1 x i64> @eor1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000394; CHECK-LABEL: eor1xi64:
395; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000396 %tmp1 = xor <1 x i64> %a, %b;
397 ret <1 x i64> %tmp1
398}
399
400define <4 x i32> @eor4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000401; CHECK-LABEL: eor4xi32:
402; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000403 %tmp1 = xor <4 x i32> %a, %b;
404 ret <4 x i32> %tmp1
405}
406
407define <8 x i16> @eor8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000408; CHECK-LABEL: eor8xi16:
409; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000410 %tmp1 = xor <8 x i16> %a, %b;
411 ret <8 x i16> %tmp1
412}
413
414define <2 x i64> @eor2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000415; CHECK-LABEL: eor2xi64:
416; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000417 %tmp1 = xor <2 x i64> %a, %b;
418 ret <2 x i64> %tmp1
419}
420
421
422define <2 x i32> @bic2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000423; CHECK-LABEL: bic2xi32:
424; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000425 %tmp1 = xor <2 x i32> %b, < i32 -1, i32 -1 >
426 %tmp2 = and <2 x i32> %a, %tmp1
427 ret <2 x i32> %tmp2
428}
429
430define <4 x i16> @bic4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000431; CHECK-LABEL: bic4xi16:
432; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000433 %tmp1 = xor <4 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1 >
434 %tmp2 = and <4 x i16> %a, %tmp1
435 ret <4 x i16> %tmp2
436}
437
438define <1 x i64> @bic1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000439; CHECK-LABEL: bic1xi64:
440; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000441 %tmp1 = xor <1 x i64> %b, < i64 -1>
442 %tmp2 = and <1 x i64> %a, %tmp1
443 ret <1 x i64> %tmp2
444}
445
446define <4 x i32> @bic4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000447; CHECK-LABEL: bic4xi32:
448; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000449 %tmp1 = xor <4 x i32> %b, < i32 -1, i32 -1, i32 -1, i32 -1>
450 %tmp2 = and <4 x i32> %a, %tmp1
451 ret <4 x i32> %tmp2
452}
453
454define <8 x i16> @bic8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000455; CHECK-LABEL: bic8xi16:
456; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000457 %tmp1 = xor <8 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1, i16 -1, i16 -1, i16 -1, i16 -1 >
458 %tmp2 = and <8 x i16> %a, %tmp1
459 ret <8 x i16> %tmp2
460}
461
462define <2 x i64> @bic2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000463; CHECK-LABEL: bic2xi64:
464; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000465 %tmp1 = xor <2 x i64> %b, < i64 -1, i64 -1>
466 %tmp2 = and <2 x i64> %a, %tmp1
467 ret <2 x i64> %tmp2
468}
469
470define <2 x i32> @orn2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000471; CHECK-LABEL: orn2xi32:
472; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000473 %tmp1 = xor <2 x i32> %b, < i32 -1, i32 -1 >
474 %tmp2 = or <2 x i32> %a, %tmp1
475 ret <2 x i32> %tmp2
476}
477
478define <4 x i16> @orn4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000479; CHECK-LABEL: orn4xi16:
480; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000481 %tmp1 = xor <4 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1 >
482 %tmp2 = or <4 x i16> %a, %tmp1
483 ret <4 x i16> %tmp2
484}
485
486define <1 x i64> @orn1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000487; CHECK-LABEL: orn1xi64:
488; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000489 %tmp1 = xor <1 x i64> %b, < i64 -1>
490 %tmp2 = or <1 x i64> %a, %tmp1
491 ret <1 x i64> %tmp2
492}
493
494define <4 x i32> @orn4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000495; CHECK-LABEL: orn4xi32:
496; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000497 %tmp1 = xor <4 x i32> %b, < i32 -1, i32 -1, i32 -1, i32 -1>
498 %tmp2 = or <4 x i32> %a, %tmp1
499 ret <4 x i32> %tmp2
500}
501
502define <8 x i16> @orn8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000503; CHECK-LABEL: orn8xi16:
504; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000505 %tmp1 = xor <8 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1, i16 -1, i16 -1, i16 -1, i16 -1 >
506 %tmp2 = or <8 x i16> %a, %tmp1
507 ret <8 x i16> %tmp2
508}
509
510define <2 x i64> @orn2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000511; CHECK-LABEL: orn2xi64:
512; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000513 %tmp1 = xor <2 x i64> %b, < i64 -1, i64 -1>
514 %tmp2 = or <2 x i64> %a, %tmp1
515 ret <2 x i64> %tmp2
516}
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000517
Tim Northover40e9efd2013-08-01 09:20:35 +0000518define <2 x i32> @bsl2xi32_const(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000519; CHECK-LABEL: bsl2xi32_const:
520; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000521 %tmp1 = and <2 x i32> %a, < i32 -1, i32 0 >
522 %tmp2 = and <2 x i32> %b, < i32 0, i32 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000523 %tmp3 = or <2 x i32> %tmp1, %tmp2
524 ret <2 x i32> %tmp3
525}
526
527
528define <4 x i16> @bsl4xi16_const(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000529; CHECK-LABEL: bsl4xi16_const:
530; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000531 %tmp1 = and <4 x i16> %a, < i16 -1, i16 0, i16 -1,i16 0 >
532 %tmp2 = and <4 x i16> %b, < i16 0, i16 -1,i16 0, i16 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000533 %tmp3 = or <4 x i16> %tmp1, %tmp2
534 ret <4 x i16> %tmp3
535}
536
537define <1 x i64> @bsl1xi64_const(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000538; CHECK-LABEL: bsl1xi64_const:
539; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000540 %tmp1 = and <1 x i64> %a, < i64 -16 >
541 %tmp2 = and <1 x i64> %b, < i64 15 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000542 %tmp3 = or <1 x i64> %tmp1, %tmp2
543 ret <1 x i64> %tmp3
544}
545
546define <4 x i32> @bsl4xi32_const(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000547; CHECK-LABEL: bsl4xi32_const:
548; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000549 %tmp1 = and <4 x i32> %a, < i32 -1, i32 0, i32 -1, i32 0 >
550 %tmp2 = and <4 x i32> %b, < i32 0, i32 -1, i32 0, i32 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000551 %tmp3 = or <4 x i32> %tmp1, %tmp2
552 ret <4 x i32> %tmp3
553}
554
555define <8 x i16> @bsl8xi16_const(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000556; CHECK-LABEL: bsl8xi16_const:
557; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000558 %tmp1 = and <8 x i16> %a, < i16 -1, i16 -1, i16 0,i16 0, i16 -1, i16 -1, i16 0,i16 0 >
559 %tmp2 = and <8 x i16> %b, < i16 0, i16 0, i16 -1, i16 -1, i16 0, i16 0, i16 -1, i16 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000560 %tmp3 = or <8 x i16> %tmp1, %tmp2
561 ret <8 x i16> %tmp3
562}
563
564define <2 x i64> @bsl2xi64_const(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000565; CHECK-LABEL: bsl2xi64_const:
566; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000567 %tmp1 = and <2 x i64> %a, < i64 -1, i64 0 >
568 %tmp2 = and <2 x i64> %b, < i64 0, i64 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000569 %tmp3 = or <2 x i64> %tmp1, %tmp2
570 ret <2 x i64> %tmp3
571}
572
573
574define <8 x i8> @bsl8xi8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000575; CHECK-LABEL: bsl8xi8:
576; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000577 %1 = and <8 x i8> %v1, %v2
578 %2 = xor <8 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
579 %3 = and <8 x i8> %2, %v3
580 %4 = or <8 x i8> %1, %3
581 ret <8 x i8> %4
582}
583
584define <4 x i16> @bsl4xi16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000585; CHECK-LABEL: bsl4xi16:
586; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000587 %1 = and <4 x i16> %v1, %v2
588 %2 = xor <4 x i16> %v1, <i16 -1, i16 -1, i16 -1, i16 -1>
589 %3 = and <4 x i16> %2, %v3
590 %4 = or <4 x i16> %1, %3
591 ret <4 x i16> %4
592}
593
594define <2 x i32> @bsl2xi32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000595; CHECK-LABEL: bsl2xi32:
596; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000597 %1 = and <2 x i32> %v1, %v2
598 %2 = xor <2 x i32> %v1, <i32 -1, i32 -1>
599 %3 = and <2 x i32> %2, %v3
600 %4 = or <2 x i32> %1, %3
601 ret <2 x i32> %4
602}
603
604define <1 x i64> @bsl1xi64(<1 x i64> %v1, <1 x i64> %v2, <1 x i64> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000605; CHECK-LABEL: bsl1xi64:
606; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000607 %1 = and <1 x i64> %v1, %v2
608 %2 = xor <1 x i64> %v1, <i64 -1>
609 %3 = and <1 x i64> %2, %v3
610 %4 = or <1 x i64> %1, %3
611 ret <1 x i64> %4
612}
613
614define <16 x i8> @bsl16xi8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000615; CHECK-LABEL: bsl16xi8:
616; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000617 %1 = and <16 x i8> %v1, %v2
618 %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 %3 = and <16 x i8> %2, %v3
620 %4 = or <16 x i8> %1, %3
621 ret <16 x i8> %4
622}
623
624define <8 x i16> @bsl8xi16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000625; CHECK-LABEL: bsl8xi16:
626; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000627 %1 = and <8 x i16> %v1, %v2
628 %2 = xor <8 x i16> %v1, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
629 %3 = and <8 x i16> %2, %v3
630 %4 = or <8 x i16> %1, %3
631 ret <8 x i16> %4
632}
633
634define <4 x i32> @bsl4xi32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000635; CHECK-LABEL: bsl4xi32:
636; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000637 %1 = and <4 x i32> %v1, %v2
638 %2 = xor <4 x i32> %v1, <i32 -1, i32 -1, i32 -1, i32 -1>
639 %3 = and <4 x i32> %2, %v3
640 %4 = or <4 x i32> %1, %3
641 ret <4 x i32> %4
642}
643
Kevin Qin5cd73c92014-01-06 02:26:10 +0000644define <8 x i8> @vselect_v8i8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000645; CHECK-LABEL: vselect_v8i8:
646; CHECK: movi {{d[0-9]+}}, #0x{{0*}}ffff
647; 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}}
Kevin Qin5cd73c92014-01-06 02:26:10 +0000648 %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 ret <8 x i8> %b
650}
651
652define <4 x i16> @vselect_v4i16(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000653; CHECK-LABEL: vselect_v4i16:
654; CHECK: movi {{d[0-9]+}}, #0x{{0*}}ffff
655; 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}}
Kevin Qin5cd73c92014-01-06 02:26:10 +0000656 %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 ret <4 x i16> %b
658}
659
660define <8 x i8> @vselect_cmp_ne(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
Tim Northover0a44e662014-04-18 09:31:01 +0000661; CHECK-LABEL: vselect_cmp_ne:
662; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover2509a3f2014-05-15 12:11:02 +0000663; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover0a44e662014-04-18 09:31:01 +0000664; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000665 %cmp = icmp ne <8 x i8> %a, %b
666 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
667 ret <8 x i8> %d
668}
669
670define <8 x i8> @vselect_cmp_eq(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
Tim Northover0a44e662014-04-18 09:31:01 +0000671; CHECK-LABEL: vselect_cmp_eq:
672; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
673; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000674 %cmp = icmp eq <8 x i8> %a, %b
675 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
676 ret <8 x i8> %d
677}
678
679define <8 x i8> @vselect_cmpz_ne(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
Tim Northover0a44e662014-04-18 09:31:01 +0000680; CHECK-LABEL: vselect_cmpz_ne:
681; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
Tim Northover2509a3f2014-05-15 12:11:02 +0000682; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover0a44e662014-04-18 09:31:01 +0000683; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000684 %cmp = icmp ne <8 x i8> %a, zeroinitializer
685 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
686 ret <8 x i8> %d
687}
688
689define <8 x i8> @vselect_cmpz_eq(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
Tim Northover0a44e662014-04-18 09:31:01 +0000690; CHECK-LABEL: vselect_cmpz_eq:
691; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
692; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000693 %cmp = icmp eq <8 x i8> %a, zeroinitializer
694 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
695 ret <8 x i8> %d
696}
697
698define <8 x i8> @vselect_tst(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
Tim Northover0a44e662014-04-18 09:31:01 +0000699; CHECK-LABEL: vselect_tst:
700; CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
701; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000702 %tmp3 = and <8 x i8> %a, %b
703 %tmp4 = icmp ne <8 x i8> %tmp3, zeroinitializer
704 %d = select <8 x i1> %tmp4, <8 x i8> %b, <8 x i8> %c
705 ret <8 x i8> %d
706}
707
Tim Northover40e9efd2013-08-01 09:20:35 +0000708define <2 x i64> @bsl2xi64(<2 x i64> %v1, <2 x i64> %v2, <2 x i64> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000709; CHECK-LABEL: bsl2xi64:
710; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000711 %1 = and <2 x i64> %v1, %v2
712 %2 = xor <2 x i64> %v1, <i64 -1, i64 -1>
713 %3 = and <2 x i64> %2, %v3
714 %4 = or <2 x i64> %1, %3
715 ret <2 x i64> %4
716}
717
718define <8 x i8> @orrimm8b_as_orrimm4h_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000719; CHECK-LABEL: orrimm8b_as_orrimm4h_lsl0:
720; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000721 %val = or <8 x i8> %a, <i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
722 ret <8 x i8> %val
723}
724
725define <8 x i8> @orrimm8b_as_orimm4h_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000726; CHECK-LABEL: orrimm8b_as_orimm4h_lsl8:
727; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000728 %val = or <8 x i8> %a, <i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
729 ret <8 x i8> %val
730}
731
732define <16 x i8> @orimm16b_as_orrimm8h_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000733; CHECK-LABEL: orimm16b_as_orrimm8h_lsl0:
734; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000735 %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 ret <16 x i8> %val
737}
738
739define <16 x i8> @orimm16b_as_orrimm8h_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000740; CHECK-LABEL: orimm16b_as_orrimm8h_lsl8:
741; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000742 %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 ret <16 x i8> %val
744}
745
Kevin Qincfa41a22014-01-07 05:10:47 +0000746define <8 x i8> @and8imm2s_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000747; CHECK-LABEL: and8imm2s_lsl0:
748; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000749 %tmp1 = and <8 x i8> %a, < i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255>
750 ret <8 x i8> %tmp1
751}
752
753define <8 x i8> @and8imm2s_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000754; CHECK-LABEL: and8imm2s_lsl8:
755; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000756 %tmp1 = and <8 x i8> %a, < i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255>
757 ret <8 x i8> %tmp1
758}
759
760define <8 x i8> @and8imm2s_lsl16(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000761; CHECK-LABEL: and8imm2s_lsl16:
762; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000763 %tmp1 = and <8 x i8> %a, < i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255>
764 ret <8 x i8> %tmp1
765}
766
767define <8 x i8> @and8imm2s_lsl24(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000768; CHECK-LABEL: and8imm2s_lsl24:
769; CHECK: bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000770 %tmp1 = and <8 x i8> %a, < i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1>
771 ret <8 x i8> %tmp1
772}
773
774define <4 x i16> @and16imm2s_lsl0(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000775; CHECK-LABEL: and16imm2s_lsl0:
776; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000777 %tmp1 = and <4 x i16> %a, < i16 65280, i16 65535, i16 65280, i16 65535>
778 ret <4 x i16> %tmp1
779}
780
781define <4 x i16> @and16imm2s_lsl8(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000782; CHECK-LABEL: and16imm2s_lsl8:
783; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000784 %tmp1 = and <4 x i16> %a, < i16 255, i16 65535, i16 255, i16 65535>
785 ret <4 x i16> %tmp1
786}
787
788define <4 x i16> @and16imm2s_lsl16(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000789; CHECK-LABEL: and16imm2s_lsl16:
790; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000791 %tmp1 = and <4 x i16> %a, < i16 65535, i16 65280, i16 65535, i16 65280>
792 ret <4 x i16> %tmp1
793}
794
795define <4 x i16> @and16imm2s_lsl24(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000796; CHECK-LABEL: and16imm2s_lsl24:
797; CHECK: bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000798 %tmp1 = and <4 x i16> %a, < i16 65535, i16 511, i16 65535, i16 511>
799 ret <4 x i16> %tmp1
800}
801
802
803define <1 x i64> @and64imm2s_lsl0(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000804; CHECK-LABEL: and64imm2s_lsl0:
805; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000806 %tmp1 = and <1 x i64> %a, < i64 -1095216660736>
807 ret <1 x i64> %tmp1
808}
809
810define <1 x i64> @and64imm2s_lsl8(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000811; CHECK-LABEL: and64imm2s_lsl8:
812; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000813 %tmp1 = and <1 x i64> %a, < i64 -280375465148161>
814 ret <1 x i64> %tmp1
815}
816
817define <1 x i64> @and64imm2s_lsl16(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000818; CHECK-LABEL: and64imm2s_lsl16:
819; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000820 %tmp1 = and <1 x i64> %a, < i64 -71776119077928961>
821 ret <1 x i64> %tmp1
822}
823
824define <1 x i64> @and64imm2s_lsl24(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000825; CHECK-LABEL: and64imm2s_lsl24:
826; CHECK: bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000827 %tmp1 = and <1 x i64> %a, < i64 144115183814443007>
828 ret <1 x i64> %tmp1
829}
830
831define <16 x i8> @and8imm4s_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000832; CHECK-LABEL: and8imm4s_lsl0:
833; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000834 %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 ret <16 x i8> %tmp1
836}
837
838define <16 x i8> @and8imm4s_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000839; CHECK-LABEL: and8imm4s_lsl8:
840; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000841 %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 ret <16 x i8> %tmp1
843}
844
845define <16 x i8> @and8imm4s_lsl16(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000846; CHECK-LABEL: and8imm4s_lsl16:
847; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000848 %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 ret <16 x i8> %tmp1
850}
851
852define <16 x i8> @and8imm4s_lsl24(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000853; CHECK-LABEL: and8imm4s_lsl24:
854; CHECK: bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000855 %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 ret <16 x i8> %tmp1
857}
858
859define <8 x i16> @and16imm4s_lsl0(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000860; CHECK-LABEL: and16imm4s_lsl0:
861; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000862 %tmp1 = and <8 x i16> %a, < i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535>
863 ret <8 x i16> %tmp1
864}
865
866define <8 x i16> @and16imm4s_lsl8(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000867; CHECK-LABEL: and16imm4s_lsl8:
868; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000869 %tmp1 = and <8 x i16> %a, < i16 255, i16 65535, i16 255, i16 65535, i16 255, i16 65535, i16 255, i16 65535>
870 ret <8 x i16> %tmp1
871}
872
873define <8 x i16> @and16imm4s_lsl16(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000874; CHECK-LABEL: and16imm4s_lsl16:
875; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000876 %tmp1 = and <8 x i16> %a, < i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280>
877 ret <8 x i16> %tmp1
878}
879
880define <8 x i16> @and16imm4s_lsl24(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000881; CHECK-LABEL: and16imm4s_lsl24:
882; CHECK: bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000883 %tmp1 = and <8 x i16> %a, < i16 65535, i16 511, i16 65535, i16 511, i16 65535, i16 511, i16 65535, i16 511>
884 ret <8 x i16> %tmp1
885}
886
887define <2 x i64> @and64imm4s_lsl0(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000888; CHECK-LABEL: and64imm4s_lsl0:
889; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000890 %tmp1 = and <2 x i64> %a, < i64 -1095216660736, i64 -1095216660736>
891 ret <2 x i64> %tmp1
892}
893
894define <2 x i64> @and64imm4s_lsl8(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000895; CHECK-LABEL: and64imm4s_lsl8:
896; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000897 %tmp1 = and <2 x i64> %a, < i64 -280375465148161, i64 -280375465148161>
898 ret <2 x i64> %tmp1
899}
900
901define <2 x i64> @and64imm4s_lsl16(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000902; CHECK-LABEL: and64imm4s_lsl16:
903; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000904 %tmp1 = and <2 x i64> %a, < i64 -71776119077928961, i64 -71776119077928961>
905 ret <2 x i64> %tmp1
906}
907
908define <2 x i64> @and64imm4s_lsl24(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000909; CHECK-LABEL: and64imm4s_lsl24:
910; CHECK: bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000911 %tmp1 = and <2 x i64> %a, < i64 144115183814443007, i64 144115183814443007>
912 ret <2 x i64> %tmp1
913}
914
915define <8 x i8> @and8imm4h_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000916; CHECK-LABEL: and8imm4h_lsl0:
917; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000918 %tmp1 = and <8 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
919 ret <8 x i8> %tmp1
920}
921
922define <8 x i8> @and8imm4h_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000923; CHECK-LABEL: and8imm4h_lsl8:
924; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000925 %tmp1 = and <8 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
926 ret <8 x i8> %tmp1
927}
928
929define <2 x i32> @and16imm4h_lsl0(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000930; CHECK-LABEL: and16imm4h_lsl0:
931; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000932 %tmp1 = and <2 x i32> %a, < i32 4278255360, i32 4278255360>
933 ret <2 x i32> %tmp1
934}
935
936define <2 x i32> @and16imm4h_lsl8(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000937; CHECK-LABEL: and16imm4h_lsl8:
938; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000939 %tmp1 = and <2 x i32> %a, < i32 16711935, i32 16711935>
940 ret <2 x i32> %tmp1
941}
942
943define <1 x i64> @and64imm4h_lsl0(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000944; CHECK-LABEL: and64imm4h_lsl0:
945; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000946 %tmp1 = and <1 x i64> %a, < i64 -71777214294589696>
947 ret <1 x i64> %tmp1
948}
949
950define <1 x i64> @and64imm4h_lsl8(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000951; CHECK-LABEL: and64imm4h_lsl8:
952; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000953 %tmp1 = and <1 x i64> %a, < i64 71777214294589695>
954 ret <1 x i64> %tmp1
955}
956
957define <16 x i8> @and8imm8h_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000958; CHECK-LABEL: and8imm8h_lsl0:
959; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000960 %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 ret <16 x i8> %tmp1
962}
963
964define <16 x i8> @and8imm8h_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000965; CHECK-LABEL: and8imm8h_lsl8:
966; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000967 %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 ret <16 x i8> %tmp1
969}
970
971define <4 x i32> @and16imm8h_lsl0(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000972; CHECK-LABEL: and16imm8h_lsl0:
973; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000974 %tmp1 = and <4 x i32> %a, < i32 4278255360, i32 4278255360, i32 4278255360, i32 4278255360>
975 ret <4 x i32> %tmp1
976}
977
978define <4 x i32> @and16imm8h_lsl8(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000979; CHECK-LABEL: and16imm8h_lsl8:
980; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000981 %tmp1 = and <4 x i32> %a, < i32 16711935, i32 16711935, i32 16711935, i32 16711935>
982 ret <4 x i32> %tmp1
983}
984
985define <2 x i64> @and64imm8h_lsl0(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000986; CHECK-LABEL: and64imm8h_lsl0:
987; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000988 %tmp1 = and <2 x i64> %a, < i64 -71777214294589696, i64 -71777214294589696>
989 ret <2 x i64> %tmp1
990}
991
992define <2 x i64> @and64imm8h_lsl8(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000993; CHECK-LABEL: and64imm8h_lsl8:
994; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000995 %tmp1 = and <2 x i64> %a, < i64 71777214294589695, i64 71777214294589695>
996 ret <2 x i64> %tmp1
997}
998
999define <8 x i8> @orr8imm2s_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001000; CHECK-LABEL: orr8imm2s_lsl0:
1001; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001002 %tmp1 = or <8 x i8> %a, < i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0>
1003 ret <8 x i8> %tmp1
1004}
1005
1006define <8 x i8> @orr8imm2s_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001007; CHECK-LABEL: orr8imm2s_lsl8:
1008; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001009 %tmp1 = or <8 x i8> %a, < i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0>
1010 ret <8 x i8> %tmp1
1011}
1012
1013define <8 x i8> @orr8imm2s_lsl16(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001014; CHECK-LABEL: orr8imm2s_lsl16:
1015; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001016 %tmp1 = or <8 x i8> %a, < i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0>
1017 ret <8 x i8> %tmp1
1018}
1019
1020define <8 x i8> @orr8imm2s_lsl24(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001021; CHECK-LABEL: orr8imm2s_lsl24:
1022; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001023 %tmp1 = or <8 x i8> %a, < i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255>
1024 ret <8 x i8> %tmp1
1025}
1026
1027define <4 x i16> @orr16imm2s_lsl0(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001028; CHECK-LABEL: orr16imm2s_lsl0:
1029; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001030 %tmp1 = or <4 x i16> %a, < i16 255, i16 0, i16 255, i16 0>
1031 ret <4 x i16> %tmp1
1032}
1033
1034define <4 x i16> @orr16imm2s_lsl8(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001035; CHECK-LABEL: orr16imm2s_lsl8:
1036; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001037 %tmp1 = or <4 x i16> %a, < i16 65280, i16 0, i16 65280, i16 0>
1038 ret <4 x i16> %tmp1
1039}
1040
1041define <4 x i16> @orr16imm2s_lsl16(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001042; CHECK-LABEL: orr16imm2s_lsl16:
1043; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001044 %tmp1 = or <4 x i16> %a, < i16 0, i16 255, i16 0, i16 255>
1045 ret <4 x i16> %tmp1
1046}
1047
1048define <4 x i16> @orr16imm2s_lsl24(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001049; CHECK-LABEL: orr16imm2s_lsl24:
1050; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001051 %tmp1 = or <4 x i16> %a, < i16 0, i16 65280, i16 0, i16 65280>
1052 ret <4 x i16> %tmp1
1053}
1054
1055define <1 x i64> @orr64imm2s_lsl0(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001056; CHECK-LABEL: orr64imm2s_lsl0:
1057; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001058 %tmp1 = or <1 x i64> %a, < i64 1095216660735>
1059 ret <1 x i64> %tmp1
1060}
1061
1062define <1 x i64> @orr64imm2s_lsl8(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001063; CHECK-LABEL: orr64imm2s_lsl8:
1064; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001065 %tmp1 = or <1 x i64> %a, < i64 280375465148160>
1066 ret <1 x i64> %tmp1
1067}
1068
1069define <1 x i64> @orr64imm2s_lsl16(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001070; CHECK-LABEL: orr64imm2s_lsl16:
1071; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001072 %tmp1 = or <1 x i64> %a, < i64 71776119077928960>
1073 ret <1 x i64> %tmp1
1074}
1075
1076define <1 x i64> @orr64imm2s_lsl24(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001077; CHECK-LABEL: orr64imm2s_lsl24:
1078; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001079 %tmp1 = or <1 x i64> %a, < i64 -72057589759737856>
1080 ret <1 x i64> %tmp1
1081}
1082
1083define <16 x i8> @orr8imm4s_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001084; CHECK-LABEL: orr8imm4s_lsl0:
1085; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001086 %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 ret <16 x i8> %tmp1
1088}
1089
1090define <16 x i8> @orr8imm4s_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001091; CHECK-LABEL: orr8imm4s_lsl8:
1092; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001093 %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 ret <16 x i8> %tmp1
1095}
1096
1097define <16 x i8> @orr8imm4s_lsl16(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001098; CHECK-LABEL: orr8imm4s_lsl16:
1099; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001100 %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 ret <16 x i8> %tmp1
1102}
1103
1104define <16 x i8> @orr8imm4s_lsl24(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001105; CHECK-LABEL: orr8imm4s_lsl24:
1106; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001107 %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 ret <16 x i8> %tmp1
1109}
1110
1111define <8 x i16> @orr16imm4s_lsl0(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001112; CHECK-LABEL: orr16imm4s_lsl0:
1113; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001114 %tmp1 = or <8 x i16> %a, < i16 255, i16 0, i16 255, i16 0, i16 255, i16 0, i16 255, i16 0>
1115 ret <8 x i16> %tmp1
1116}
1117
1118define <8 x i16> @orr16imm4s_lsl8(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001119; CHECK-LABEL: orr16imm4s_lsl8:
1120; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001121 %tmp1 = or <8 x i16> %a, < i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0>
1122 ret <8 x i16> %tmp1
1123}
1124
1125define <8 x i16> @orr16imm4s_lsl16(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001126; CHECK-LABEL: orr16imm4s_lsl16:
1127; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001128 %tmp1 = or <8 x i16> %a, < i16 0, i16 255, i16 0, i16 255, i16 0, i16 255, i16 0, i16 255>
1129 ret <8 x i16> %tmp1
1130}
1131
1132define <8 x i16> @orr16imm4s_lsl24(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001133; CHECK-LABEL: orr16imm4s_lsl24:
1134; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001135 %tmp1 = or <8 x i16> %a, < i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280>
1136 ret <8 x i16> %tmp1
1137}
1138
1139define <2 x i64> @orr64imm4s_lsl0(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001140; CHECK-LABEL: orr64imm4s_lsl0:
1141; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001142 %tmp1 = or <2 x i64> %a, < i64 1095216660735, i64 1095216660735>
1143 ret <2 x i64> %tmp1
1144}
1145
1146define <2 x i64> @orr64imm4s_lsl8(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001147; CHECK-LABEL: orr64imm4s_lsl8:
1148; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001149 %tmp1 = or <2 x i64> %a, < i64 280375465148160, i64 280375465148160>
1150 ret <2 x i64> %tmp1
1151}
1152
1153define <2 x i64> @orr64imm4s_lsl16(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001154; CHECK-LABEL: orr64imm4s_lsl16:
1155; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001156 %tmp1 = or <2 x i64> %a, < i64 71776119077928960, i64 71776119077928960>
1157 ret <2 x i64> %tmp1
1158}
1159
1160define <2 x i64> @orr64imm4s_lsl24(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001161; CHECK-LABEL: orr64imm4s_lsl24:
1162; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001163 %tmp1 = or <2 x i64> %a, < i64 -72057589759737856, i64 -72057589759737856>
1164 ret <2 x i64> %tmp1
1165}
1166
1167define <8 x i8> @orr8imm4h_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001168; CHECK-LABEL: orr8imm4h_lsl0:
1169; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001170 %tmp1 = or <8 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
1171 ret <8 x i8> %tmp1
1172}
1173
1174define <8 x i8> @orr8imm4h_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001175; CHECK-LABEL: orr8imm4h_lsl8:
1176; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001177 %tmp1 = or <8 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
1178 ret <8 x i8> %tmp1
1179}
1180
1181define <2 x i32> @orr16imm4h_lsl0(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001182; CHECK-LABEL: orr16imm4h_lsl0:
1183; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001184 %tmp1 = or <2 x i32> %a, < i32 16711935, i32 16711935>
1185 ret <2 x i32> %tmp1
1186}
1187
1188define <2 x i32> @orr16imm4h_lsl8(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001189; CHECK-LABEL: orr16imm4h_lsl8:
1190; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001191 %tmp1 = or <2 x i32> %a, < i32 4278255360, i32 4278255360>
1192 ret <2 x i32> %tmp1
1193}
1194
1195define <1 x i64> @orr64imm4h_lsl0(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001196; CHECK-LABEL: orr64imm4h_lsl0:
1197; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001198 %tmp1 = or <1 x i64> %a, < i64 71777214294589695>
1199 ret <1 x i64> %tmp1
1200}
1201
1202define <1 x i64> @orr64imm4h_lsl8(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001203; CHECK-LABEL: orr64imm4h_lsl8:
1204; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001205 %tmp1 = or <1 x i64> %a, < i64 -71777214294589696>
1206 ret <1 x i64> %tmp1
1207}
1208
1209define <16 x i8> @orr8imm8h_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001210; CHECK-LABEL: orr8imm8h_lsl0:
1211; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001212 %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 ret <16 x i8> %tmp1
1214}
1215
1216define <16 x i8> @orr8imm8h_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001217; CHECK-LABEL: orr8imm8h_lsl8:
1218; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001219 %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 ret <16 x i8> %tmp1
1221}
1222
1223define <4 x i32> @orr16imm8h_lsl0(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001224; CHECK-LABEL: orr16imm8h_lsl0:
1225; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001226 %tmp1 = or <4 x i32> %a, < i32 16711935, i32 16711935, i32 16711935, i32 16711935>
1227 ret <4 x i32> %tmp1
1228}
1229
1230define <4 x i32> @orr16imm8h_lsl8(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001231; CHECK-LABEL: orr16imm8h_lsl8:
1232; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001233 %tmp1 = or <4 x i32> %a, < i32 4278255360, i32 4278255360, i32 4278255360, i32 4278255360>
1234 ret <4 x i32> %tmp1
1235}
1236
1237define <2 x i64> @orr64imm8h_lsl0(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001238; CHECK-LABEL: orr64imm8h_lsl0:
1239; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001240 %tmp1 = or <2 x i64> %a, < i64 71777214294589695, i64 71777214294589695>
1241 ret <2 x i64> %tmp1
1242}
1243
1244define <2 x i64> @orr64imm8h_lsl8(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001245; CHECK-LABEL: orr64imm8h_lsl8:
1246; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001247 %tmp1 = or <2 x i64> %a, < i64 -71777214294589696, i64 -71777214294589696>
1248 ret <2 x i64> %tmp1
1249}
Tim Northover40e9efd2013-08-01 09:20:35 +00001250