@@ -296,120 +296,66 @@ define <4 x float> @test_vrev64Qf(ptr %A) nounwind {
296
296
}
297
297
298
298
define <8 x i8 > @test_vrev32D8 (ptr %A ) nounwind {
299
- ; CHECK-SD-LABEL: test_vrev32D8:
300
- ; CHECK-SD: // %bb.0:
301
- ; CHECK-SD-NEXT: ldr d0, [x0]
302
- ; CHECK-SD-NEXT: rev32.8b v0, v0
303
- ; CHECK-SD-NEXT: ret
304
- ;
305
- ; CHECK-GI-LABEL: test_vrev32D8:
306
- ; CHECK-GI: // %bb.0:
307
- ; CHECK-GI-NEXT: ldr d0, [x0]
308
- ; CHECK-GI-NEXT: adrp x8, .LCPI19_0
309
- ; CHECK-GI-NEXT: ldr d1, [x8, :lo12:.LCPI19_0]
310
- ; CHECK-GI-NEXT: mov.d v0[1], v0[0]
311
- ; CHECK-GI-NEXT: tbl.16b v0, { v0 }, v1
312
- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
313
- ; CHECK-GI-NEXT: ret
299
+ ; CHECK-LABEL: test_vrev32D8:
300
+ ; CHECK: // %bb.0:
301
+ ; CHECK-NEXT: ldr d0, [x0]
302
+ ; CHECK-NEXT: rev32.8b v0, v0
303
+ ; CHECK-NEXT: ret
314
304
%tmp1 = load <8 x i8 >, ptr %A
315
305
%tmp2 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > undef , <8 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 , i32 7 , i32 6 , i32 5 , i32 4 >
316
306
ret <8 x i8 > %tmp2
317
307
}
318
308
319
309
define <4 x i16 > @test_vrev32D16 (ptr %A ) nounwind {
320
- ; CHECK-SD-LABEL: test_vrev32D16:
321
- ; CHECK-SD: // %bb.0:
322
- ; CHECK-SD-NEXT: ldr d0, [x0]
323
- ; CHECK-SD-NEXT: rev32.4h v0, v0
324
- ; CHECK-SD-NEXT: ret
325
- ;
326
- ; CHECK-GI-LABEL: test_vrev32D16:
327
- ; CHECK-GI: // %bb.0:
328
- ; CHECK-GI-NEXT: ldr d0, [x0]
329
- ; CHECK-GI-NEXT: adrp x8, .LCPI20_0
330
- ; CHECK-GI-NEXT: ldr d1, [x8, :lo12:.LCPI20_0]
331
- ; CHECK-GI-NEXT: mov.d v0[1], v0[0]
332
- ; CHECK-GI-NEXT: tbl.16b v0, { v0 }, v1
333
- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
334
- ; CHECK-GI-NEXT: ret
310
+ ; CHECK-LABEL: test_vrev32D16:
311
+ ; CHECK: // %bb.0:
312
+ ; CHECK-NEXT: ldr d0, [x0]
313
+ ; CHECK-NEXT: rev32.4h v0, v0
314
+ ; CHECK-NEXT: ret
335
315
%tmp1 = load <4 x i16 >, ptr %A
336
316
%tmp2 = shufflevector <4 x i16 > %tmp1 , <4 x i16 > undef , <4 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 >
337
317
ret <4 x i16 > %tmp2
338
318
}
339
319
340
320
define <16 x i8 > @test_vrev32Q8 (ptr %A ) nounwind {
341
- ; CHECK-SD-LABEL: test_vrev32Q8:
342
- ; CHECK-SD: // %bb.0:
343
- ; CHECK-SD-NEXT: ldr q0, [x0]
344
- ; CHECK-SD-NEXT: rev32.16b v0, v0
345
- ; CHECK-SD-NEXT: ret
346
- ;
347
- ; CHECK-GI-LABEL: test_vrev32Q8:
348
- ; CHECK-GI: // %bb.0:
349
- ; CHECK-GI-NEXT: adrp x8, .LCPI21_0
350
- ; CHECK-GI-NEXT: ldr q0, [x0]
351
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI21_0]
352
- ; CHECK-GI-NEXT: tbl.16b v0, { v0, v1 }, v2
353
- ; CHECK-GI-NEXT: ret
321
+ ; CHECK-LABEL: test_vrev32Q8:
322
+ ; CHECK: // %bb.0:
323
+ ; CHECK-NEXT: ldr q0, [x0]
324
+ ; CHECK-NEXT: rev32.16b v0, v0
325
+ ; CHECK-NEXT: ret
354
326
%tmp1 = load <16 x i8 >, ptr %A
355
327
%tmp2 = shufflevector <16 x i8 > %tmp1 , <16 x i8 > undef , <16 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 , i32 7 , i32 6 , i32 5 , i32 4 , i32 11 , i32 10 , i32 9 , i32 8 , i32 15 , i32 14 , i32 13 , i32 12 >
356
328
ret <16 x i8 > %tmp2
357
329
}
358
330
359
331
define <8 x i16 > @test_vrev32Q16 (ptr %A ) nounwind {
360
- ; CHECK-SD-LABEL: test_vrev32Q16:
361
- ; CHECK-SD: // %bb.0:
362
- ; CHECK-SD-NEXT: ldr q0, [x0]
363
- ; CHECK-SD-NEXT: rev32.8h v0, v0
364
- ; CHECK-SD-NEXT: ret
365
- ;
366
- ; CHECK-GI-LABEL: test_vrev32Q16:
367
- ; CHECK-GI: // %bb.0:
368
- ; CHECK-GI-NEXT: adrp x8, .LCPI22_0
369
- ; CHECK-GI-NEXT: ldr q0, [x0]
370
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI22_0]
371
- ; CHECK-GI-NEXT: tbl.16b v0, { v0, v1 }, v2
372
- ; CHECK-GI-NEXT: ret
332
+ ; CHECK-LABEL: test_vrev32Q16:
333
+ ; CHECK: // %bb.0:
334
+ ; CHECK-NEXT: ldr q0, [x0]
335
+ ; CHECK-NEXT: rev32.8h v0, v0
336
+ ; CHECK-NEXT: ret
373
337
%tmp1 = load <8 x i16 >, ptr %A
374
338
%tmp2 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > undef , <8 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 , i32 5 , i32 4 , i32 7 , i32 6 >
375
339
ret <8 x i16 > %tmp2
376
340
}
377
341
378
342
define <8 x i8 > @test_vrev16D8 (ptr %A ) nounwind {
379
- ; CHECK-SD-LABEL: test_vrev16D8:
380
- ; CHECK-SD: // %bb.0:
381
- ; CHECK-SD-NEXT: ldr d0, [x0]
382
- ; CHECK-SD-NEXT: rev16.8b v0, v0
383
- ; CHECK-SD-NEXT: ret
384
- ;
385
- ; CHECK-GI-LABEL: test_vrev16D8:
386
- ; CHECK-GI: // %bb.0:
387
- ; CHECK-GI-NEXT: ldr d0, [x0]
388
- ; CHECK-GI-NEXT: adrp x8, .LCPI23_0
389
- ; CHECK-GI-NEXT: ldr d1, [x8, :lo12:.LCPI23_0]
390
- ; CHECK-GI-NEXT: mov.d v0[1], v0[0]
391
- ; CHECK-GI-NEXT: tbl.16b v0, { v0 }, v1
392
- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
393
- ; CHECK-GI-NEXT: ret
343
+ ; CHECK-LABEL: test_vrev16D8:
344
+ ; CHECK: // %bb.0:
345
+ ; CHECK-NEXT: ldr d0, [x0]
346
+ ; CHECK-NEXT: rev16.8b v0, v0
347
+ ; CHECK-NEXT: ret
394
348
%tmp1 = load <8 x i8 >, ptr %A
395
349
%tmp2 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > undef , <8 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 , i32 5 , i32 4 , i32 7 , i32 6 >
396
350
ret <8 x i8 > %tmp2
397
351
}
398
352
399
353
define <16 x i8 > @test_vrev16Q8 (ptr %A ) nounwind {
400
- ; CHECK-SD-LABEL: test_vrev16Q8:
401
- ; CHECK-SD: // %bb.0:
402
- ; CHECK-SD-NEXT: ldr q0, [x0]
403
- ; CHECK-SD-NEXT: rev16.16b v0, v0
404
- ; CHECK-SD-NEXT: ret
405
- ;
406
- ; CHECK-GI-LABEL: test_vrev16Q8:
407
- ; CHECK-GI: // %bb.0:
408
- ; CHECK-GI-NEXT: adrp x8, .LCPI24_0
409
- ; CHECK-GI-NEXT: ldr q0, [x0]
410
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI24_0]
411
- ; CHECK-GI-NEXT: tbl.16b v0, { v0, v1 }, v2
412
- ; CHECK-GI-NEXT: ret
354
+ ; CHECK-LABEL: test_vrev16Q8:
355
+ ; CHECK: // %bb.0:
356
+ ; CHECK-NEXT: ldr q0, [x0]
357
+ ; CHECK-NEXT: rev16.16b v0, v0
358
+ ; CHECK-NEXT: ret
413
359
%tmp1 = load <16 x i8 >, ptr %A
414
360
%tmp2 = shufflevector <16 x i8 > %tmp1 , <16 x i8 > undef , <16 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 , i32 5 , i32 4 , i32 7 , i32 6 , i32 9 , i32 8 , i32 11 , i32 10 , i32 13 , i32 12 , i32 15 , i32 14 >
415
361
ret <16 x i8 > %tmp2
@@ -429,19 +375,11 @@ define <8 x i8> @test_vrev64D8_undef(ptr %A) nounwind {
429
375
}
430
376
431
377
define <8 x i16 > @test_vrev32Q16_undef (ptr %A ) nounwind {
432
- ; CHECK-SD-LABEL: test_vrev32Q16_undef:
433
- ; CHECK-SD: // %bb.0:
434
- ; CHECK-SD-NEXT: ldr q0, [x0]
435
- ; CHECK-SD-NEXT: rev32.8h v0, v0
436
- ; CHECK-SD-NEXT: ret
437
- ;
438
- ; CHECK-GI-LABEL: test_vrev32Q16_undef:
439
- ; CHECK-GI: // %bb.0:
440
- ; CHECK-GI-NEXT: adrp x8, .LCPI26_0
441
- ; CHECK-GI-NEXT: ldr q0, [x0]
442
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI26_0]
443
- ; CHECK-GI-NEXT: tbl.16b v0, { v0, v1 }, v2
444
- ; CHECK-GI-NEXT: ret
378
+ ; CHECK-LABEL: test_vrev32Q16_undef:
379
+ ; CHECK: // %bb.0:
380
+ ; CHECK-NEXT: ldr q0, [x0]
381
+ ; CHECK-NEXT: rev32.8h v0, v0
382
+ ; CHECK-NEXT: ret
445
383
%tmp1 = load <8 x i16 >, ptr %A
446
384
%tmp2 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > undef , <8 x i32 > <i32 undef , i32 0 , i32 undef , i32 2 , i32 5 , i32 4 , i32 7 , i32 undef >
447
385
ret <8 x i16 > %tmp2
0 commit comments