@@ -585,19 +585,13 @@ define double @extractelt_nxv16f64_0(<vscale x 16 x double> %v) {
585
585
define double @extractelt_nxv16f64_neg1 (<vscale x 16 x double > %v ) {
586
586
; RV32-LABEL: extractelt_nxv16f64_neg1:
587
587
; RV32: # %bb.0:
588
- ; RV32-NEXT: addi sp, sp, -80
589
- ; RV32-NEXT: .cfi_def_cfa_offset 80
590
- ; RV32-NEXT: sw ra, 76(sp) # 4-byte Folded Spill
591
- ; RV32-NEXT: sw s0, 72(sp) # 4-byte Folded Spill
592
- ; RV32-NEXT: .cfi_offset ra, -4
593
- ; RV32-NEXT: .cfi_offset s0, -8
594
- ; RV32-NEXT: addi s0, sp, 80
595
- ; RV32-NEXT: .cfi_def_cfa s0, 0
588
+ ; RV32-NEXT: addi sp, sp, -16
589
+ ; RV32-NEXT: .cfi_def_cfa_offset 16
596
590
; RV32-NEXT: csrr a0, vlenb
597
591
; RV32-NEXT: slli a0, a0, 4
598
592
; RV32-NEXT: sub sp, sp, a0
599
- ; RV32-NEXT: andi sp, sp, -64
600
- ; RV32-NEXT: addi a0, sp, 64
593
+ ; RV32-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x10, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 16 * vlenb
594
+ ; RV32-NEXT: addi a0, sp, 16
601
595
; RV32-NEXT: vs8r.v v8, (a0)
602
596
; RV32-NEXT: csrr a1, vlenb
603
597
; RV32-NEXT: slli a2, a1, 3
@@ -606,27 +600,21 @@ define double @extractelt_nxv16f64_neg1(<vscale x 16 x double> %v) {
606
600
; RV32-NEXT: slli a1, a1, 4
607
601
; RV32-NEXT: add a0, a1, a0
608
602
; RV32-NEXT: fld fa0, -8(a0)
609
- ; RV32-NEXT: addi sp, s0, -80
610
- ; RV32-NEXT: lw ra, 76(sp) # 4-byte Folded Reload
611
- ; RV32-NEXT: lw s0, 72(sp) # 4-byte Folded Reload
612
- ; RV32-NEXT: addi sp, sp, 80
603
+ ; RV32-NEXT: csrr a0, vlenb
604
+ ; RV32-NEXT: slli a0, a0, 4
605
+ ; RV32-NEXT: add sp, sp, a0
606
+ ; RV32-NEXT: addi sp, sp, 16
613
607
; RV32-NEXT: ret
614
608
;
615
609
; RV64-LABEL: extractelt_nxv16f64_neg1:
616
610
; RV64: # %bb.0:
617
- ; RV64-NEXT: addi sp, sp, -80
618
- ; RV64-NEXT: .cfi_def_cfa_offset 80
619
- ; RV64-NEXT: sd ra, 72(sp) # 8-byte Folded Spill
620
- ; RV64-NEXT: sd s0, 64(sp) # 8-byte Folded Spill
621
- ; RV64-NEXT: .cfi_offset ra, -8
622
- ; RV64-NEXT: .cfi_offset s0, -16
623
- ; RV64-NEXT: addi s0, sp, 80
624
- ; RV64-NEXT: .cfi_def_cfa s0, 0
611
+ ; RV64-NEXT: addi sp, sp, -16
612
+ ; RV64-NEXT: .cfi_def_cfa_offset 16
625
613
; RV64-NEXT: csrr a0, vlenb
626
614
; RV64-NEXT: slli a0, a0, 4
627
615
; RV64-NEXT: sub sp, sp, a0
628
- ; RV64-NEXT: andi sp, sp, -64
629
- ; RV64-NEXT: addi a0, sp, 64
616
+ ; RV64-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x10, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 16 * vlenb
617
+ ; RV64-NEXT: addi a0, sp, 16
630
618
; RV64-NEXT: vs8r.v v8, (a0)
631
619
; RV64-NEXT: csrr a2, vlenb
632
620
; RV64-NEXT: slli a1, a2, 3
@@ -643,10 +631,10 @@ define double @extractelt_nxv16f64_neg1(<vscale x 16 x double> %v) {
643
631
; RV64-NEXT: slli a2, a2, 3
644
632
; RV64-NEXT: add a0, a0, a2
645
633
; RV64-NEXT: fld fa0, 0(a0)
646
- ; RV64-NEXT: addi sp, s0, -80
647
- ; RV64-NEXT: ld ra, 72(sp) # 8-byte Folded Reload
648
- ; RV64-NEXT: ld s0, 64(sp) # 8-byte Folded Reload
649
- ; RV64-NEXT: addi sp, sp, 80
634
+ ; RV64-NEXT: csrr a0, vlenb
635
+ ; RV64-NEXT: slli a0, a0, 4
636
+ ; RV64-NEXT: add sp, sp, a0
637
+ ; RV64-NEXT: addi sp, sp, 16
650
638
; RV64-NEXT: ret
651
639
%r = extractelement <vscale x 16 x double > %v , i32 -1
652
640
ret double %r
@@ -664,75 +652,34 @@ define double @extractelt_nxv16f64_imm(<vscale x 16 x double> %v) {
664
652
}
665
653
666
654
define double @extractelt_nxv16f64_idx (<vscale x 16 x double > %v , i32 zeroext %idx ) {
667
- ; RV32-LABEL: extractelt_nxv16f64_idx:
668
- ; RV32: # %bb.0:
669
- ; RV32-NEXT: csrr a1, vlenb
670
- ; RV32-NEXT: slli a2, a1, 1
671
- ; RV32-NEXT: addi a2, a2, -1
672
- ; RV32-NEXT: bltu a0, a2, .LBB54_2
673
- ; RV32-NEXT: # %bb.1:
674
- ; RV32-NEXT: mv a0, a2
675
- ; RV32-NEXT: .LBB54_2:
676
- ; RV32-NEXT: addi sp, sp, -80
677
- ; RV32-NEXT: .cfi_def_cfa_offset 80
678
- ; RV32-NEXT: sw ra, 76(sp) # 4-byte Folded Spill
679
- ; RV32-NEXT: sw s0, 72(sp) # 4-byte Folded Spill
680
- ; RV32-NEXT: .cfi_offset ra, -4
681
- ; RV32-NEXT: .cfi_offset s0, -8
682
- ; RV32-NEXT: addi s0, sp, 80
683
- ; RV32-NEXT: .cfi_def_cfa s0, 0
684
- ; RV32-NEXT: csrr a2, vlenb
685
- ; RV32-NEXT: slli a2, a2, 4
686
- ; RV32-NEXT: sub sp, sp, a2
687
- ; RV32-NEXT: andi sp, sp, -64
688
- ; RV32-NEXT: slli a0, a0, 3
689
- ; RV32-NEXT: addi a2, sp, 64
690
- ; RV32-NEXT: add a0, a2, a0
691
- ; RV32-NEXT: vs8r.v v8, (a2)
692
- ; RV32-NEXT: slli a1, a1, 3
693
- ; RV32-NEXT: add a1, a2, a1
694
- ; RV32-NEXT: vs8r.v v16, (a1)
695
- ; RV32-NEXT: fld fa0, 0(a0)
696
- ; RV32-NEXT: addi sp, s0, -80
697
- ; RV32-NEXT: lw ra, 76(sp) # 4-byte Folded Reload
698
- ; RV32-NEXT: lw s0, 72(sp) # 4-byte Folded Reload
699
- ; RV32-NEXT: addi sp, sp, 80
700
- ; RV32-NEXT: ret
701
- ;
702
- ; RV64-LABEL: extractelt_nxv16f64_idx:
703
- ; RV64: # %bb.0:
704
- ; RV64-NEXT: csrr a1, vlenb
705
- ; RV64-NEXT: slli a2, a1, 1
706
- ; RV64-NEXT: addi a2, a2, -1
707
- ; RV64-NEXT: bltu a0, a2, .LBB54_2
708
- ; RV64-NEXT: # %bb.1:
709
- ; RV64-NEXT: mv a0, a2
710
- ; RV64-NEXT: .LBB54_2:
711
- ; RV64-NEXT: addi sp, sp, -80
712
- ; RV64-NEXT: .cfi_def_cfa_offset 80
713
- ; RV64-NEXT: sd ra, 72(sp) # 8-byte Folded Spill
714
- ; RV64-NEXT: sd s0, 64(sp) # 8-byte Folded Spill
715
- ; RV64-NEXT: .cfi_offset ra, -8
716
- ; RV64-NEXT: .cfi_offset s0, -16
717
- ; RV64-NEXT: addi s0, sp, 80
718
- ; RV64-NEXT: .cfi_def_cfa s0, 0
719
- ; RV64-NEXT: csrr a2, vlenb
720
- ; RV64-NEXT: slli a2, a2, 4
721
- ; RV64-NEXT: sub sp, sp, a2
722
- ; RV64-NEXT: andi sp, sp, -64
723
- ; RV64-NEXT: slli a0, a0, 3
724
- ; RV64-NEXT: addi a2, sp, 64
725
- ; RV64-NEXT: add a0, a2, a0
726
- ; RV64-NEXT: vs8r.v v8, (a2)
727
- ; RV64-NEXT: slli a1, a1, 3
728
- ; RV64-NEXT: add a1, a2, a1
729
- ; RV64-NEXT: vs8r.v v16, (a1)
730
- ; RV64-NEXT: fld fa0, 0(a0)
731
- ; RV64-NEXT: addi sp, s0, -80
732
- ; RV64-NEXT: ld ra, 72(sp) # 8-byte Folded Reload
733
- ; RV64-NEXT: ld s0, 64(sp) # 8-byte Folded Reload
734
- ; RV64-NEXT: addi sp, sp, 80
735
- ; RV64-NEXT: ret
655
+ ; CHECK-LABEL: extractelt_nxv16f64_idx:
656
+ ; CHECK: # %bb.0:
657
+ ; CHECK-NEXT: csrr a1, vlenb
658
+ ; CHECK-NEXT: slli a2, a1, 1
659
+ ; CHECK-NEXT: addi a2, a2, -1
660
+ ; CHECK-NEXT: bltu a0, a2, .LBB54_2
661
+ ; CHECK-NEXT: # %bb.1:
662
+ ; CHECK-NEXT: mv a0, a2
663
+ ; CHECK-NEXT: .LBB54_2:
664
+ ; CHECK-NEXT: addi sp, sp, -16
665
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
666
+ ; CHECK-NEXT: csrr a2, vlenb
667
+ ; CHECK-NEXT: slli a2, a2, 4
668
+ ; CHECK-NEXT: sub sp, sp, a2
669
+ ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x10, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 16 * vlenb
670
+ ; CHECK-NEXT: slli a0, a0, 3
671
+ ; CHECK-NEXT: addi a2, sp, 16
672
+ ; CHECK-NEXT: add a0, a2, a0
673
+ ; CHECK-NEXT: vs8r.v v8, (a2)
674
+ ; CHECK-NEXT: slli a1, a1, 3
675
+ ; CHECK-NEXT: add a1, a2, a1
676
+ ; CHECK-NEXT: vs8r.v v16, (a1)
677
+ ; CHECK-NEXT: fld fa0, 0(a0)
678
+ ; CHECK-NEXT: csrr a0, vlenb
679
+ ; CHECK-NEXT: slli a0, a0, 4
680
+ ; CHECK-NEXT: add sp, sp, a0
681
+ ; CHECK-NEXT: addi sp, sp, 16
682
+ ; CHECK-NEXT: ret
736
683
%r = extractelement <vscale x 16 x double > %v , i32 %idx
737
684
ret double %r
738
685
}
0 commit comments