blob: d8f7cc45d16ef75ac83ae17b5e1aed26d4f9ef0e [file] [log] [blame]
Tim Northover40e9efd2013-08-01 09:20:35 +00001; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s
Tim Northover0a44e662014-04-18 09:31:01 +00002; RUN: llc < %s -verify-machineinstrs -mtriple=arm64-none-linux-gnu -mattr=+neon | FileCheck %s
Tim Northover40e9efd2013-08-01 09:20:35 +00003
Tim Northover40e9efd2013-08-01 09:20:35 +00004define <8 x i8> @and8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +00005; CHECK-LABEL: and8xi8:
6; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +00007 %tmp1 = and <8 x i8> %a, %b;
8 ret <8 x i8> %tmp1
9}
10
11define <16 x i8> @and16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000012; CHECK-LABEL: and16xi8:
13; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000014 %tmp1 = and <16 x i8> %a, %b;
15 ret <16 x i8> %tmp1
16}
17
18
19define <8 x i8> @orr8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000020; CHECK-LABEL: orr8xi8:
21; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +000022 %tmp1 = or <8 x i8> %a, %b;
23 ret <8 x i8> %tmp1
24}
25
26define <16 x i8> @orr16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000027; CHECK-LABEL: orr16xi8:
28; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000029 %tmp1 = or <16 x i8> %a, %b;
30 ret <16 x i8> %tmp1
31}
32
33
34define <8 x i8> @xor8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000035; CHECK-LABEL: xor8xi8:
36; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +000037 %tmp1 = xor <8 x i8> %a, %b;
38 ret <8 x i8> %tmp1
39}
40
41define <16 x i8> @xor16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000042; CHECK-LABEL: xor16xi8:
43; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000044 %tmp1 = xor <16 x i8> %a, %b;
45 ret <16 x i8> %tmp1
46}
47
48define <8 x i8> @bsl8xi8_const(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000049; CHECK-LABEL: bsl8xi8_const:
50; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +000051 %tmp1 = and <8 x i8> %a, < i8 -1, i8 -1, i8 0, i8 0, i8 -1, i8 -1, i8 0, i8 0 >
52 %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 +000053 %tmp3 = or <8 x i8> %tmp1, %tmp2
54 ret <8 x i8> %tmp3
55}
56
57define <16 x i8> @bsl16xi8_const(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000058; CHECK-LABEL: bsl16xi8_const:
59; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +000060 %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 >
61 %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 +000062 %tmp3 = or <16 x i8> %tmp1, %tmp2
63 ret <16 x i8> %tmp3
64}
65
66define <8 x i8> @orn8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000067; CHECK-LABEL: orn8xi8:
68; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +000069 %tmp1 = xor <8 x i8> %b, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
70 %tmp2 = or <8 x i8> %a, %tmp1
71 ret <8 x i8> %tmp2
72}
73
74define <16 x i8> @orn16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000075; CHECK-LABEL: orn16xi8:
76; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000077 %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 >
78 %tmp2 = or <16 x i8> %a, %tmp1
79 ret <16 x i8> %tmp2
80}
81
82define <8 x i8> @bic8xi8(<8 x i8> %a, <8 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000083; CHECK-LABEL: bic8xi8:
84; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +000085 %tmp1 = xor <8 x i8> %b, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
86 %tmp2 = and <8 x i8> %a, %tmp1
87 ret <8 x i8> %tmp2
88}
89
90define <16 x i8> @bic16xi8(<16 x i8> %a, <16 x i8> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +000091; CHECK-LABEL: bic16xi8:
92; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +000093 %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 >
94 %tmp2 = and <16 x i8> %a, %tmp1
95 ret <16 x i8> %tmp2
96}
97
98define <2 x i32> @orrimm2s_lsl0(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +000099; CHECK-LABEL: orrimm2s_lsl0:
100; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000101 %tmp1 = or <2 x i32> %a, < i32 255, i32 255>
102 ret <2 x i32> %tmp1
103}
104
105define <2 x i32> @orrimm2s_lsl8(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000106; CHECK-LABEL: orrimm2s_lsl8:
107; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000108 %tmp1 = or <2 x i32> %a, < i32 65280, i32 65280>
109 ret <2 x i32> %tmp1
110}
111
112define <2 x i32> @orrimm2s_lsl16(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000113; CHECK-LABEL: orrimm2s_lsl16:
114; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Tim Northover40e9efd2013-08-01 09:20:35 +0000115 %tmp1 = or <2 x i32> %a, < i32 16711680, i32 16711680>
116 ret <2 x i32> %tmp1
117}
118
119define <2 x i32> @orrimm2s_lsl24(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000120; CHECK-LABEL: orrimm2s_lsl24:
121; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
Tim Northover40e9efd2013-08-01 09:20:35 +0000122 %tmp1 = or <2 x i32> %a, < i32 4278190080, i32 4278190080>
123 ret <2 x i32> %tmp1
124}
125
126define <4 x i32> @orrimm4s_lsl0(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000127; CHECK-LABEL: orrimm4s_lsl0:
128; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000129 %tmp1 = or <4 x i32> %a, < i32 255, i32 255, i32 255, i32 255>
130 ret <4 x i32> %tmp1
131}
132
133define <4 x i32> @orrimm4s_lsl8(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000134; CHECK-LABEL: orrimm4s_lsl8:
135; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000136 %tmp1 = or <4 x i32> %a, < i32 65280, i32 65280, i32 65280, i32 65280>
137 ret <4 x i32> %tmp1
138}
139
140define <4 x i32> @orrimm4s_lsl16(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000141; CHECK-LABEL: orrimm4s_lsl16:
142; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Tim Northover40e9efd2013-08-01 09:20:35 +0000143 %tmp1 = or <4 x i32> %a, < i32 16711680, i32 16711680, i32 16711680, i32 16711680>
144 ret <4 x i32> %tmp1
145}
146
147define <4 x i32> @orrimm4s_lsl24(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000148; CHECK-LABEL: orrimm4s_lsl24:
149; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
Tim Northover40e9efd2013-08-01 09:20:35 +0000150 %tmp1 = or <4 x i32> %a, < i32 4278190080, i32 4278190080, i32 4278190080, i32 4278190080>
151 ret <4 x i32> %tmp1
152}
153
154define <4 x i16> @orrimm4h_lsl0(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000155; CHECK-LABEL: orrimm4h_lsl0:
156; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000157 %tmp1 = or <4 x i16> %a, < i16 255, i16 255, i16 255, i16 255 >
158 ret <4 x i16> %tmp1
159}
160
161define <4 x i16> @orrimm4h_lsl8(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000162; CHECK-LABEL: orrimm4h_lsl8:
163; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000164 %tmp1 = or <4 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280 >
165 ret <4 x i16> %tmp1
166}
167
168define <8 x i16> @orrimm8h_lsl0(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000169; CHECK-LABEL: orrimm8h_lsl0:
170; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000171 %tmp1 = or <8 x i16> %a, < i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255 >
172 ret <8 x i16> %tmp1
173}
174
175define <8 x i16> @orrimm8h_lsl8(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000176; CHECK-LABEL: orrimm8h_lsl8:
177; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000178 %tmp1 = or <8 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280 >
179 ret <8 x i16> %tmp1
180}
181
182define <2 x i32> @bicimm2s_lsl0(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000183; CHECK-LABEL: bicimm2s_lsl0:
184; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000185 %tmp1 = and <2 x i32> %a, < i32 4294967279, i32 4294967279 >
186 ret <2 x i32> %tmp1
187}
188
189define <2 x i32> @bicimm2s_lsl8(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000190; CHECK-LABEL: bicimm2s_lsl8:
191; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000192 %tmp1 = and <2 x i32> %a, < i32 4294963199, i32 4294963199 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000193 ret <2 x i32> %tmp1
194}
195
196define <2 x i32> @bicimm2s_lsl16(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000197; CHECK-LABEL: bicimm2s_lsl16:
198; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000199 %tmp1 = and <2 x i32> %a, < i32 4293918719, i32 4293918719 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000200 ret <2 x i32> %tmp1
201}
202
203define <2 x i32> @bicimm2s_lsl124(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000204; CHECK-LABEL: bicimm2s_lsl124:
205; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000206 %tmp1 = and <2 x i32> %a, < i32 4026531839, i32 4026531839>
Tim Northover40e9efd2013-08-01 09:20:35 +0000207 ret <2 x i32> %tmp1
208}
209
210define <4 x i32> @bicimm4s_lsl0(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000211; CHECK-LABEL: bicimm4s_lsl0:
212; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000213 %tmp1 = and <4 x i32> %a, < i32 4294967279, i32 4294967279, i32 4294967279, i32 4294967279 >
214 ret <4 x i32> %tmp1
215}
216
217define <4 x i32> @bicimm4s_lsl8(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000218; CHECK-LABEL: bicimm4s_lsl8:
219; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000220 %tmp1 = and <4 x i32> %a, < i32 4294963199, i32 4294963199, i32 4294963199, i32 4294963199 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000221 ret <4 x i32> %tmp1
222}
223
224define <4 x i32> @bicimm4s_lsl16(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000225; CHECK-LABEL: bicimm4s_lsl16:
226; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000227 %tmp1 = and <4 x i32> %a, < i32 4293918719, i32 4293918719, i32 4293918719, i32 4293918719 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000228 ret <4 x i32> %tmp1
229}
230
231define <4 x i32> @bicimm4s_lsl124(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000232; CHECK-LABEL: bicimm4s_lsl124:
233; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000234 %tmp1 = and <4 x i32> %a, < i32 4026531839, i32 4026531839, i32 4026531839, i32 4026531839>
Tim Northover40e9efd2013-08-01 09:20:35 +0000235 ret <4 x i32> %tmp1
236}
237
238define <4 x i16> @bicimm4h_lsl0_a(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000239; CHECK-LABEL: bicimm4h_lsl0_a:
240; CHECK: bic {{v[0-9]+}}.4h, #{{0x10|16}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000241 %tmp1 = and <4 x i16> %a, < i16 4294967279, i16 4294967279, i16 4294967279, i16 4294967279 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000242 ret <4 x i16> %tmp1
243}
244
245define <4 x i16> @bicimm4h_lsl0_b(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000246; CHECK-LABEL: bicimm4h_lsl0_b:
247; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000248 %tmp1 = and <4 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280 >
249 ret <4 x i16> %tmp1
250}
251
252define <4 x i16> @bicimm4h_lsl8_a(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000253; CHECK-LABEL: bicimm4h_lsl8_a:
254; CHECK: bic {{v[0-9]+}}.4h, #{{0x10|16}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000255 %tmp1 = and <4 x i16> %a, < i16 4294963199, i16 4294963199, i16 4294963199, i16 4294963199>
Tim Northover40e9efd2013-08-01 09:20:35 +0000256 ret <4 x i16> %tmp1
257}
258
259define <4 x i16> @bicimm4h_lsl8_b(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000260; CHECK-LABEL: bicimm4h_lsl8_b:
261; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000262 %tmp1 = and <4 x i16> %a, < i16 255, i16 255, i16 255, i16 255>
263 ret <4 x i16> %tmp1
264}
265
266define <8 x i16> @bicimm8h_lsl0_a(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000267; CHECK-LABEL: bicimm8h_lsl0_a:
268; CHECK: bic {{v[0-9]+}}.8h, #{{0x10|16}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000269 %tmp1 = and <8 x i16> %a, < i16 4294967279, i16 4294967279, i16 4294967279, i16 4294967279,
270 i16 4294967279, i16 4294967279, i16 4294967279, i16 4294967279 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000271 ret <8 x i16> %tmp1
272}
273
274define <8 x i16> @bicimm8h_lsl0_b(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000275; CHECK-LABEL: bicimm8h_lsl0_b:
276; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000277 %tmp1 = and <8 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280 >
278 ret <8 x i16> %tmp1
279}
280
281define <8 x i16> @bicimm8h_lsl8_a(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000282; CHECK-LABEL: bicimm8h_lsl8_a:
283; CHECK: bic {{v[0-9]+}}.8h, #{{0x10|16}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000284 %tmp1 = and <8 x i16> %a, < i16 4294963199, i16 4294963199, i16 4294963199, i16 4294963199,
285 i16 4294963199, i16 4294963199, i16 4294963199, i16 4294963199>
Tim Northover40e9efd2013-08-01 09:20:35 +0000286 ret <8 x i16> %tmp1
287}
288
289define <8 x i16> @bicimm8h_lsl8_b(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000290; CHECK-LABEL: bicimm8h_lsl8_b:
291; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000292 %tmp1 = and <8 x i16> %a, < i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255>
293 ret <8 x i16> %tmp1
294}
295
296define <2 x i32> @and2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000297; CHECK-LABEL: and2xi32:
298; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000299 %tmp1 = and <2 x i32> %a, %b;
300 ret <2 x i32> %tmp1
301}
302
303define <4 x i16> @and4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000304; CHECK-LABEL: and4xi16:
305; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000306 %tmp1 = and <4 x i16> %a, %b;
307 ret <4 x i16> %tmp1
308}
309
310define <1 x i64> @and1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000311; CHECK-LABEL: and1xi64:
312; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000313 %tmp1 = and <1 x i64> %a, %b;
314 ret <1 x i64> %tmp1
315}
316
317define <4 x i32> @and4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000318; CHECK-LABEL: and4xi32:
319; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000320 %tmp1 = and <4 x i32> %a, %b;
321 ret <4 x i32> %tmp1
322}
323
324define <8 x i16> @and8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000325; CHECK-LABEL: and8xi16:
326; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000327 %tmp1 = and <8 x i16> %a, %b;
328 ret <8 x i16> %tmp1
329}
330
331define <2 x i64> @and2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000332; CHECK-LABEL: and2xi64:
333; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000334 %tmp1 = and <2 x i64> %a, %b;
335 ret <2 x i64> %tmp1
336}
337
338define <2 x i32> @orr2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000339; CHECK-LABEL: orr2xi32:
340; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000341 %tmp1 = or <2 x i32> %a, %b;
342 ret <2 x i32> %tmp1
343}
344
345define <4 x i16> @orr4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000346; CHECK-LABEL: orr4xi16:
347; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000348 %tmp1 = or <4 x i16> %a, %b;
349 ret <4 x i16> %tmp1
350}
351
352define <1 x i64> @orr1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000353; CHECK-LABEL: orr1xi64:
354; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000355 %tmp1 = or <1 x i64> %a, %b;
356 ret <1 x i64> %tmp1
357}
358
359define <4 x i32> @orr4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000360; CHECK-LABEL: orr4xi32:
361; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000362 %tmp1 = or <4 x i32> %a, %b;
363 ret <4 x i32> %tmp1
364}
365
366define <8 x i16> @orr8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000367; CHECK-LABEL: orr8xi16:
368; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000369 %tmp1 = or <8 x i16> %a, %b;
370 ret <8 x i16> %tmp1
371}
372
373define <2 x i64> @orr2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000374; CHECK-LABEL: orr2xi64:
375; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000376 %tmp1 = or <2 x i64> %a, %b;
377 ret <2 x i64> %tmp1
378}
379
380define <2 x i32> @eor2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000381; CHECK-LABEL: eor2xi32:
382; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000383 %tmp1 = xor <2 x i32> %a, %b;
384 ret <2 x i32> %tmp1
385}
386
387define <4 x i16> @eor4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000388; CHECK-LABEL: eor4xi16:
389; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000390 %tmp1 = xor <4 x i16> %a, %b;
391 ret <4 x i16> %tmp1
392}
393
394define <1 x i64> @eor1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000395; CHECK-LABEL: eor1xi64:
396; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000397 %tmp1 = xor <1 x i64> %a, %b;
398 ret <1 x i64> %tmp1
399}
400
401define <4 x i32> @eor4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000402; CHECK-LABEL: eor4xi32:
403; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000404 %tmp1 = xor <4 x i32> %a, %b;
405 ret <4 x i32> %tmp1
406}
407
408define <8 x i16> @eor8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000409; CHECK-LABEL: eor8xi16:
410; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000411 %tmp1 = xor <8 x i16> %a, %b;
412 ret <8 x i16> %tmp1
413}
414
415define <2 x i64> @eor2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000416; CHECK-LABEL: eor2xi64:
417; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000418 %tmp1 = xor <2 x i64> %a, %b;
419 ret <2 x i64> %tmp1
420}
421
422
423define <2 x i32> @bic2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000424; CHECK-LABEL: bic2xi32:
425; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000426 %tmp1 = xor <2 x i32> %b, < i32 -1, i32 -1 >
427 %tmp2 = and <2 x i32> %a, %tmp1
428 ret <2 x i32> %tmp2
429}
430
431define <4 x i16> @bic4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000432; CHECK-LABEL: bic4xi16:
433; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000434 %tmp1 = xor <4 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1 >
435 %tmp2 = and <4 x i16> %a, %tmp1
436 ret <4 x i16> %tmp2
437}
438
439define <1 x i64> @bic1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000440; CHECK-LABEL: bic1xi64:
441; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000442 %tmp1 = xor <1 x i64> %b, < i64 -1>
443 %tmp2 = and <1 x i64> %a, %tmp1
444 ret <1 x i64> %tmp2
445}
446
447define <4 x i32> @bic4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000448; CHECK-LABEL: bic4xi32:
449; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000450 %tmp1 = xor <4 x i32> %b, < i32 -1, i32 -1, i32 -1, i32 -1>
451 %tmp2 = and <4 x i32> %a, %tmp1
452 ret <4 x i32> %tmp2
453}
454
455define <8 x i16> @bic8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000456; CHECK-LABEL: bic8xi16:
457; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000458 %tmp1 = xor <8 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1, i16 -1, i16 -1, i16 -1, i16 -1 >
459 %tmp2 = and <8 x i16> %a, %tmp1
460 ret <8 x i16> %tmp2
461}
462
463define <2 x i64> @bic2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000464; CHECK-LABEL: bic2xi64:
465; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000466 %tmp1 = xor <2 x i64> %b, < i64 -1, i64 -1>
467 %tmp2 = and <2 x i64> %a, %tmp1
468 ret <2 x i64> %tmp2
469}
470
471define <2 x i32> @orn2xi32(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000472; CHECK-LABEL: orn2xi32:
473; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000474 %tmp1 = xor <2 x i32> %b, < i32 -1, i32 -1 >
475 %tmp2 = or <2 x i32> %a, %tmp1
476 ret <2 x i32> %tmp2
477}
478
479define <4 x i16> @orn4xi16(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000480; CHECK-LABEL: orn4xi16:
481; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000482 %tmp1 = xor <4 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1 >
483 %tmp2 = or <4 x i16> %a, %tmp1
484 ret <4 x i16> %tmp2
485}
486
487define <1 x i64> @orn1xi64(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000488; CHECK-LABEL: orn1xi64:
489; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000490 %tmp1 = xor <1 x i64> %b, < i64 -1>
491 %tmp2 = or <1 x i64> %a, %tmp1
492 ret <1 x i64> %tmp2
493}
494
495define <4 x i32> @orn4xi32(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000496; CHECK-LABEL: orn4xi32:
497; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000498 %tmp1 = xor <4 x i32> %b, < i32 -1, i32 -1, i32 -1, i32 -1>
499 %tmp2 = or <4 x i32> %a, %tmp1
500 ret <4 x i32> %tmp2
501}
502
503define <8 x i16> @orn8xi16(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000504; CHECK-LABEL: orn8xi16:
505; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000506 %tmp1 = xor <8 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1, i16 -1, i16 -1, i16 -1, i16 -1 >
507 %tmp2 = or <8 x i16> %a, %tmp1
508 ret <8 x i16> %tmp2
509}
510
511define <2 x i64> @orn2xi64(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000512; CHECK-LABEL: orn2xi64:
513; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000514 %tmp1 = xor <2 x i64> %b, < i64 -1, i64 -1>
515 %tmp2 = or <2 x i64> %a, %tmp1
516 ret <2 x i64> %tmp2
517}
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000518
Tim Northover40e9efd2013-08-01 09:20:35 +0000519define <2 x i32> @bsl2xi32_const(<2 x i32> %a, <2 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000520; CHECK-LABEL: bsl2xi32_const:
521; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000522 %tmp1 = and <2 x i32> %a, < i32 -1, i32 0 >
523 %tmp2 = and <2 x i32> %b, < i32 0, i32 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000524 %tmp3 = or <2 x i32> %tmp1, %tmp2
525 ret <2 x i32> %tmp3
526}
527
528
529define <4 x i16> @bsl4xi16_const(<4 x i16> %a, <4 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000530; CHECK-LABEL: bsl4xi16_const:
531; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000532 %tmp1 = and <4 x i16> %a, < i16 -1, i16 0, i16 -1,i16 0 >
533 %tmp2 = and <4 x i16> %b, < i16 0, i16 -1,i16 0, i16 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000534 %tmp3 = or <4 x i16> %tmp1, %tmp2
535 ret <4 x i16> %tmp3
536}
537
538define <1 x i64> @bsl1xi64_const(<1 x i64> %a, <1 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000539; CHECK-LABEL: bsl1xi64_const:
540; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000541 %tmp1 = and <1 x i64> %a, < i64 -16 >
542 %tmp2 = and <1 x i64> %b, < i64 15 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000543 %tmp3 = or <1 x i64> %tmp1, %tmp2
544 ret <1 x i64> %tmp3
545}
546
547define <4 x i32> @bsl4xi32_const(<4 x i32> %a, <4 x i32> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000548; CHECK-LABEL: bsl4xi32_const:
549; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000550 %tmp1 = and <4 x i32> %a, < i32 -1, i32 0, i32 -1, i32 0 >
551 %tmp2 = and <4 x i32> %b, < i32 0, i32 -1, i32 0, i32 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000552 %tmp3 = or <4 x i32> %tmp1, %tmp2
553 ret <4 x i32> %tmp3
554}
555
556define <8 x i16> @bsl8xi16_const(<8 x i16> %a, <8 x i16> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000557; CHECK-LABEL: bsl8xi16_const:
558; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000559 %tmp1 = and <8 x i16> %a, < i16 -1, i16 -1, i16 0,i16 0, i16 -1, i16 -1, i16 0,i16 0 >
560 %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 +0000561 %tmp3 = or <8 x i16> %tmp1, %tmp2
562 ret <8 x i16> %tmp3
563}
564
565define <2 x i64> @bsl2xi64_const(<2 x i64> %a, <2 x i64> %b) {
Tim Northover0a44e662014-04-18 09:31:01 +0000566; CHECK-LABEL: bsl2xi64_const:
567; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Andrea Di Biagio23df4e42014-01-08 18:33:04 +0000568 %tmp1 = and <2 x i64> %a, < i64 -1, i64 0 >
569 %tmp2 = and <2 x i64> %b, < i64 0, i64 -1 >
Tim Northover40e9efd2013-08-01 09:20:35 +0000570 %tmp3 = or <2 x i64> %tmp1, %tmp2
571 ret <2 x i64> %tmp3
572}
573
574
575define <8 x i8> @bsl8xi8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000576; CHECK-LABEL: bsl8xi8:
577; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000578 %1 = and <8 x i8> %v1, %v2
579 %2 = xor <8 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
580 %3 = and <8 x i8> %2, %v3
581 %4 = or <8 x i8> %1, %3
582 ret <8 x i8> %4
583}
584
585define <4 x i16> @bsl4xi16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000586; CHECK-LABEL: bsl4xi16:
587; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000588 %1 = and <4 x i16> %v1, %v2
589 %2 = xor <4 x i16> %v1, <i16 -1, i16 -1, i16 -1, i16 -1>
590 %3 = and <4 x i16> %2, %v3
591 %4 = or <4 x i16> %1, %3
592 ret <4 x i16> %4
593}
594
595define <2 x i32> @bsl2xi32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000596; CHECK-LABEL: bsl2xi32:
597; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000598 %1 = and <2 x i32> %v1, %v2
599 %2 = xor <2 x i32> %v1, <i32 -1, i32 -1>
600 %3 = and <2 x i32> %2, %v3
601 %4 = or <2 x i32> %1, %3
602 ret <2 x i32> %4
603}
604
605define <1 x i64> @bsl1xi64(<1 x i64> %v1, <1 x i64> %v2, <1 x i64> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000606; CHECK-LABEL: bsl1xi64:
607; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Tim Northover40e9efd2013-08-01 09:20:35 +0000608 %1 = and <1 x i64> %v1, %v2
609 %2 = xor <1 x i64> %v1, <i64 -1>
610 %3 = and <1 x i64> %2, %v3
611 %4 = or <1 x i64> %1, %3
612 ret <1 x i64> %4
613}
614
615define <16 x i8> @bsl16xi8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000616; CHECK-LABEL: bsl16xi8:
617; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000618 %1 = and <16 x i8> %v1, %v2
619 %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>
620 %3 = and <16 x i8> %2, %v3
621 %4 = or <16 x i8> %1, %3
622 ret <16 x i8> %4
623}
624
625define <8 x i16> @bsl8xi16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000626; CHECK-LABEL: bsl8xi16:
627; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000628 %1 = and <8 x i16> %v1, %v2
629 %2 = xor <8 x i16> %v1, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
630 %3 = and <8 x i16> %2, %v3
631 %4 = or <8 x i16> %1, %3
632 ret <8 x i16> %4
633}
634
635define <4 x i32> @bsl4xi32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000636; CHECK-LABEL: bsl4xi32:
637; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000638 %1 = and <4 x i32> %v1, %v2
639 %2 = xor <4 x i32> %v1, <i32 -1, i32 -1, i32 -1, i32 -1>
640 %3 = and <4 x i32> %2, %v3
641 %4 = or <4 x i32> %1, %3
642 ret <4 x i32> %4
643}
644
Kevin Qin5cd73c92014-01-06 02:26:10 +0000645define <8 x i8> @vselect_v8i8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000646; CHECK-LABEL: vselect_v8i8:
647; CHECK: movi {{d[0-9]+}}, #0x{{0*}}ffff
648; 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 +0000649 %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>
650 ret <8 x i8> %b
651}
652
653define <4 x i16> @vselect_v4i16(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000654; CHECK-LABEL: vselect_v4i16:
655; CHECK: movi {{d[0-9]+}}, #0x{{0*}}ffff
656; 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 +0000657 %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>
658 ret <4 x i16> %b
659}
660
661define <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 +0000662; CHECK-LABEL: vselect_cmp_ne:
663; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
664; CHECK-NEXT: not {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
665; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000666 %cmp = icmp ne <8 x i8> %a, %b
667 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
668 ret <8 x i8> %d
669}
670
671define <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 +0000672; CHECK-LABEL: vselect_cmp_eq:
673; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
674; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000675 %cmp = icmp eq <8 x i8> %a, %b
676 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
677 ret <8 x i8> %d
678}
679
680define <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 +0000681; CHECK-LABEL: vselect_cmpz_ne:
682; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
683; CHECK-NEXT: not {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
684; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000685 %cmp = icmp ne <8 x i8> %a, zeroinitializer
686 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
687 ret <8 x i8> %d
688}
689
690define <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 +0000691; CHECK-LABEL: vselect_cmpz_eq:
692; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
693; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000694 %cmp = icmp eq <8 x i8> %a, zeroinitializer
695 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c
696 ret <8 x i8> %d
697}
698
699define <8 x i8> @vselect_tst(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
Tim Northover0a44e662014-04-18 09:31:01 +0000700; CHECK-LABEL: vselect_tst:
701; CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
702; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
Kevin Qin5cd73c92014-01-06 02:26:10 +0000703 %tmp3 = and <8 x i8> %a, %b
704 %tmp4 = icmp ne <8 x i8> %tmp3, zeroinitializer
705 %d = select <8 x i1> %tmp4, <8 x i8> %b, <8 x i8> %c
706 ret <8 x i8> %d
707}
708
Tim Northover40e9efd2013-08-01 09:20:35 +0000709define <2 x i64> @bsl2xi64(<2 x i64> %v1, <2 x i64> %v2, <2 x i64> %v3) {
Tim Northover0a44e662014-04-18 09:31:01 +0000710; CHECK-LABEL: bsl2xi64:
711; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
Tim Northover40e9efd2013-08-01 09:20:35 +0000712 %1 = and <2 x i64> %v1, %v2
713 %2 = xor <2 x i64> %v1, <i64 -1, i64 -1>
714 %3 = and <2 x i64> %2, %v3
715 %4 = or <2 x i64> %1, %3
716 ret <2 x i64> %4
717}
718
719define <8 x i8> @orrimm8b_as_orrimm4h_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000720; CHECK-LABEL: orrimm8b_as_orrimm4h_lsl0:
721; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000722 %val = or <8 x i8> %a, <i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
723 ret <8 x i8> %val
724}
725
726define <8 x i8> @orrimm8b_as_orimm4h_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000727; CHECK-LABEL: orrimm8b_as_orimm4h_lsl8:
728; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000729 %val = or <8 x i8> %a, <i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
730 ret <8 x i8> %val
731}
732
733define <16 x i8> @orimm16b_as_orrimm8h_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000734; CHECK-LABEL: orimm16b_as_orrimm8h_lsl0:
735; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Tim Northover40e9efd2013-08-01 09:20:35 +0000736 %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>
737 ret <16 x i8> %val
738}
739
740define <16 x i8> @orimm16b_as_orrimm8h_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000741; CHECK-LABEL: orimm16b_as_orrimm8h_lsl8:
742; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Tim Northover40e9efd2013-08-01 09:20:35 +0000743 %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>
744 ret <16 x i8> %val
745}
746
Kevin Qincfa41a22014-01-07 05:10:47 +0000747define <8 x i8> @and8imm2s_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000748; CHECK-LABEL: and8imm2s_lsl0:
749; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000750 %tmp1 = and <8 x i8> %a, < i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255>
751 ret <8 x i8> %tmp1
752}
753
754define <8 x i8> @and8imm2s_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000755; CHECK-LABEL: and8imm2s_lsl8:
756; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000757 %tmp1 = and <8 x i8> %a, < i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255>
758 ret <8 x i8> %tmp1
759}
760
761define <8 x i8> @and8imm2s_lsl16(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000762; CHECK-LABEL: and8imm2s_lsl16:
763; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000764 %tmp1 = and <8 x i8> %a, < i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255>
765 ret <8 x i8> %tmp1
766}
767
768define <8 x i8> @and8imm2s_lsl24(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000769; CHECK-LABEL: and8imm2s_lsl24:
770; CHECK: bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000771 %tmp1 = and <8 x i8> %a, < i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1>
772 ret <8 x i8> %tmp1
773}
774
775define <4 x i16> @and16imm2s_lsl0(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000776; CHECK-LABEL: and16imm2s_lsl0:
777; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000778 %tmp1 = and <4 x i16> %a, < i16 65280, i16 65535, i16 65280, i16 65535>
779 ret <4 x i16> %tmp1
780}
781
782define <4 x i16> @and16imm2s_lsl8(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000783; CHECK-LABEL: and16imm2s_lsl8:
784; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000785 %tmp1 = and <4 x i16> %a, < i16 255, i16 65535, i16 255, i16 65535>
786 ret <4 x i16> %tmp1
787}
788
789define <4 x i16> @and16imm2s_lsl16(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000790; CHECK-LABEL: and16imm2s_lsl16:
791; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000792 %tmp1 = and <4 x i16> %a, < i16 65535, i16 65280, i16 65535, i16 65280>
793 ret <4 x i16> %tmp1
794}
795
796define <4 x i16> @and16imm2s_lsl24(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000797; CHECK-LABEL: and16imm2s_lsl24:
798; CHECK: bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000799 %tmp1 = and <4 x i16> %a, < i16 65535, i16 511, i16 65535, i16 511>
800 ret <4 x i16> %tmp1
801}
802
803
804define <1 x i64> @and64imm2s_lsl0(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000805; CHECK-LABEL: and64imm2s_lsl0:
806; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000807 %tmp1 = and <1 x i64> %a, < i64 -1095216660736>
808 ret <1 x i64> %tmp1
809}
810
811define <1 x i64> @and64imm2s_lsl8(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000812; CHECK-LABEL: and64imm2s_lsl8:
813; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000814 %tmp1 = and <1 x i64> %a, < i64 -280375465148161>
815 ret <1 x i64> %tmp1
816}
817
818define <1 x i64> @and64imm2s_lsl16(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000819; CHECK-LABEL: and64imm2s_lsl16:
820; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000821 %tmp1 = and <1 x i64> %a, < i64 -71776119077928961>
822 ret <1 x i64> %tmp1
823}
824
825define <1 x i64> @and64imm2s_lsl24(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000826; CHECK-LABEL: and64imm2s_lsl24:
827; CHECK: bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000828 %tmp1 = and <1 x i64> %a, < i64 144115183814443007>
829 ret <1 x i64> %tmp1
830}
831
832define <16 x i8> @and8imm4s_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000833; CHECK-LABEL: and8imm4s_lsl0:
834; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000835 %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>
836 ret <16 x i8> %tmp1
837}
838
839define <16 x i8> @and8imm4s_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000840; CHECK-LABEL: and8imm4s_lsl8:
841; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000842 %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>
843 ret <16 x i8> %tmp1
844}
845
846define <16 x i8> @and8imm4s_lsl16(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000847; CHECK-LABEL: and8imm4s_lsl16:
848; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000849 %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>
850 ret <16 x i8> %tmp1
851}
852
853define <16 x i8> @and8imm4s_lsl24(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000854; CHECK-LABEL: and8imm4s_lsl24:
855; CHECK: bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000856 %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>
857 ret <16 x i8> %tmp1
858}
859
860define <8 x i16> @and16imm4s_lsl0(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000861; CHECK-LABEL: and16imm4s_lsl0:
862; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000863 %tmp1 = and <8 x i16> %a, < i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535>
864 ret <8 x i16> %tmp1
865}
866
867define <8 x i16> @and16imm4s_lsl8(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000868; CHECK-LABEL: and16imm4s_lsl8:
869; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000870 %tmp1 = and <8 x i16> %a, < i16 255, i16 65535, i16 255, i16 65535, i16 255, i16 65535, i16 255, i16 65535>
871 ret <8 x i16> %tmp1
872}
873
874define <8 x i16> @and16imm4s_lsl16(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000875; CHECK-LABEL: and16imm4s_lsl16:
876; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000877 %tmp1 = and <8 x i16> %a, < i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280>
878 ret <8 x i16> %tmp1
879}
880
881define <8 x i16> @and16imm4s_lsl24(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000882; CHECK-LABEL: and16imm4s_lsl24:
883; CHECK: bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000884 %tmp1 = and <8 x i16> %a, < i16 65535, i16 511, i16 65535, i16 511, i16 65535, i16 511, i16 65535, i16 511>
885 ret <8 x i16> %tmp1
886}
887
888define <2 x i64> @and64imm4s_lsl0(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000889; CHECK-LABEL: and64imm4s_lsl0:
890; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000891 %tmp1 = and <2 x i64> %a, < i64 -1095216660736, i64 -1095216660736>
892 ret <2 x i64> %tmp1
893}
894
895define <2 x i64> @and64imm4s_lsl8(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000896; CHECK-LABEL: and64imm4s_lsl8:
897; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000898 %tmp1 = and <2 x i64> %a, < i64 -280375465148161, i64 -280375465148161>
899 ret <2 x i64> %tmp1
900}
901
902define <2 x i64> @and64imm4s_lsl16(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000903; CHECK-LABEL: and64imm4s_lsl16:
904; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +0000905 %tmp1 = and <2 x i64> %a, < i64 -71776119077928961, i64 -71776119077928961>
906 ret <2 x i64> %tmp1
907}
908
909define <2 x i64> @and64imm4s_lsl24(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000910; CHECK-LABEL: and64imm4s_lsl24:
911; CHECK: bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +0000912 %tmp1 = and <2 x i64> %a, < i64 144115183814443007, i64 144115183814443007>
913 ret <2 x i64> %tmp1
914}
915
916define <8 x i8> @and8imm4h_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000917; CHECK-LABEL: and8imm4h_lsl0:
918; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000919 %tmp1 = and <8 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
920 ret <8 x i8> %tmp1
921}
922
923define <8 x i8> @and8imm4h_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000924; CHECK-LABEL: and8imm4h_lsl8:
925; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000926 %tmp1 = and <8 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
927 ret <8 x i8> %tmp1
928}
929
930define <2 x i32> @and16imm4h_lsl0(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000931; CHECK-LABEL: and16imm4h_lsl0:
932; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000933 %tmp1 = and <2 x i32> %a, < i32 4278255360, i32 4278255360>
934 ret <2 x i32> %tmp1
935}
936
937define <2 x i32> @and16imm4h_lsl8(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000938; CHECK-LABEL: and16imm4h_lsl8:
939; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000940 %tmp1 = and <2 x i32> %a, < i32 16711935, i32 16711935>
941 ret <2 x i32> %tmp1
942}
943
944define <1 x i64> @and64imm4h_lsl0(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000945; CHECK-LABEL: and64imm4h_lsl0:
946; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000947 %tmp1 = and <1 x i64> %a, < i64 -71777214294589696>
948 ret <1 x i64> %tmp1
949}
950
951define <1 x i64> @and64imm4h_lsl8(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000952; CHECK-LABEL: and64imm4h_lsl8:
953; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000954 %tmp1 = and <1 x i64> %a, < i64 71777214294589695>
955 ret <1 x i64> %tmp1
956}
957
958define <16 x i8> @and8imm8h_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000959; CHECK-LABEL: and8imm8h_lsl0:
960; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000961 %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 >
962 ret <16 x i8> %tmp1
963}
964
965define <16 x i8> @and8imm8h_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000966; CHECK-LABEL: and8imm8h_lsl8:
967; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000968 %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 >
969 ret <16 x i8> %tmp1
970}
971
972define <4 x i32> @and16imm8h_lsl0(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000973; CHECK-LABEL: and16imm8h_lsl0:
974; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000975 %tmp1 = and <4 x i32> %a, < i32 4278255360, i32 4278255360, i32 4278255360, i32 4278255360>
976 ret <4 x i32> %tmp1
977}
978
979define <4 x i32> @and16imm8h_lsl8(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000980; CHECK-LABEL: and16imm8h_lsl8:
981; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000982 %tmp1 = and <4 x i32> %a, < i32 16711935, i32 16711935, i32 16711935, i32 16711935>
983 ret <4 x i32> %tmp1
984}
985
986define <2 x i64> @and64imm8h_lsl0(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000987; CHECK-LABEL: and64imm8h_lsl0:
988; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +0000989 %tmp1 = and <2 x i64> %a, < i64 -71777214294589696, i64 -71777214294589696>
990 ret <2 x i64> %tmp1
991}
992
993define <2 x i64> @and64imm8h_lsl8(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +0000994; CHECK-LABEL: and64imm8h_lsl8:
995; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +0000996 %tmp1 = and <2 x i64> %a, < i64 71777214294589695, i64 71777214294589695>
997 ret <2 x i64> %tmp1
998}
999
1000define <8 x i8> @orr8imm2s_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001001; CHECK-LABEL: orr8imm2s_lsl0:
1002; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001003 %tmp1 = or <8 x i8> %a, < i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0>
1004 ret <8 x i8> %tmp1
1005}
1006
1007define <8 x i8> @orr8imm2s_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001008; CHECK-LABEL: orr8imm2s_lsl8:
1009; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001010 %tmp1 = or <8 x i8> %a, < i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0>
1011 ret <8 x i8> %tmp1
1012}
1013
1014define <8 x i8> @orr8imm2s_lsl16(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001015; CHECK-LABEL: orr8imm2s_lsl16:
1016; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001017 %tmp1 = or <8 x i8> %a, < i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0>
1018 ret <8 x i8> %tmp1
1019}
1020
1021define <8 x i8> @orr8imm2s_lsl24(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001022; CHECK-LABEL: orr8imm2s_lsl24:
1023; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001024 %tmp1 = or <8 x i8> %a, < i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255>
1025 ret <8 x i8> %tmp1
1026}
1027
1028define <4 x i16> @orr16imm2s_lsl0(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001029; CHECK-LABEL: orr16imm2s_lsl0:
1030; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001031 %tmp1 = or <4 x i16> %a, < i16 255, i16 0, i16 255, i16 0>
1032 ret <4 x i16> %tmp1
1033}
1034
1035define <4 x i16> @orr16imm2s_lsl8(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001036; CHECK-LABEL: orr16imm2s_lsl8:
1037; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001038 %tmp1 = or <4 x i16> %a, < i16 65280, i16 0, i16 65280, i16 0>
1039 ret <4 x i16> %tmp1
1040}
1041
1042define <4 x i16> @orr16imm2s_lsl16(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001043; CHECK-LABEL: orr16imm2s_lsl16:
1044; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001045 %tmp1 = or <4 x i16> %a, < i16 0, i16 255, i16 0, i16 255>
1046 ret <4 x i16> %tmp1
1047}
1048
1049define <4 x i16> @orr16imm2s_lsl24(<4 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001050; CHECK-LABEL: orr16imm2s_lsl24:
1051; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001052 %tmp1 = or <4 x i16> %a, < i16 0, i16 65280, i16 0, i16 65280>
1053 ret <4 x i16> %tmp1
1054}
1055
1056define <1 x i64> @orr64imm2s_lsl0(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001057; CHECK-LABEL: orr64imm2s_lsl0:
1058; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001059 %tmp1 = or <1 x i64> %a, < i64 1095216660735>
1060 ret <1 x i64> %tmp1
1061}
1062
1063define <1 x i64> @orr64imm2s_lsl8(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001064; CHECK-LABEL: orr64imm2s_lsl8:
1065; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001066 %tmp1 = or <1 x i64> %a, < i64 280375465148160>
1067 ret <1 x i64> %tmp1
1068}
1069
1070define <1 x i64> @orr64imm2s_lsl16(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001071; CHECK-LABEL: orr64imm2s_lsl16:
1072; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001073 %tmp1 = or <1 x i64> %a, < i64 71776119077928960>
1074 ret <1 x i64> %tmp1
1075}
1076
1077define <1 x i64> @orr64imm2s_lsl24(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001078; CHECK-LABEL: orr64imm2s_lsl24:
1079; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001080 %tmp1 = or <1 x i64> %a, < i64 -72057589759737856>
1081 ret <1 x i64> %tmp1
1082}
1083
1084define <16 x i8> @orr8imm4s_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001085; CHECK-LABEL: orr8imm4s_lsl0:
1086; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001087 %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>
1088 ret <16 x i8> %tmp1
1089}
1090
1091define <16 x i8> @orr8imm4s_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001092; CHECK-LABEL: orr8imm4s_lsl8:
1093; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001094 %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>
1095 ret <16 x i8> %tmp1
1096}
1097
1098define <16 x i8> @orr8imm4s_lsl16(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001099; CHECK-LABEL: orr8imm4s_lsl16:
1100; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001101 %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>
1102 ret <16 x i8> %tmp1
1103}
1104
1105define <16 x i8> @orr8imm4s_lsl24(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001106; CHECK-LABEL: orr8imm4s_lsl24:
1107; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001108 %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>
1109 ret <16 x i8> %tmp1
1110}
1111
1112define <8 x i16> @orr16imm4s_lsl0(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001113; CHECK-LABEL: orr16imm4s_lsl0:
1114; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001115 %tmp1 = or <8 x i16> %a, < i16 255, i16 0, i16 255, i16 0, i16 255, i16 0, i16 255, i16 0>
1116 ret <8 x i16> %tmp1
1117}
1118
1119define <8 x i16> @orr16imm4s_lsl8(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001120; CHECK-LABEL: orr16imm4s_lsl8:
1121; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001122 %tmp1 = or <8 x i16> %a, < i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0>
1123 ret <8 x i16> %tmp1
1124}
1125
1126define <8 x i16> @orr16imm4s_lsl16(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001127; CHECK-LABEL: orr16imm4s_lsl16:
1128; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001129 %tmp1 = or <8 x i16> %a, < i16 0, i16 255, i16 0, i16 255, i16 0, i16 255, i16 0, i16 255>
1130 ret <8 x i16> %tmp1
1131}
1132
1133define <8 x i16> @orr16imm4s_lsl24(<8 x i16> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001134; CHECK-LABEL: orr16imm4s_lsl24:
1135; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001136 %tmp1 = or <8 x i16> %a, < i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280>
1137 ret <8 x i16> %tmp1
1138}
1139
1140define <2 x i64> @orr64imm4s_lsl0(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001141; CHECK-LABEL: orr64imm4s_lsl0:
1142; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001143 %tmp1 = or <2 x i64> %a, < i64 1095216660735, i64 1095216660735>
1144 ret <2 x i64> %tmp1
1145}
1146
1147define <2 x i64> @orr64imm4s_lsl8(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001148; CHECK-LABEL: orr64imm4s_lsl8:
1149; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001150 %tmp1 = or <2 x i64> %a, < i64 280375465148160, i64 280375465148160>
1151 ret <2 x i64> %tmp1
1152}
1153
1154define <2 x i64> @orr64imm4s_lsl16(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001155; CHECK-LABEL: orr64imm4s_lsl16:
1156; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16
Kevin Qincfa41a22014-01-07 05:10:47 +00001157 %tmp1 = or <2 x i64> %a, < i64 71776119077928960, i64 71776119077928960>
1158 ret <2 x i64> %tmp1
1159}
1160
1161define <2 x i64> @orr64imm4s_lsl24(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001162; CHECK-LABEL: orr64imm4s_lsl24:
1163; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24
Kevin Qincfa41a22014-01-07 05:10:47 +00001164 %tmp1 = or <2 x i64> %a, < i64 -72057589759737856, i64 -72057589759737856>
1165 ret <2 x i64> %tmp1
1166}
1167
1168define <8 x i8> @orr8imm4h_lsl0(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001169; CHECK-LABEL: orr8imm4h_lsl0:
1170; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001171 %tmp1 = or <8 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0>
1172 ret <8 x i8> %tmp1
1173}
1174
1175define <8 x i8> @orr8imm4h_lsl8(<8 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001176; CHECK-LABEL: orr8imm4h_lsl8:
1177; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001178 %tmp1 = or <8 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255>
1179 ret <8 x i8> %tmp1
1180}
1181
1182define <2 x i32> @orr16imm4h_lsl0(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001183; CHECK-LABEL: orr16imm4h_lsl0:
1184; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001185 %tmp1 = or <2 x i32> %a, < i32 16711935, i32 16711935>
1186 ret <2 x i32> %tmp1
1187}
1188
1189define <2 x i32> @orr16imm4h_lsl8(<2 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001190; CHECK-LABEL: orr16imm4h_lsl8:
1191; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001192 %tmp1 = or <2 x i32> %a, < i32 4278255360, i32 4278255360>
1193 ret <2 x i32> %tmp1
1194}
1195
1196define <1 x i64> @orr64imm4h_lsl0(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001197; CHECK-LABEL: orr64imm4h_lsl0:
1198; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001199 %tmp1 = or <1 x i64> %a, < i64 71777214294589695>
1200 ret <1 x i64> %tmp1
1201}
1202
1203define <1 x i64> @orr64imm4h_lsl8(<1 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001204; CHECK-LABEL: orr64imm4h_lsl8:
1205; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001206 %tmp1 = or <1 x i64> %a, < i64 -71777214294589696>
1207 ret <1 x i64> %tmp1
1208}
1209
1210define <16 x i8> @orr8imm8h_lsl0(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001211; CHECK-LABEL: orr8imm8h_lsl0:
1212; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001213 %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>
1214 ret <16 x i8> %tmp1
1215}
1216
1217define <16 x i8> @orr8imm8h_lsl8(<16 x i8> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001218; CHECK-LABEL: orr8imm8h_lsl8:
1219; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001220 %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>
1221 ret <16 x i8> %tmp1
1222}
1223
1224define <4 x i32> @orr16imm8h_lsl0(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001225; CHECK-LABEL: orr16imm8h_lsl0:
1226; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001227 %tmp1 = or <4 x i32> %a, < i32 16711935, i32 16711935, i32 16711935, i32 16711935>
1228 ret <4 x i32> %tmp1
1229}
1230
1231define <4 x i32> @orr16imm8h_lsl8(<4 x i32> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001232; CHECK-LABEL: orr16imm8h_lsl8:
1233; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001234 %tmp1 = or <4 x i32> %a, < i32 4278255360, i32 4278255360, i32 4278255360, i32 4278255360>
1235 ret <4 x i32> %tmp1
1236}
1237
1238define <2 x i64> @orr64imm8h_lsl0(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001239; CHECK-LABEL: orr64imm8h_lsl0:
1240; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}
Kevin Qincfa41a22014-01-07 05:10:47 +00001241 %tmp1 = or <2 x i64> %a, < i64 71777214294589695, i64 71777214294589695>
1242 ret <2 x i64> %tmp1
1243}
1244
1245define <2 x i64> @orr64imm8h_lsl8(<2 x i64> %a) {
Tim Northover0a44e662014-04-18 09:31:01 +00001246; CHECK-LABEL: orr64imm8h_lsl8:
1247; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8
Kevin Qincfa41a22014-01-07 05:10:47 +00001248 %tmp1 = or <2 x i64> %a, < i64 -71777214294589696, i64 -71777214294589696>
1249 ret <2 x i64> %tmp1
1250}
Tim Northover40e9efd2013-08-01 09:20:35 +00001251