[llvm] [RISCV] Save vector registers in interrupt handler. (PR #143808)
Pengcheng Wang via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 11 22:18:16 PDT 2025
================
@@ -757,6 +771,1697 @@ define void @foo_with_call() #1 {
; CHECK-RV32E-F-NEXT: addi sp, sp, 168
; CHECK-RV32E-F-NEXT: mret
;
+; CHECK-RV32-V-LABEL: foo_with_call:
+; CHECK-RV32-V: # %bb.0:
+; CHECK-RV32-V-NEXT: addi sp, sp, -80
+; CHECK-RV32-V-NEXT: sw ra, 76(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw t0, 72(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw t1, 68(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw t2, 64(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw a0, 60(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw a1, 56(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw a2, 52(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw a3, 48(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw a4, 44(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw a5, 40(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw a6, 36(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw a7, 32(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw t3, 28(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw t4, 24(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw t5, 20(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: sw t6, 16(sp) # 4-byte Folded Spill
+; CHECK-RV32-V-NEXT: csrr a0, vlenb
+; CHECK-RV32-V-NEXT: slli a0, a0, 5
+; CHECK-RV32-V-NEXT: sub sp, sp, a0
+; CHECK-RV32-V-NEXT: csrr a0, vlenb
+; CHECK-RV32-V-NEXT: slli a1, a0, 5
+; CHECK-RV32-V-NEXT: sub a0, a1, a0
+; CHECK-RV32-V-NEXT: add a0, sp, a0
+; CHECK-RV32-V-NEXT: addi a0, a0, 16
+; CHECK-RV32-V-NEXT: vs1r.v v0, (a0) # vscale x 8-byte Folded Spill
+; CHECK-RV32-V-NEXT: csrr a0, vlenb
+; CHECK-RV32-V-NEXT: slli a0, a0, 1
+; CHECK-RV32-V-NEXT: mv a1, a0
+; CHECK-RV32-V-NEXT: slli a0, a0, 1
+; CHECK-RV32-V-NEXT: add a1, a1, a0
+; CHECK-RV32-V-NEXT: slli a0, a0, 1
+; CHECK-RV32-V-NEXT: add a1, a1, a0
+; CHECK-RV32-V-NEXT: slli a0, a0, 1
+; CHECK-RV32-V-NEXT: add a0, a0, a1
+; CHECK-RV32-V-NEXT: add a0, sp, a0
+; CHECK-RV32-V-NEXT: addi a0, a0, 16
----------------
wangpc-pp wrote:
Too many duplicated instructions, we should try to remove them as follow-ups.
https://github.com/llvm/llvm-project/pull/143808
More information about the llvm-commits
mailing list