@@ -99,52 +99,77 @@ class MxRegClass<list<ValueType> regTypes, int alignment, dag regList>
99
99
: RegisterClass<"M68k", regTypes, alignment, regList>;
100
100
101
101
// Data Registers
102
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<8,16,16>]> in
102
103
def DR8 : MxRegClass<[i8], 16, (sequence "BD%u", 0, 7)>;
104
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
103
105
def DR16 : MxRegClass<[i16], 16, (sequence "WD%u", 0, 7)>;
106
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
104
107
def DR32 : MxRegClass<[i32], 32, (sequence "D%u", 0, 7)>;
105
108
106
109
// Address Registers
110
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
107
111
def AR16 : MxRegClass<[i16], 16, (add (sequence "WA%u", 0, 6), WSP)>;
112
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
108
113
def AR32 : MxRegClass<[i32], 32, (add (sequence "A%u", 0, 6), SP)>;
109
114
115
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
110
116
def AR32_NOSP : MxRegClass<[i32], 32, (sequence "A%u", 0, 6)>;
111
117
112
118
// Index Register Classes
113
119
// FIXME try alternative ordering like `D0, D1, A0, A1, ...`
120
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
114
121
def XR16 : MxRegClass<[i16], 16, (add DR16, AR16)>;
122
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
115
123
def XR32 : MxRegClass<[i32], 32, (add DR32, AR32)>;
116
124
125
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
117
126
def SPC : MxRegClass<[i32], 32, (add SP)>;
118
127
119
128
// Floating Point Data Registers
129
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
120
130
def FPDR32 : MxRegClass<[f32], 32, (sequence "FP%u", 0, 7)>;
131
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<64,64,32>]> in
121
132
def FPDR64 : MxRegClass<[f64], 32, (add FPDR32)>;
133
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<80,128,32>]> in
122
134
def FPDR80 : MxRegClass<[f80], 32, (add FPDR32)>;
123
135
124
136
let CopyCost = -1 in {
137
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<8,16,16>]> in
125
138
def CCRC : MxRegClass<[i8], 16, (add CCR)>;
139
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
126
140
def SRC : MxRegClass<[i16], 16, (add SR)>;
127
141
128
142
// Float Point System Control Registers
129
- def FPIC : MxRegClass<[i32], 32, (add FPIAR)>;
130
- def FPCSC : MxRegClass<[i32], 32, (add FPC, FPS)>;
131
- def FPSYSC : MxRegClass<[i32], 32, (add FPCSC, FPIC)>;
143
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in {
144
+ def FPIC : MxRegClass<[i32], 32, (add FPIAR)>;
145
+ def FPCSC : MxRegClass<[i32], 32, (add FPC, FPS)>;
146
+ def FPSYSC : MxRegClass<[i32], 32, (add FPCSC, FPIC)>;
147
+ }
132
148
}
133
149
134
150
let isAllocatable = 0 in {
151
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
135
152
def PCC : MxRegClass<[i32], 32, (add PC)>;
136
153
}
137
154
138
155
// Register used with tail call
156
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
139
157
def DR16_TC : MxRegClass<[i16], 16, (add D0, D1)>;
158
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
140
159
def DR32_TC : MxRegClass<[i32], 32, (add D0, D1)>;
141
160
161
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
142
162
def AR16_TC : MxRegClass<[i16], 16, (add A0, A1)>;
163
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
143
164
def AR32_TC : MxRegClass<[i32], 32, (add A0, A1)>;
144
165
166
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
145
167
def XR16_TC : MxRegClass<[i16], 16, (add DR16_TC, AR16_TC)>;
168
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
146
169
def XR32_TC : MxRegClass<[i32], 32, (add DR32_TC, AR32_TC)>;
147
170
148
171
// These classes provide spill/restore order if used with MOVEM instruction
149
- def SPILL : MxRegClass<[i32], 32, (add XR32)>;
150
- def SPILL_R : MxRegClass<[i32], 32, (add SP, (sequence "A%u", 6, 0), (sequence "D%u", 7, 0))>;
172
+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in {
173
+ def SPILL : MxRegClass<[i32], 32, (add XR32)>;
174
+ def SPILL_R : MxRegClass<[i32], 32, (add SP, (sequence "A%u", 6, 0), (sequence "D%u", 7, 0))>;
175
+ }
0 commit comments