Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Hexagon / autohvx / vector-compare-float.ll
blob3937b2ed97f2f2e73510530f7b4417098f12e98e
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -march=hexagon -mattr=+hvxv69,+hvx-length128b,+hvx-qfloat < %s | FileCheck %s
3 ; RUN: llc -march=hexagon -mattr=+hvxv69,+hvx-length128b,+hvx-ieee-fp < %s | FileCheck %s
5 ; --- Half
7 define <64 x half> @test_00(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 {
8 ; CHECK-LABEL: test_00:
9 ; CHECK:       // %bb.0:
10 ; CHECK-NEXT:    {
11 ; CHECK-NEXT:     q0 = vcmp.eq(v0.h,v1.h)
12 ; CHECK-NEXT:    }
13 ; CHECK-NEXT:    {
14 ; CHECK-NEXT:     v0 = vmux(q0,v1,v2)
15 ; CHECK-NEXT:     jumpr r31
16 ; CHECK-NEXT:    }
17   %t0 = fcmp oeq <64 x half> %v0, %v1
18   %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2
19   ret <64 x half> %t1
22 define <64 x half> @test_01(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 {
23 ; CHECK-LABEL: test_01:
24 ; CHECK:       // %bb.0:
25 ; CHECK-NEXT:    {
26 ; CHECK-NEXT:     q0 = vcmp.eq(v0.h,v1.h)
27 ; CHECK-NEXT:    }
28 ; CHECK-NEXT:    {
29 ; CHECK-NEXT:     v0 = vmux(q0,v2,v1)
30 ; CHECK-NEXT:     jumpr r31
31 ; CHECK-NEXT:    }
32   %t0 = fcmp one <64 x half> %v0, %v1
33   %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2
34   ret <64 x half> %t1
37 define <64 x half> @test_02(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 {
38 ; CHECK-LABEL: test_02:
39 ; CHECK:       // %bb.0:
40 ; CHECK-NEXT:    {
41 ; CHECK-NEXT:     q0 = vcmp.gt(v1.hf,v0.hf)
42 ; CHECK-NEXT:    }
43 ; CHECK-NEXT:    {
44 ; CHECK-NEXT:     v0 = vmux(q0,v1,v2)
45 ; CHECK-NEXT:     jumpr r31
46 ; CHECK-NEXT:    }
47   %t0 = fcmp olt <64 x half> %v0, %v1
48   %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2
49   ret <64 x half> %t1
52 define <64 x half> @test_03(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 {
53 ; CHECK-LABEL: test_03:
54 ; CHECK:       // %bb.0:
55 ; CHECK-NEXT:    {
56 ; CHECK-NEXT:     q0 = vcmp.gt(v0.hf,v1.hf)
57 ; CHECK-NEXT:    }
58 ; CHECK-NEXT:    {
59 ; CHECK-NEXT:     v0 = vmux(q0,v2,v1)
60 ; CHECK-NEXT:     jumpr r31
61 ; CHECK-NEXT:    }
62   %t0 = fcmp ole <64 x half> %v0, %v1
63   %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2
64   ret <64 x half> %t1
67 define <64 x half> @test_04(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 {
68 ; CHECK-LABEL: test_04:
69 ; CHECK:       // %bb.0:
70 ; CHECK-NEXT:    {
71 ; CHECK-NEXT:     q0 = vcmp.gt(v0.hf,v1.hf)
72 ; CHECK-NEXT:    }
73 ; CHECK-NEXT:    {
74 ; CHECK-NEXT:     v0 = vmux(q0,v1,v2)
75 ; CHECK-NEXT:     jumpr r31
76 ; CHECK-NEXT:    }
77   %t0 = fcmp ogt <64 x half> %v0, %v1
78   %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2
79   ret <64 x half> %t1
82 define <64 x half> @test_05(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 {
83 ; CHECK-LABEL: test_05:
84 ; CHECK:       // %bb.0:
85 ; CHECK-NEXT:    {
86 ; CHECK-NEXT:     q0 = vcmp.gt(v1.hf,v0.hf)
87 ; CHECK-NEXT:    }
88 ; CHECK-NEXT:    {
89 ; CHECK-NEXT:     v0 = vmux(q0,v2,v1)
90 ; CHECK-NEXT:     jumpr r31
91 ; CHECK-NEXT:    }
92   %t0 = fcmp oge <64 x half> %v0, %v1
93   %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2
94   ret <64 x half> %t1
97 define <64 x half> @test_0a(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 {
98 ; CHECK-LABEL: test_0a:
99 ; CHECK:       // %bb.0:
100 ; CHECK-NEXT:    {
101 ; CHECK-NEXT:     r0 = ##16843009
102 ; CHECK-NEXT:    }
103 ; CHECK-NEXT:    {
104 ; CHECK-NEXT:     q0 = vand(v2,r0)
105 ; CHECK-NEXT:    }
106 ; CHECK-NEXT:    {
107 ; CHECK-NEXT:     q0 &= vcmp.eq(v0.h,v1.h)
108 ; CHECK-NEXT:    }
109 ; CHECK-NEXT:    {
110 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
111 ; CHECK-NEXT:     jumpr r31
112 ; CHECK-NEXT:    }
113   %q0 = fcmp oeq <64 x half> %v0, %v1
114   %q1 = trunc <64 x i16> %v2 to <64 x i1>
115   %q2 = and <64 x i1> %q0, %q1
116   %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1
117   ret <64 x half> %t1
120 define <64 x half> @test_0b(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 {
121 ; CHECK-LABEL: test_0b:
122 ; CHECK:       // %bb.0:
123 ; CHECK-NEXT:    {
124 ; CHECK-NEXT:     r0 = ##16843009
125 ; CHECK-NEXT:    }
126 ; CHECK-NEXT:    {
127 ; CHECK-NEXT:     q0 = vand(v2,r0)
128 ; CHECK-NEXT:    }
129 ; CHECK-NEXT:    {
130 ; CHECK-NEXT:     q0 |= vcmp.eq(v0.h,v1.h)
131 ; CHECK-NEXT:    }
132 ; CHECK-NEXT:    {
133 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
134 ; CHECK-NEXT:     jumpr r31
135 ; CHECK-NEXT:    }
136   %q0 = fcmp oeq <64 x half> %v0, %v1
137   %q1 = trunc <64 x i16> %v2 to <64 x i1>
138   %q2 = or <64 x i1> %q0, %q1
139   %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1
140   ret <64 x half> %t1
143 define <64 x half> @test_0c(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 {
144 ; CHECK-LABEL: test_0c:
145 ; CHECK:       // %bb.0:
146 ; CHECK-NEXT:    {
147 ; CHECK-NEXT:     r0 = ##16843009
148 ; CHECK-NEXT:    }
149 ; CHECK-NEXT:    {
150 ; CHECK-NEXT:     q0 = vand(v2,r0)
151 ; CHECK-NEXT:    }
152 ; CHECK-NEXT:    {
153 ; CHECK-NEXT:     q0 ^= vcmp.eq(v0.h,v1.h)
154 ; CHECK-NEXT:    }
155 ; CHECK-NEXT:    {
156 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
157 ; CHECK-NEXT:     jumpr r31
158 ; CHECK-NEXT:    }
159   %q0 = fcmp oeq <64 x half> %v0, %v1
160   %q1 = trunc <64 x i16> %v2 to <64 x i1>
161   %q2 = xor <64 x i1> %q0, %q1
162   %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1
163   ret <64 x half> %t1
166 define <64 x half> @test_0d(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 {
167 ; CHECK-LABEL: test_0d:
168 ; CHECK:       // %bb.0:
169 ; CHECK-NEXT:    {
170 ; CHECK-NEXT:     r0 = ##16843009
171 ; CHECK-NEXT:    }
172 ; CHECK-NEXT:    {
173 ; CHECK-NEXT:     q0 = vand(v2,r0)
174 ; CHECK-NEXT:    }
175 ; CHECK-NEXT:    {
176 ; CHECK-NEXT:     q0 &= vcmp.gt(v0.hf,v1.hf)
177 ; CHECK-NEXT:    }
178 ; CHECK-NEXT:    {
179 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
180 ; CHECK-NEXT:     jumpr r31
181 ; CHECK-NEXT:    }
182   %q0 = fcmp ogt <64 x half> %v0, %v1
183   %q1 = trunc <64 x i16> %v2 to <64 x i1>
184   %q2 = and <64 x i1> %q0, %q1
185   %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1
186   ret <64 x half> %t1
189 define <64 x half> @test_0e(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 {
190 ; CHECK-LABEL: test_0e:
191 ; CHECK:       // %bb.0:
192 ; CHECK-NEXT:    {
193 ; CHECK-NEXT:     r0 = ##16843009
194 ; CHECK-NEXT:    }
195 ; CHECK-NEXT:    {
196 ; CHECK-NEXT:     q0 = vand(v2,r0)
197 ; CHECK-NEXT:    }
198 ; CHECK-NEXT:    {
199 ; CHECK-NEXT:     q0 |= vcmp.gt(v0.hf,v1.hf)
200 ; CHECK-NEXT:    }
201 ; CHECK-NEXT:    {
202 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
203 ; CHECK-NEXT:     jumpr r31
204 ; CHECK-NEXT:    }
205   %q0 = fcmp ogt <64 x half> %v0, %v1
206   %q1 = trunc <64 x i16> %v2 to <64 x i1>
207   %q2 = or <64 x i1> %q0, %q1
208   %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1
209   ret <64 x half> %t1
212 define <64 x half> @test_0f(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 {
213 ; CHECK-LABEL: test_0f:
214 ; CHECK:       // %bb.0:
215 ; CHECK-NEXT:    {
216 ; CHECK-NEXT:     r0 = ##16843009
217 ; CHECK-NEXT:    }
218 ; CHECK-NEXT:    {
219 ; CHECK-NEXT:     q0 = vand(v2,r0)
220 ; CHECK-NEXT:    }
221 ; CHECK-NEXT:    {
222 ; CHECK-NEXT:     q0 ^= vcmp.gt(v0.hf,v1.hf)
223 ; CHECK-NEXT:    }
224 ; CHECK-NEXT:    {
225 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
226 ; CHECK-NEXT:     jumpr r31
227 ; CHECK-NEXT:    }
228   %q0 = fcmp ogt <64 x half> %v0, %v1
229   %q1 = trunc <64 x i16> %v2 to <64 x i1>
230   %q2 = xor <64 x i1> %q0, %q1
231   %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1
232   ret <64 x half> %t1
236 ; --- Single
238 define <32 x float> @test_10(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 {
239 ; CHECK-LABEL: test_10:
240 ; CHECK:       // %bb.0:
241 ; CHECK-NEXT:    {
242 ; CHECK-NEXT:     q0 = vcmp.eq(v0.w,v1.w)
243 ; CHECK-NEXT:    }
244 ; CHECK-NEXT:    {
245 ; CHECK-NEXT:     v0 = vmux(q0,v1,v2)
246 ; CHECK-NEXT:     jumpr r31
247 ; CHECK-NEXT:    }
248   %t0 = fcmp oeq <32 x float> %v0, %v1
249   %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2
250   ret <32 x float> %t1
253 define <32 x float> @test_11(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 {
254 ; CHECK-LABEL: test_11:
255 ; CHECK:       // %bb.0:
256 ; CHECK-NEXT:    {
257 ; CHECK-NEXT:     q0 = vcmp.eq(v0.w,v1.w)
258 ; CHECK-NEXT:    }
259 ; CHECK-NEXT:    {
260 ; CHECK-NEXT:     v0 = vmux(q0,v2,v1)
261 ; CHECK-NEXT:     jumpr r31
262 ; CHECK-NEXT:    }
263   %t0 = fcmp one <32 x float> %v0, %v1
264   %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2
265   ret <32 x float> %t1
268 define <32 x float> @test_12(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 {
269 ; CHECK-LABEL: test_12:
270 ; CHECK:       // %bb.0:
271 ; CHECK-NEXT:    {
272 ; CHECK-NEXT:     q0 = vcmp.gt(v1.sf,v0.sf)
273 ; CHECK-NEXT:    }
274 ; CHECK-NEXT:    {
275 ; CHECK-NEXT:     v0 = vmux(q0,v1,v2)
276 ; CHECK-NEXT:     jumpr r31
277 ; CHECK-NEXT:    }
278   %t0 = fcmp olt <32 x float> %v0, %v1
279   %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2
280   ret <32 x float> %t1
283 define <32 x float> @test_13(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 {
284 ; CHECK-LABEL: test_13:
285 ; CHECK:       // %bb.0:
286 ; CHECK-NEXT:    {
287 ; CHECK-NEXT:     q0 = vcmp.gt(v0.sf,v1.sf)
288 ; CHECK-NEXT:    }
289 ; CHECK-NEXT:    {
290 ; CHECK-NEXT:     v0 = vmux(q0,v2,v1)
291 ; CHECK-NEXT:     jumpr r31
292 ; CHECK-NEXT:    }
293   %t0 = fcmp ole <32 x float> %v0, %v1
294   %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2
295   ret <32 x float> %t1
298 define <32 x float> @test_14(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 {
299 ; CHECK-LABEL: test_14:
300 ; CHECK:       // %bb.0:
301 ; CHECK-NEXT:    {
302 ; CHECK-NEXT:     q0 = vcmp.gt(v0.sf,v1.sf)
303 ; CHECK-NEXT:    }
304 ; CHECK-NEXT:    {
305 ; CHECK-NEXT:     v0 = vmux(q0,v1,v2)
306 ; CHECK-NEXT:     jumpr r31
307 ; CHECK-NEXT:    }
308   %t0 = fcmp ogt <32 x float> %v0, %v1
309   %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2
310   ret <32 x float> %t1
313 define <32 x float> @test_15(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 {
314 ; CHECK-LABEL: test_15:
315 ; CHECK:       // %bb.0:
316 ; CHECK-NEXT:    {
317 ; CHECK-NEXT:     q0 = vcmp.gt(v1.sf,v0.sf)
318 ; CHECK-NEXT:    }
319 ; CHECK-NEXT:    {
320 ; CHECK-NEXT:     v0 = vmux(q0,v2,v1)
321 ; CHECK-NEXT:     jumpr r31
322 ; CHECK-NEXT:    }
323   %t0 = fcmp oge <32 x float> %v0, %v1
324   %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2
325   ret <32 x float> %t1
328 define <32 x float> @test_1a(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 {
329 ; CHECK-LABEL: test_1a:
330 ; CHECK:       // %bb.0:
331 ; CHECK-NEXT:    {
332 ; CHECK-NEXT:     r0 = ##16843009
333 ; CHECK-NEXT:    }
334 ; CHECK-NEXT:    {
335 ; CHECK-NEXT:     q0 = vand(v2,r0)
336 ; CHECK-NEXT:    }
337 ; CHECK-NEXT:    {
338 ; CHECK-NEXT:     q0 &= vcmp.eq(v0.w,v1.w)
339 ; CHECK-NEXT:    }
340 ; CHECK-NEXT:    {
341 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
342 ; CHECK-NEXT:     jumpr r31
343 ; CHECK-NEXT:    }
344   %q0 = fcmp oeq <32 x float> %v0, %v1
345   %q1 = trunc <32 x i32> %v2 to <32 x i1>
346   %q2 = and <32 x i1> %q0, %q1
347   %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1
348   ret <32 x float> %t1
351 define <32 x float> @test_1b(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 {
352 ; CHECK-LABEL: test_1b:
353 ; CHECK:       // %bb.0:
354 ; CHECK-NEXT:    {
355 ; CHECK-NEXT:     r0 = ##16843009
356 ; CHECK-NEXT:    }
357 ; CHECK-NEXT:    {
358 ; CHECK-NEXT:     q0 = vand(v2,r0)
359 ; CHECK-NEXT:    }
360 ; CHECK-NEXT:    {
361 ; CHECK-NEXT:     q0 |= vcmp.eq(v0.w,v1.w)
362 ; CHECK-NEXT:    }
363 ; CHECK-NEXT:    {
364 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
365 ; CHECK-NEXT:     jumpr r31
366 ; CHECK-NEXT:    }
367   %q0 = fcmp oeq <32 x float> %v0, %v1
368   %q1 = trunc <32 x i32> %v2 to <32 x i1>
369   %q2 = or <32 x i1> %q0, %q1
370   %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1
371   ret <32 x float> %t1
374 define <32 x float> @test_1c(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 {
375 ; CHECK-LABEL: test_1c:
376 ; CHECK:       // %bb.0:
377 ; CHECK-NEXT:    {
378 ; CHECK-NEXT:     r0 = ##16843009
379 ; CHECK-NEXT:    }
380 ; CHECK-NEXT:    {
381 ; CHECK-NEXT:     q0 = vand(v2,r0)
382 ; CHECK-NEXT:    }
383 ; CHECK-NEXT:    {
384 ; CHECK-NEXT:     q0 ^= vcmp.eq(v0.w,v1.w)
385 ; CHECK-NEXT:    }
386 ; CHECK-NEXT:    {
387 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
388 ; CHECK-NEXT:     jumpr r31
389 ; CHECK-NEXT:    }
390   %q0 = fcmp oeq <32 x float> %v0, %v1
391   %q1 = trunc <32 x i32> %v2 to <32 x i1>
392   %q2 = xor <32 x i1> %q0, %q1
393   %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1
394   ret <32 x float> %t1
397 define <32 x float> @test_1d(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 {
398 ; CHECK-LABEL: test_1d:
399 ; CHECK:       // %bb.0:
400 ; CHECK-NEXT:    {
401 ; CHECK-NEXT:     r0 = ##16843009
402 ; CHECK-NEXT:    }
403 ; CHECK-NEXT:    {
404 ; CHECK-NEXT:     q0 = vand(v2,r0)
405 ; CHECK-NEXT:    }
406 ; CHECK-NEXT:    {
407 ; CHECK-NEXT:     q0 &= vcmp.gt(v0.sf,v1.sf)
408 ; CHECK-NEXT:    }
409 ; CHECK-NEXT:    {
410 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
411 ; CHECK-NEXT:     jumpr r31
412 ; CHECK-NEXT:    }
413   %q0 = fcmp ogt <32 x float> %v0, %v1
414   %q1 = trunc <32 x i32> %v2 to <32 x i1>
415   %q2 = and <32 x i1> %q0, %q1
416   %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1
417   ret <32 x float> %t1
420 define <32 x float> @test_1e(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 {
421 ; CHECK-LABEL: test_1e:
422 ; CHECK:       // %bb.0:
423 ; CHECK-NEXT:    {
424 ; CHECK-NEXT:     r0 = ##16843009
425 ; CHECK-NEXT:    }
426 ; CHECK-NEXT:    {
427 ; CHECK-NEXT:     q0 = vand(v2,r0)
428 ; CHECK-NEXT:    }
429 ; CHECK-NEXT:    {
430 ; CHECK-NEXT:     q0 |= vcmp.gt(v0.sf,v1.sf)
431 ; CHECK-NEXT:    }
432 ; CHECK-NEXT:    {
433 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
434 ; CHECK-NEXT:     jumpr r31
435 ; CHECK-NEXT:    }
436   %q0 = fcmp ogt <32 x float> %v0, %v1
437   %q1 = trunc <32 x i32> %v2 to <32 x i1>
438   %q2 = or <32 x i1> %q0, %q1
439   %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1
440   ret <32 x float> %t1
443 define <32 x float> @test_1f(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 {
444 ; CHECK-LABEL: test_1f:
445 ; CHECK:       // %bb.0:
446 ; CHECK-NEXT:    {
447 ; CHECK-NEXT:     r0 = ##16843009
448 ; CHECK-NEXT:    }
449 ; CHECK-NEXT:    {
450 ; CHECK-NEXT:     q0 = vand(v2,r0)
451 ; CHECK-NEXT:    }
452 ; CHECK-NEXT:    {
453 ; CHECK-NEXT:     q0 ^= vcmp.gt(v0.sf,v1.sf)
454 ; CHECK-NEXT:    }
455 ; CHECK-NEXT:    {
456 ; CHECK-NEXT:     v0 = vmux(q0,v0,v1)
457 ; CHECK-NEXT:     jumpr r31
458 ; CHECK-NEXT:    }
459   %q0 = fcmp ogt <32 x float> %v0, %v1
460   %q1 = trunc <32 x i32> %v2 to <32 x i1>
461   %q2 = xor <32 x i1> %q0, %q1
462   %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1
463   ret <32 x float> %t1
466 attributes #0 = { nounwind readnone "target-cpu"="hexagonv69" }