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