@@ -99,52 +99,78 @@ class MxRegClass<list<ValueType> regTypes, int alignment, dag regList>
9999 : RegisterClass<"M68k", regTypes, alignment, regList>;
100100
101101// Data Registers
102+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<8,16,16>]> in
102103def DR8 : MxRegClass<[i8], 16, (sequence "BD%u", 0, 7)>;
104+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
103105def DR16 : MxRegClass<[i16], 16, (sequence "WD%u", 0, 7)>;
106+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
104107def DR32 : MxRegClass<[i32], 32, (sequence "D%u", 0, 7)>;
105108
106109// Address Registers
110+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
107111def AR16 : MxRegClass<[i16], 16, (add (sequence "WA%u", 0, 6), WSP)>;
112+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
108113def AR32 : MxRegClass<[i32], 32, (add (sequence "A%u", 0, 6), SP)>;
109114
115+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
110116def AR32_NOSP : MxRegClass<[i32], 32, (sequence "A%u", 0, 6)>;
111117
112118// Index Register Classes
113119// FIXME try alternative ordering like `D0, D1, A0, A1, ...`
120+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
114121def XR16 : MxRegClass<[i16], 16, (add DR16, AR16)>;
122+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
115123def XR32 : MxRegClass<[i32], 32, (add DR32, AR32)>;
116124
125+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
117126def SPC : MxRegClass<[i32], 32, (add SP)>;
118127
119128// Floating Point Data Registers
129+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
120130def FPDR32 : MxRegClass<[f32], 32, (sequence "FP%u", 0, 7)>;
131+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<64,64,32>]> in
121132def FPDR64 : MxRegClass<[f64], 32, (add FPDR32)>;
133+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<80,128,32>]> in
122134def FPDR80 : MxRegClass<[f80], 32, (add FPDR32)>;
123135
124136let CopyCost = -1 in {
137+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<8,16,16>]> in
125138 def CCRC : MxRegClass<[i8], 16, (add CCR)>;
139+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
126140 def SRC : MxRegClass<[i16], 16, (add SR)>;
127141
128142 // Float Point System Control Registers
143+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
129144 def FPIC : MxRegClass<[i32], 32, (add FPIAR)>;
145+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
130146 def FPCSC : MxRegClass<[i32], 32, (add FPC, FPS)>;
147+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
131148 def FPSYSC : MxRegClass<[i32], 32, (add FPCSC, FPIC)>;
132149}
133150
134151let isAllocatable = 0 in {
152+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
135153 def PCC : MxRegClass<[i32], 32, (add PC)>;
136154}
137155
138156// Register used with tail call
157+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
139158def DR16_TC : MxRegClass<[i16], 16, (add D0, D1)>;
159+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
140160def DR32_TC : MxRegClass<[i32], 32, (add D0, D1)>;
141161
162+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
142163def AR16_TC : MxRegClass<[i16], 16, (add A0, A1)>;
164+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
143165def AR32_TC : MxRegClass<[i32], 32, (add A0, A1)>;
144166
167+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<16,16,16>]> in
145168def XR16_TC : MxRegClass<[i16], 16, (add DR16_TC, AR16_TC)>;
169+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
146170def XR32_TC : MxRegClass<[i32], 32, (add DR32_TC, AR32_TC)>;
147171
148172// These classes provide spill/restore order if used with MOVEM instruction
173+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
149174def SPILL : MxRegClass<[i32], 32, (add XR32)>;
175+ let RegInfos = RegInfoByHwMode<[DefaultMode], [RegInfo<32,32,32>]> in
150176def SPILL_R : MxRegClass<[i32], 32, (add SP, (sequence "A%u", 6, 0), (sequence "D%u", 7, 0))>;
0 commit comments