@@ -414,41 +414,55 @@ define <4 x half> @sitofp_v4i8(<4 x i8> %a) #0 {
414
414
}
415
415
416
416
define <8 x half > @sitofp_v8i8 (<8 x i8 > %a ) #0 {
417
- ; CHECK-LABEL: sitofp_v8i8:
418
- ; CHECK: // %bb.0:
419
- ; CHECK-NEXT: sshll v0.8h, v0.8b, #0
420
- ; CHECK-NEXT: sshll2 v1.4s, v0.8h, #0
421
- ; CHECK-NEXT: sshll v0.4s, v0.4h, #0
422
- ; CHECK-NEXT: scvtf v1.4s, v1.4s
423
- ; CHECK-NEXT: scvtf v0.4s, v0.4s
424
- ; CHECK-NEXT: fcvtn v1.4h, v1.4s
425
- ; CHECK-NEXT: fcvtn v0.4h, v0.4s
426
- ; CHECK-NEXT: mov v0.d[1], v1.d[0]
427
- ; CHECK-NEXT: ret
417
+ ; CHECK-CVT-LABEL: sitofp_v8i8:
418
+ ; CHECK-CVT: // %bb.0:
419
+ ; CHECK-CVT-NEXT: sshll v0.8h, v0.8b, #0
420
+ ; CHECK-CVT-NEXT: sshll2 v1.4s, v0.8h, #0
421
+ ; CHECK-CVT-NEXT: sshll v0.4s, v0.4h, #0
422
+ ; CHECK-CVT-NEXT: scvtf v1.4s, v1.4s
423
+ ; CHECK-CVT-NEXT: scvtf v0.4s, v0.4s
424
+ ; CHECK-CVT-NEXT: fcvtn v1.4h, v1.4s
425
+ ; CHECK-CVT-NEXT: fcvtn v0.4h, v0.4s
426
+ ; CHECK-CVT-NEXT: mov v0.d[1], v1.d[0]
427
+ ; CHECK-CVT-NEXT: ret
428
+ ;
429
+ ; CHECK-FP16-LABEL: sitofp_v8i8:
430
+ ; CHECK-FP16: // %bb.0:
431
+ ; CHECK-FP16-NEXT: sshll v0.8h, v0.8b, #0
432
+ ; CHECK-FP16-NEXT: scvtf v0.8h, v0.8h
433
+ ; CHECK-FP16-NEXT: ret
428
434
%1 = sitofp <8 x i8 > %a to <8 x half >
429
435
ret <8 x half > %1
430
436
}
431
437
432
438
define <16 x half > @sitofp_v16i8 (<16 x i8 > %a ) #0 {
433
- ; CHECK-LABEL: sitofp_v16i8:
434
- ; CHECK: // %bb.0:
435
- ; CHECK-NEXT: sshll2 v1.8h, v0.16b, #0
436
- ; CHECK-NEXT: sshll v0.8h, v0.8b, #0
437
- ; CHECK-NEXT: sshll2 v2.4s, v1.8h, #0
438
- ; CHECK-NEXT: sshll v1.4s, v1.4h, #0
439
- ; CHECK-NEXT: sshll2 v3.4s, v0.8h, #0
440
- ; CHECK-NEXT: sshll v0.4s, v0.4h, #0
441
- ; CHECK-NEXT: scvtf v2.4s, v2.4s
442
- ; CHECK-NEXT: scvtf v1.4s, v1.4s
443
- ; CHECK-NEXT: scvtf v3.4s, v3.4s
444
- ; CHECK-NEXT: scvtf v0.4s, v0.4s
445
- ; CHECK-NEXT: fcvtn v2.4h, v2.4s
446
- ; CHECK-NEXT: fcvtn v1.4h, v1.4s
447
- ; CHECK-NEXT: fcvtn v3.4h, v3.4s
448
- ; CHECK-NEXT: fcvtn v0.4h, v0.4s
449
- ; CHECK-NEXT: mov v1.d[1], v2.d[0]
450
- ; CHECK-NEXT: mov v0.d[1], v3.d[0]
451
- ; CHECK-NEXT: ret
439
+ ; CHECK-CVT-LABEL: sitofp_v16i8:
440
+ ; CHECK-CVT: // %bb.0:
441
+ ; CHECK-CVT-NEXT: sshll2 v1.8h, v0.16b, #0
442
+ ; CHECK-CVT-NEXT: sshll v0.8h, v0.8b, #0
443
+ ; CHECK-CVT-NEXT: sshll2 v2.4s, v1.8h, #0
444
+ ; CHECK-CVT-NEXT: sshll v1.4s, v1.4h, #0
445
+ ; CHECK-CVT-NEXT: sshll2 v3.4s, v0.8h, #0
446
+ ; CHECK-CVT-NEXT: sshll v0.4s, v0.4h, #0
447
+ ; CHECK-CVT-NEXT: scvtf v2.4s, v2.4s
448
+ ; CHECK-CVT-NEXT: scvtf v1.4s, v1.4s
449
+ ; CHECK-CVT-NEXT: scvtf v3.4s, v3.4s
450
+ ; CHECK-CVT-NEXT: scvtf v0.4s, v0.4s
451
+ ; CHECK-CVT-NEXT: fcvtn v2.4h, v2.4s
452
+ ; CHECK-CVT-NEXT: fcvtn v1.4h, v1.4s
453
+ ; CHECK-CVT-NEXT: fcvtn v3.4h, v3.4s
454
+ ; CHECK-CVT-NEXT: fcvtn v0.4h, v0.4s
455
+ ; CHECK-CVT-NEXT: mov v1.d[1], v2.d[0]
456
+ ; CHECK-CVT-NEXT: mov v0.d[1], v3.d[0]
457
+ ; CHECK-CVT-NEXT: ret
458
+ ;
459
+ ; CHECK-FP16-LABEL: sitofp_v16i8:
460
+ ; CHECK-FP16: // %bb.0:
461
+ ; CHECK-FP16-NEXT: sshll2 v1.8h, v0.16b, #0
462
+ ; CHECK-FP16-NEXT: sshll v0.8h, v0.8b, #0
463
+ ; CHECK-FP16-NEXT: scvtf v1.8h, v1.8h
464
+ ; CHECK-FP16-NEXT: scvtf v0.8h, v0.8h
465
+ ; CHECK-FP16-NEXT: ret
452
466
%1 = sitofp <16 x i8 > %a to <16 x half >
453
467
ret <16 x half > %1
454
468
}
@@ -525,41 +539,55 @@ define <4 x half> @uitofp_v4i8(<4 x i8> %a) #0 {
525
539
}
526
540
527
541
define <8 x half > @uitofp_v8i8 (<8 x i8 > %a ) #0 {
528
- ; CHECK-LABEL: uitofp_v8i8:
529
- ; CHECK: // %bb.0:
530
- ; CHECK-NEXT: ushll v0.8h, v0.8b, #0
531
- ; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
532
- ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
533
- ; CHECK-NEXT: ucvtf v1.4s, v1.4s
534
- ; CHECK-NEXT: ucvtf v0.4s, v0.4s
535
- ; CHECK-NEXT: fcvtn v1.4h, v1.4s
536
- ; CHECK-NEXT: fcvtn v0.4h, v0.4s
537
- ; CHECK-NEXT: mov v0.d[1], v1.d[0]
538
- ; CHECK-NEXT: ret
542
+ ; CHECK-CVT-LABEL: uitofp_v8i8:
543
+ ; CHECK-CVT: // %bb.0:
544
+ ; CHECK-CVT-NEXT: ushll v0.8h, v0.8b, #0
545
+ ; CHECK-CVT-NEXT: ushll2 v1.4s, v0.8h, #0
546
+ ; CHECK-CVT-NEXT: ushll v0.4s, v0.4h, #0
547
+ ; CHECK-CVT-NEXT: ucvtf v1.4s, v1.4s
548
+ ; CHECK-CVT-NEXT: ucvtf v0.4s, v0.4s
549
+ ; CHECK-CVT-NEXT: fcvtn v1.4h, v1.4s
550
+ ; CHECK-CVT-NEXT: fcvtn v0.4h, v0.4s
551
+ ; CHECK-CVT-NEXT: mov v0.d[1], v1.d[0]
552
+ ; CHECK-CVT-NEXT: ret
553
+ ;
554
+ ; CHECK-FP16-LABEL: uitofp_v8i8:
555
+ ; CHECK-FP16: // %bb.0:
556
+ ; CHECK-FP16-NEXT: ushll v0.8h, v0.8b, #0
557
+ ; CHECK-FP16-NEXT: ucvtf v0.8h, v0.8h
558
+ ; CHECK-FP16-NEXT: ret
539
559
%1 = uitofp <8 x i8 > %a to <8 x half >
540
560
ret <8 x half > %1
541
561
}
542
562
543
563
define <16 x half > @uitofp_v16i8 (<16 x i8 > %a ) #0 {
544
- ; CHECK-LABEL: uitofp_v16i8:
545
- ; CHECK: // %bb.0:
546
- ; CHECK-NEXT: ushll2 v1.8h, v0.16b, #0
547
- ; CHECK-NEXT: ushll v0.8h, v0.8b, #0
548
- ; CHECK-NEXT: ushll2 v2.4s, v1.8h, #0
549
- ; CHECK-NEXT: ushll v1.4s, v1.4h, #0
550
- ; CHECK-NEXT: ushll2 v3.4s, v0.8h, #0
551
- ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
552
- ; CHECK-NEXT: ucvtf v2.4s, v2.4s
553
- ; CHECK-NEXT: ucvtf v1.4s, v1.4s
554
- ; CHECK-NEXT: ucvtf v3.4s, v3.4s
555
- ; CHECK-NEXT: ucvtf v0.4s, v0.4s
556
- ; CHECK-NEXT: fcvtn v2.4h, v2.4s
557
- ; CHECK-NEXT: fcvtn v1.4h, v1.4s
558
- ; CHECK-NEXT: fcvtn v3.4h, v3.4s
559
- ; CHECK-NEXT: fcvtn v0.4h, v0.4s
560
- ; CHECK-NEXT: mov v1.d[1], v2.d[0]
561
- ; CHECK-NEXT: mov v0.d[1], v3.d[0]
562
- ; CHECK-NEXT: ret
564
+ ; CHECK-CVT-LABEL: uitofp_v16i8:
565
+ ; CHECK-CVT: // %bb.0:
566
+ ; CHECK-CVT-NEXT: ushll2 v1.8h, v0.16b, #0
567
+ ; CHECK-CVT-NEXT: ushll v0.8h, v0.8b, #0
568
+ ; CHECK-CVT-NEXT: ushll2 v2.4s, v1.8h, #0
569
+ ; CHECK-CVT-NEXT: ushll v1.4s, v1.4h, #0
570
+ ; CHECK-CVT-NEXT: ushll2 v3.4s, v0.8h, #0
571
+ ; CHECK-CVT-NEXT: ushll v0.4s, v0.4h, #0
572
+ ; CHECK-CVT-NEXT: ucvtf v2.4s, v2.4s
573
+ ; CHECK-CVT-NEXT: ucvtf v1.4s, v1.4s
574
+ ; CHECK-CVT-NEXT: ucvtf v3.4s, v3.4s
575
+ ; CHECK-CVT-NEXT: ucvtf v0.4s, v0.4s
576
+ ; CHECK-CVT-NEXT: fcvtn v2.4h, v2.4s
577
+ ; CHECK-CVT-NEXT: fcvtn v1.4h, v1.4s
578
+ ; CHECK-CVT-NEXT: fcvtn v3.4h, v3.4s
579
+ ; CHECK-CVT-NEXT: fcvtn v0.4h, v0.4s
580
+ ; CHECK-CVT-NEXT: mov v1.d[1], v2.d[0]
581
+ ; CHECK-CVT-NEXT: mov v0.d[1], v3.d[0]
582
+ ; CHECK-CVT-NEXT: ret
583
+ ;
584
+ ; CHECK-FP16-LABEL: uitofp_v16i8:
585
+ ; CHECK-FP16: // %bb.0:
586
+ ; CHECK-FP16-NEXT: ushll2 v1.8h, v0.16b, #0
587
+ ; CHECK-FP16-NEXT: ushll v0.8h, v0.8b, #0
588
+ ; CHECK-FP16-NEXT: ucvtf v1.8h, v1.8h
589
+ ; CHECK-FP16-NEXT: ucvtf v0.8h, v0.8h
590
+ ; CHECK-FP16-NEXT: ret
563
591
%1 = uitofp <16 x i8 > %a to <16 x half >
564
592
ret <16 x half > %1
565
593
}
0 commit comments