@@ -56,14 +56,40 @@ def CSR_XLEN_F32_Interrupt: CalleeSavedRegs<(add CSR_Interrupt,
5656def CSR_XLEN_F64_Interrupt: CalleeSavedRegs<(add CSR_Interrupt,
5757 (sequence "F%u_D", 0, 31))>;
5858
59+ // Same as CSR_Interrupt, but including all vector registers.
60+ def CSR_XLEN_V_Interrupt: CalleeSavedRegs<(add CSR_Interrupt,
61+ (sequence "V%u", 0, 31))>;
62+
63+ // Same as CSR_Interrupt, but including all 32-bit FP registers and all vector
64+ // registers.
65+ def CSR_XLEN_F32_V_Interrupt: CalleeSavedRegs<(add CSR_XLEN_F32_Interrupt,
66+ (sequence "V%u", 0, 31))>;
67+
68+ // Same as CSR_Interrupt, but including all 64-bit FP registers and all vector
69+ // registers.
70+ def CSR_XLEN_F64_V_Interrupt: CalleeSavedRegs<(add CSR_XLEN_F64_Interrupt,
71+ (sequence "V%u", 0, 31))>;
72+
5973// Same as CSR_Interrupt, but excluding X16-X31.
6074def CSR_Interrupt_RVE : CalleeSavedRegs<(sub CSR_Interrupt,
6175 (sequence "X%u", 16, 31))>;
6276
6377// Same as CSR_XLEN_F32_Interrupt, but excluding X16-X31.
6478def CSR_XLEN_F32_Interrupt_RVE: CalleeSavedRegs<(sub CSR_XLEN_F32_Interrupt,
65- (sequence "X%u", 16, 31))>;
79+ (sequence "X%u", 16, 31))>;
6680
6781// Same as CSR_XLEN_F64_Interrupt, but excluding X16-X31.
6882def CSR_XLEN_F64_Interrupt_RVE: CalleeSavedRegs<(sub CSR_XLEN_F64_Interrupt,
69- (sequence "X%u", 16, 31))>;
83+ (sequence "X%u", 16, 31))>;
84+
85+ // Same as CSR_XLEN_V_Interrupt, but excluding X16-X31.
86+ def CSR_XLEN_V_Interrupt_RVE: CalleeSavedRegs<(sub CSR_XLEN_V_Interrupt,
87+ (sequence "X%u", 16, 31))>;
88+
89+ // Same as CSR_XLEN_F32_V_Interrupt, but excluding X16-X31.
90+ def CSR_XLEN_F32_V_Interrupt_RVE: CalleeSavedRegs<(sub CSR_XLEN_F32_V_Interrupt,
91+ (sequence "X%u", 16, 31))>;
92+
93+ // Same as CSR_XLEN_F64_V_Interrupt, but excluding X16-X31.
94+ def CSR_XLEN_F64_V_Interrupt_RVE: CalleeSavedRegs<(sub CSR_XLEN_F64_V_Interrupt,
95+ (sequence "X%u", 16, 31))>;
0 commit comments