@@ -56,14 +56,44 @@ 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_Interrupt,
66+ (sequence "F%u_F", 0, 31),
67+ (sequence "V%u", 0, 31))>;
68+
69+ // Same as CSR_Interrupt, but including all 64-bit FP registers and all vector
70+ // registers.
71+ def CSR_XLEN_F64_V_Interrupt: CalleeSavedRegs<(add CSR_Interrupt,
72+ (sequence "F%u_D", 0, 31),
73+ (sequence "V%u", 0, 31))>;
74+
5975// Same as CSR_Interrupt, but excluding X16-X31.
6076def CSR_Interrupt_RVE : CalleeSavedRegs<(sub CSR_Interrupt,
6177 (sequence "X%u", 16, 31))>;
6278
6379// Same as CSR_XLEN_F32_Interrupt, but excluding X16-X31.
6480def CSR_XLEN_F32_Interrupt_RVE: CalleeSavedRegs<(sub CSR_XLEN_F32_Interrupt,
65- (sequence "X%u", 16, 31))>;
81+ (sequence "X%u", 16, 31))>;
6682
6783// Same as CSR_XLEN_F64_Interrupt, but excluding X16-X31.
6884def CSR_XLEN_F64_Interrupt_RVE: CalleeSavedRegs<(sub CSR_XLEN_F64_Interrupt,
69- (sequence "X%u", 16, 31))>;
85+ (sequence "X%u", 16, 31))>;
86+
87+ // Same as CSR_XLEN_V_Interrupt, but excluding X16-X31.
88+ def CSR_XLEN_V_Interrupt_RVE: CalleeSavedRegs<(add CSR_Interrupt,
89+ (sequence "V%u", 0, 31))>;
90+
91+ // Same as CSR_XLEN_F32_V_Interrupt, but excluding X16-X31.
92+ def CSR_XLEN_F32_V_Interrupt_RVE: CalleeSavedRegs<(add CSR_Interrupt,
93+ (sequence "F%u_F", 0, 31),
94+ (sequence "V%u", 0, 31))>;
95+
96+ // Same as CSR_XLEN_F64_V_Interrupt, but excluding X16-X31.
97+ def CSR_XLEN_F64_V_Interrupt_RVE: CalleeSavedRegs<(add CSR_Interrupt,
98+ (sequence "F%u_D", 0, 31),
99+ (sequence "V%u", 0, 31))>;
0 commit comments