@@ -56,14 +56,40 @@ def CSR_XLEN_F32_Interrupt: CalleeSavedRegs<(add CSR_Interrupt,
56
56
def CSR_XLEN_F64_Interrupt: CalleeSavedRegs<(add CSR_Interrupt,
57
57
(sequence "F%u_D", 0, 31))>;
58
58
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
+
59
73
// Same as CSR_Interrupt, but excluding X16-X31.
60
74
def CSR_Interrupt_RVE : CalleeSavedRegs<(sub CSR_Interrupt,
61
75
(sequence "X%u", 16, 31))>;
62
76
63
77
// Same as CSR_XLEN_F32_Interrupt, but excluding X16-X31.
64
78
def CSR_XLEN_F32_Interrupt_RVE: CalleeSavedRegs<(sub CSR_XLEN_F32_Interrupt,
65
- (sequence "X%u", 16, 31))>;
79
+ (sequence "X%u", 16, 31))>;
66
80
67
81
// Same as CSR_XLEN_F64_Interrupt, but excluding X16-X31.
68
82
def 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