1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve -verify-machineinstrs %s -o - | FileCheck %s
4 define arm_aapcs_vfpcc i32 @build_v2i_v2i1_1() {
5 ; CHECK-LABEL: build_v2i_v2i1_1:
7 ; CHECK-NEXT: movw r0, #65535
9 %r = call i32 @llvm.arm.mve.pred.v2i.v2i1(<2 x i1> <i1 1, i1 1>)
12 define arm_aapcs_vfpcc i32 @build_v2i_v2i1_0() {
13 ; CHECK-LABEL: build_v2i_v2i1_0:
15 ; CHECK-NEXT: movs r0, #0
17 %r = call i32 @llvm.arm.mve.pred.v2i.v2i1(<2 x i1> <i1 0, i1 0>)
20 define arm_aapcs_vfpcc i32 @build_v2i_v2i1_5() {
21 ; CHECK-LABEL: build_v2i_v2i1_5:
23 ; CHECK-NEXT: mov.w r0, #65280
25 %r = call i32 @llvm.arm.mve.pred.v2i.v2i1(<2 x i1> <i1 0, i1 1>)
29 define arm_aapcs_vfpcc i32 @build_v2i_v4i1_1() {
30 ; CHECK-LABEL: build_v2i_v4i1_1:
32 ; CHECK-NEXT: movw r0, #65535
34 %r = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> <i1 1, i1 1, i1 1, i1 1>)
37 define arm_aapcs_vfpcc i32 @build_v2i_v4i1_0() {
38 ; CHECK-LABEL: build_v2i_v4i1_0:
40 ; CHECK-NEXT: movs r0, #0
42 %r = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> <i1 0, i1 0, i1 0, i1 0>)
45 define arm_aapcs_vfpcc i32 @build_v2i_v4i1_5() {
46 ; CHECK-LABEL: build_v2i_v4i1_5:
48 ; CHECK-NEXT: movw r0, #61680
50 %r = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> <i1 0, i1 1, i1 0, i1 1>)
54 define arm_aapcs_vfpcc i32 @build_v2i_v8i1_1() {
55 ; CHECK-LABEL: build_v2i_v8i1_1:
57 ; CHECK-NEXT: movw r0, #65535
59 %r = call i32 @llvm.arm.mve.pred.v2i.v8i1(<8 x i1> <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>)
62 define arm_aapcs_vfpcc i32 @build_v2i_v8i1_0() {
63 ; CHECK-LABEL: build_v2i_v8i1_0:
65 ; CHECK-NEXT: movs r0, #0
67 %r = call i32 @llvm.arm.mve.pred.v2i.v8i1(<8 x i1> <i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0>)
70 define arm_aapcs_vfpcc i32 @build_v2i_v8i1_5() {
71 ; CHECK-LABEL: build_v2i_v8i1_5:
73 ; CHECK-NEXT: movw r0, #52428
75 %r = call i32 @llvm.arm.mve.pred.v2i.v8i1(<8 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
79 define arm_aapcs_vfpcc i32 @build_v2i_v16i1_1() {
80 ; CHECK-LABEL: build_v2i_v16i1_1:
82 ; CHECK-NEXT: movw r0, #65535
84 %r = call i32 @llvm.arm.mve.pred.v2i.v16i1(<16 x i1> <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>)
87 define arm_aapcs_vfpcc i32 @build_v2i_v16i1_0() {
88 ; CHECK-LABEL: build_v2i_v16i1_0:
90 ; CHECK-NEXT: movs r0, #0
92 %r = call i32 @llvm.arm.mve.pred.v2i.v16i1(<16 x i1> <i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0>)
95 define arm_aapcs_vfpcc i32 @build_v2i_v16i1_5() {
96 ; CHECK-LABEL: build_v2i_v16i1_5:
98 ; CHECK-NEXT: movw r0, #43690
100 %r = call i32 @llvm.arm.mve.pred.v2i.v16i1(<16 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
106 define arm_aapcs_vfpcc <2 x i64> @build_i2v_v2i1_1() {
107 ; CHECK-LABEL: build_i2v_v2i1_1:
109 ; CHECK-NEXT: movw r0, #65535
110 ; CHECK-NEXT: vmov.i32 q0, #0x0
111 ; CHECK-NEXT: vmsr p0, r0
112 ; CHECK-NEXT: vmov.i8 q1, #0xff
113 ; CHECK-NEXT: vpsel q0, q1, q0
115 %c = call <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32 65535)
116 %r = select <2 x i1> %c, <2 x i64> <i64 18446744073709551615, i64 18446744073709551615>, <2 x i64> <i64 0, i64 0>
119 define arm_aapcs_vfpcc <2 x i64> @build_i2v_v2i1_0() {
120 ; CHECK-LABEL: build_i2v_v2i1_0:
122 ; CHECK-NEXT: movs r0, #0
123 ; CHECK-NEXT: vmov.i32 q0, #0x0
124 ; CHECK-NEXT: vmsr p0, r0
125 ; CHECK-NEXT: vmov.i8 q1, #0xff
126 ; CHECK-NEXT: vpsel q0, q1, q0
128 %c = call <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32 0)
129 %r = select <2 x i1> %c, <2 x i64> <i64 18446744073709551615, i64 18446744073709551615>, <2 x i64> <i64 0, i64 0>
132 define arm_aapcs_vfpcc <2 x i64> @build_i2v_v2i1_5() {
133 ; CHECK-LABEL: build_i2v_v2i1_5:
135 ; CHECK-NEXT: movw r0, #61680
136 ; CHECK-NEXT: vmov.i32 q0, #0x0
137 ; CHECK-NEXT: vmsr p0, r0
138 ; CHECK-NEXT: vmov.i8 q1, #0xff
139 ; CHECK-NEXT: vpsel q0, q1, q0
141 %c = call <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32 61680)
142 %r = select <2 x i1> %c, <2 x i64> <i64 18446744073709551615, i64 18446744073709551615>, <2 x i64> <i64 0, i64 0>
146 define arm_aapcs_vfpcc <4 x i32> @build_i2v_v4i1_1() {
147 ; CHECK-LABEL: build_i2v_v4i1_1:
149 ; CHECK-NEXT: movw r0, #65535
150 ; CHECK-NEXT: vmov.i32 q0, #0x0
151 ; CHECK-NEXT: vmsr p0, r0
152 ; CHECK-NEXT: vmov.i8 q1, #0xff
153 ; CHECK-NEXT: vpsel q0, q1, q0
155 %c = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 65535)
156 %r = select <4 x i1> %c, <4 x i32> <i32 4294967295, i32 4294967295, i32 4294967295, i32 4294967295>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>
159 define arm_aapcs_vfpcc <4 x i32> @build_i2v_v4i1_0() {
160 ; CHECK-LABEL: build_i2v_v4i1_0:
162 ; CHECK-NEXT: movs r0, #0
163 ; CHECK-NEXT: vmov.i32 q0, #0x0
164 ; CHECK-NEXT: vmsr p0, r0
165 ; CHECK-NEXT: vmov.i8 q1, #0xff
166 ; CHECK-NEXT: vpsel q0, q1, q0
168 %c = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 0)
169 %r = select <4 x i1> %c, <4 x i32> <i32 4294967295, i32 4294967295, i32 4294967295, i32 4294967295>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>
172 define arm_aapcs_vfpcc <4 x i32> @build_i2v_v4i1_5() {
173 ; CHECK-LABEL: build_i2v_v4i1_5:
175 ; CHECK-NEXT: movw r0, #61680
176 ; CHECK-NEXT: vmov.i32 q0, #0x0
177 ; CHECK-NEXT: vmsr p0, r0
178 ; CHECK-NEXT: vmov.i8 q1, #0xff
179 ; CHECK-NEXT: vpsel q0, q1, q0
181 %c = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 61680)
182 %r = select <4 x i1> %c, <4 x i32> <i32 4294967295, i32 4294967295, i32 4294967295, i32 4294967295>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>
186 define arm_aapcs_vfpcc <8 x i16> @build_i2v_v8i1_1() {
187 ; CHECK-LABEL: build_i2v_v8i1_1:
189 ; CHECK-NEXT: movw r0, #65535
190 ; CHECK-NEXT: vmov.i32 q0, #0x0
191 ; CHECK-NEXT: vmsr p0, r0
192 ; CHECK-NEXT: vmov.i8 q1, #0xff
193 ; CHECK-NEXT: vpsel q0, q1, q0
195 %c = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 65535)
196 %r = select <8 x i1> %c, <8 x i16> <i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535>, <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>
199 define arm_aapcs_vfpcc <8 x i16> @build_i2v_v8i1_0() {
200 ; CHECK-LABEL: build_i2v_v8i1_0:
202 ; CHECK-NEXT: movs r0, #0
203 ; CHECK-NEXT: vmov.i32 q0, #0x0
204 ; CHECK-NEXT: vmsr p0, r0
205 ; CHECK-NEXT: vmov.i8 q1, #0xff
206 ; CHECK-NEXT: vpsel q0, q1, q0
208 %c = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 0)
209 %r = select <8 x i1> %c, <8 x i16> <i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535>, <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>
212 define arm_aapcs_vfpcc <8 x i16> @build_i2v_v8i1_5() {
213 ; CHECK-LABEL: build_i2v_v8i1_5:
215 ; CHECK-NEXT: movw r0, #52428
216 ; CHECK-NEXT: vmov.i32 q0, #0x0
217 ; CHECK-NEXT: vmsr p0, r0
218 ; CHECK-NEXT: vmov.i8 q1, #0xff
219 ; CHECK-NEXT: vpsel q0, q1, q0
221 %c = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 52428)
222 %r = select <8 x i1> %c, <8 x i16> <i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535>, <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>
226 define arm_aapcs_vfpcc <16 x i8> @build_i2v_v16i1_1() {
227 ; CHECK-LABEL: build_i2v_v16i1_1:
229 ; CHECK-NEXT: movw r0, #65535
230 ; CHECK-NEXT: vmov.i32 q0, #0x0
231 ; CHECK-NEXT: vmsr p0, r0
232 ; CHECK-NEXT: vmov.i8 q1, #0xff
233 ; CHECK-NEXT: vpsel q0, q1, q0
235 %c = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 65535)
236 %r = select <16 x i1> %c, <16 x i8> <i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255>, <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
239 define arm_aapcs_vfpcc <16 x i8> @build_i2v_v16i1_0() {
240 ; CHECK-LABEL: build_i2v_v16i1_0:
242 ; CHECK-NEXT: movs r0, #0
243 ; CHECK-NEXT: vmov.i32 q0, #0x0
244 ; CHECK-NEXT: vmsr p0, r0
245 ; CHECK-NEXT: vmov.i8 q1, #0xff
246 ; CHECK-NEXT: vpsel q0, q1, q0
248 %c = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 0)
249 %r = select <16 x i1> %c, <16 x i8> <i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255>, <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
252 define arm_aapcs_vfpcc <16 x i8> @build_i2v_v16i1_5() {
253 ; CHECK-LABEL: build_i2v_v16i1_5:
255 ; CHECK-NEXT: movw r0, #43690
256 ; CHECK-NEXT: vmov.i32 q0, #0x0
257 ; CHECK-NEXT: vmsr p0, r0
258 ; CHECK-NEXT: vmov.i8 q1, #0xff
259 ; CHECK-NEXT: vpsel q0, q1, q0
261 %c = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 43690)
262 %r = select <16 x i1> %c, <16 x i8> <i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255>, <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
267 define arm_aapcs_vfpcc i32 @build_i2v2i_v2i1_5() {
268 ; CHECK-LABEL: build_i2v2i_v2i1_5:
270 ; CHECK-NEXT: movw r0, #61680
272 %c = call <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32 61680)
273 %r = call i32 @llvm.arm.mve.pred.v2i.v2i1(<2 x i1> %c)
276 define arm_aapcs_vfpcc i32 @build_i2v2i_v4i1_5() {
277 ; CHECK-LABEL: build_i2v2i_v4i1_5:
279 ; CHECK-NEXT: movw r0, #61680
281 %c = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 61680)
282 %r = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> %c)
285 define arm_aapcs_vfpcc i32 @build_i2v2i_v8i1_5() {
286 ; CHECK-LABEL: build_i2v2i_v8i1_5:
288 ; CHECK-NEXT: movw r0, #52428
290 %c = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 52428)
291 %r = call i32 @llvm.arm.mve.pred.v2i.v8i1(<8 x i1> %c)
294 define arm_aapcs_vfpcc i32 @build_i2v2i_v16i1_5() {
295 ; CHECK-LABEL: build_i2v2i_v16i1_5:
297 ; CHECK-NEXT: movw r0, #43690
299 %c = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 43690)
300 %r = call i32 @llvm.arm.mve.pred.v2i.v16i1(<16 x i1> %c)
305 define arm_aapcs_vfpcc <2 x i64> @build_v2i2v_v4i1_v2i1_5() {
306 ; CHECK-LABEL: build_v2i2v_v4i1_v2i1_5:
308 ; CHECK-NEXT: movw r0, #61680
309 ; CHECK-NEXT: vmov.i32 q0, #0x0
310 ; CHECK-NEXT: vmsr p0, r0
311 ; CHECK-NEXT: vmov.i8 q1, #0xff
312 ; CHECK-NEXT: vpsel q0, q1, q0
314 %b = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> <i1 0, i1 1, i1 0, i1 1>)
315 %c = call <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32 %b)
316 %r = select <2 x i1> %c, <2 x i64> <i64 -1, i64 -1>, <2 x i64> zeroinitializer
319 define arm_aapcs_vfpcc <2 x i64> @build_v2i2v_v8i1_v2i1_5() {
320 ; CHECK-LABEL: build_v2i2v_v8i1_v2i1_5:
322 ; CHECK-NEXT: movw r0, #52428
323 ; CHECK-NEXT: vmov.i32 q0, #0x0
324 ; CHECK-NEXT: vmsr p0, r0
325 ; CHECK-NEXT: vmov.i8 q1, #0xff
326 ; CHECK-NEXT: vpsel q0, q1, q0
328 %b = call i32 @llvm.arm.mve.pred.v2i.v8i1(<8 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
329 %c = call <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32 %b)
330 %r = select <2 x i1> %c, <2 x i64> <i64 -1, i64 -1>, <2 x i64> zeroinitializer
333 define arm_aapcs_vfpcc <2 x i64> @build_v2i2v_v16i1_v2i1_5() {
334 ; CHECK-LABEL: build_v2i2v_v16i1_v2i1_5:
336 ; CHECK-NEXT: movw r0, #43690
337 ; CHECK-NEXT: vmov.i32 q0, #0x0
338 ; CHECK-NEXT: vmsr p0, r0
339 ; CHECK-NEXT: vmov.i8 q1, #0xff
340 ; CHECK-NEXT: vpsel q0, q1, q0
342 %b = call i32 @llvm.arm.mve.pred.v2i.v16i1(<16 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
343 %c = call <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32 %b)
344 %r = select <2 x i1> %c, <2 x i64> <i64 -1, i64 -1>, <2 x i64> zeroinitializer
348 define arm_aapcs_vfpcc <4 x i32> @build_v2i2v_v4i1_v4i1_5() {
349 ; CHECK-LABEL: build_v2i2v_v4i1_v4i1_5:
351 ; CHECK-NEXT: movw r0, #61680
352 ; CHECK-NEXT: vmov.i32 q0, #0x0
353 ; CHECK-NEXT: vmsr p0, r0
354 ; CHECK-NEXT: vmov.i8 q1, #0xff
355 ; CHECK-NEXT: vpsel q0, q1, q0
357 %b = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> <i1 0, i1 1, i1 0, i1 1>)
358 %c = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %b)
359 %r = select <4 x i1> %c, <4 x i32> <i32 4294967295, i32 4294967295, i32 4294967295, i32 4294967295>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>
362 define arm_aapcs_vfpcc <4 x i32> @build_v2i2v_v8i1_v4i1_5() {
363 ; CHECK-LABEL: build_v2i2v_v8i1_v4i1_5:
365 ; CHECK-NEXT: movw r0, #52428
366 ; CHECK-NEXT: vmov.i32 q0, #0x0
367 ; CHECK-NEXT: vmsr p0, r0
368 ; CHECK-NEXT: vmov.i8 q1, #0xff
369 ; CHECK-NEXT: vpsel q0, q1, q0
371 %b = call i32 @llvm.arm.mve.pred.v2i.v8i1(<8 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
372 %c = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %b)
373 %r = select <4 x i1> %c, <4 x i32> <i32 4294967295, i32 4294967295, i32 4294967295, i32 4294967295>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>
376 define arm_aapcs_vfpcc <4 x i32> @build_v2i2v_v16i1_v4i1_5() {
377 ; CHECK-LABEL: build_v2i2v_v16i1_v4i1_5:
379 ; CHECK-NEXT: movw r0, #43690
380 ; CHECK-NEXT: vmov.i32 q0, #0x0
381 ; CHECK-NEXT: vmsr p0, r0
382 ; CHECK-NEXT: vmov.i8 q1, #0xff
383 ; CHECK-NEXT: vpsel q0, q1, q0
385 %b = call i32 @llvm.arm.mve.pred.v2i.v16i1(<16 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
386 %c = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %b)
387 %r = select <4 x i1> %c, <4 x i32> <i32 4294967295, i32 4294967295, i32 4294967295, i32 4294967295>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>
391 define arm_aapcs_vfpcc <8 x i16> @build_v2i2v_v4i1_v8i1_5() {
392 ; CHECK-LABEL: build_v2i2v_v4i1_v8i1_5:
394 ; CHECK-NEXT: movw r0, #61680
395 ; CHECK-NEXT: vmov.i32 q0, #0x0
396 ; CHECK-NEXT: vmsr p0, r0
397 ; CHECK-NEXT: vmov.i8 q1, #0xff
398 ; CHECK-NEXT: vpsel q0, q1, q0
400 %b = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> <i1 0, i1 1, i1 0, i1 1>)
401 %c = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %b)
402 %r = select <8 x i1> %c, <8 x i16> <i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535>, <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>
405 define arm_aapcs_vfpcc <8 x i16> @build_v2i2v_v8i1_v8i1_5() {
406 ; CHECK-LABEL: build_v2i2v_v8i1_v8i1_5:
408 ; CHECK-NEXT: movw r0, #52428
409 ; CHECK-NEXT: vmov.i32 q0, #0x0
410 ; CHECK-NEXT: vmsr p0, r0
411 ; CHECK-NEXT: vmov.i8 q1, #0xff
412 ; CHECK-NEXT: vpsel q0, q1, q0
414 %b = call i32 @llvm.arm.mve.pred.v2i.v8i1(<8 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
415 %c = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %b)
416 %r = select <8 x i1> %c, <8 x i16> <i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535>, <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>
419 define arm_aapcs_vfpcc <8 x i16> @build_v2i2v_v16i1_v8i1_5() {
420 ; CHECK-LABEL: build_v2i2v_v16i1_v8i1_5:
422 ; CHECK-NEXT: movw r0, #43690
423 ; CHECK-NEXT: vmov.i32 q0, #0x0
424 ; CHECK-NEXT: vmsr p0, r0
425 ; CHECK-NEXT: vmov.i8 q1, #0xff
426 ; CHECK-NEXT: vpsel q0, q1, q0
428 %b = call i32 @llvm.arm.mve.pred.v2i.v16i1(<16 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
429 %c = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %b)
430 %r = select <8 x i1> %c, <8 x i16> <i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535, i16 65535>, <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>
434 define arm_aapcs_vfpcc <16 x i8> @build_v2i2v_v4i1_v16i1_5() {
435 ; CHECK-LABEL: build_v2i2v_v4i1_v16i1_5:
437 ; CHECK-NEXT: movw r0, #61680
438 ; CHECK-NEXT: vmov.i32 q0, #0x0
439 ; CHECK-NEXT: vmsr p0, r0
440 ; CHECK-NEXT: vmov.i8 q1, #0xff
441 ; CHECK-NEXT: vpsel q0, q1, q0
443 %b = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> <i1 0, i1 1, i1 0, i1 1>)
444 %c = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %b)
445 %r = select <16 x i1> %c, <16 x i8> <i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255>, <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
448 define arm_aapcs_vfpcc <16 x i8> @build_v2i2v_v8i1_v16i1_5() {
449 ; CHECK-LABEL: build_v2i2v_v8i1_v16i1_5:
451 ; CHECK-NEXT: movw r0, #52428
452 ; CHECK-NEXT: vmov.i32 q0, #0x0
453 ; CHECK-NEXT: vmsr p0, r0
454 ; CHECK-NEXT: vmov.i8 q1, #0xff
455 ; CHECK-NEXT: vpsel q0, q1, q0
457 %b = call i32 @llvm.arm.mve.pred.v2i.v8i1(<8 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
458 %c = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %b)
459 %r = select <16 x i1> %c, <16 x i8> <i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255>, <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
462 define arm_aapcs_vfpcc <16 x i8> @build_v2i2v_v16i1_v16i1_5() {
463 ; CHECK-LABEL: build_v2i2v_v16i1_v16i1_5:
465 ; CHECK-NEXT: movw r0, #43690
466 ; CHECK-NEXT: vmov.i32 q0, #0x0
467 ; CHECK-NEXT: vmsr p0, r0
468 ; CHECK-NEXT: vmov.i8 q1, #0xff
469 ; CHECK-NEXT: vpsel q0, q1, q0
471 %b = call i32 @llvm.arm.mve.pred.v2i.v16i1(<16 x i1> <i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1>)
472 %c = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %b)
473 %r = select <16 x i1> %c, <16 x i8> <i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255, i8 255>, <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
477 declare i32 @llvm.arm.mve.pred.v2i.v2i1(<2 x i1>)
478 declare i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1>)
479 declare i32 @llvm.arm.mve.pred.v2i.v8i1(<8 x i1>)
480 declare i32 @llvm.arm.mve.pred.v2i.v16i1(<16 x i1>)
482 declare <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32)
483 declare <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32)
484 declare <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32)
485 declare <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32)