@@ -204,21 +204,13 @@ def FPINST2 : ARMReg<10, "fpinst2">;
204
204
def GPR : RegisterClass<"ARM", [i32], 32, (add (sequence "R%u", 0, 12),
205
205
SP, LR, PC)> {
206
206
// Allocate LR as the first CSR since it is always saved anyway.
207
- // For Thumb2, using LR would force 32bit Thumb2 instructions, not the smaller
208
- // Thumb1 ones. It is a little better for codesize on average to use the
209
- // default order.
210
207
// For Thumb1 mode, we don't want to allocate hi regs at all, as we don't
211
208
// know how to spill them. If we make our prologue/epilogue code smarter at
212
209
// some point, we can go back to using the above allocation orders for the
213
210
// Thumb1 instructions that know how to use hi regs.
214
211
let AltOrders = [(add LR, GPR), (trunc GPR, 8)];
215
212
let AltOrderSelect = [{
216
- if (MF.getSubtarget<ARMSubtarget>().isThumb1Only())
217
- return 2;
218
- if (MF.getSubtarget<ARMSubtarget>().isThumb2() &&
219
- MF.getFunction().optForMinSize())
220
- return 0;
221
- return 1;
213
+ return 1 + MF.getSubtarget<ARMSubtarget>().isThumb1Only();
222
214
}];
223
215
let DiagnosticString = "operand must be a register in range [r0, r15]";
224
216
}
@@ -229,12 +221,7 @@ def GPR : RegisterClass<"ARM", [i32], 32, (add (sequence "R%u", 0, 12),
229
221
def GPRnopc : RegisterClass<"ARM", [i32], 32, (sub GPR, PC)> {
230
222
let AltOrders = [(add LR, GPRnopc), (trunc GPRnopc, 8)];
231
223
let AltOrderSelect = [{
232
- if (MF.getSubtarget<ARMSubtarget>().isThumb1Only())
233
- return 2;
234
- if (MF.getSubtarget<ARMSubtarget>().isThumb2() &&
235
- MF.getFunction().optForMinSize())
236
- return 0;
237
- return 1;
224
+ return 1 + MF.getSubtarget<ARMSubtarget>().isThumb1Only();
238
225
}];
239
226
let DiagnosticString = "operand must be a register in range [r0, r14]";
240
227
}
@@ -245,12 +232,7 @@ def GPRnopc : RegisterClass<"ARM", [i32], 32, (sub GPR, PC)> {
245
232
def GPRwithAPSR : RegisterClass<"ARM", [i32], 32, (add (sub GPR, PC), APSR_NZCV)> {
246
233
let AltOrders = [(add LR, GPRnopc), (trunc GPRnopc, 8)];
247
234
let AltOrderSelect = [{
248
- if (MF.getSubtarget<ARMSubtarget>().isThumb1Only())
249
- return 2;
250
- if (MF.getSubtarget<ARMSubtarget>().isThumb2() &&
251
- MF.getFunction().optForMinSize())
252
- return 0;
253
- return 1;
235
+ return 1 + MF.getSubtarget<ARMSubtarget>().isThumb1Only();
254
236
}];
255
237
let DiagnosticString = "operand must be a register in range [r0, r14] or apsr_nzcv";
256
238
}
@@ -271,12 +253,7 @@ def GPRsp : RegisterClass<"ARM", [i32], 32, (add SP)> {
271
253
def rGPR : RegisterClass<"ARM", [i32], 32, (sub GPR, SP, PC)> {
272
254
let AltOrders = [(add LR, rGPR), (trunc rGPR, 8)];
273
255
let AltOrderSelect = [{
274
- if (MF.getSubtarget<ARMSubtarget>().isThumb1Only())
275
- return 2;
276
- if (MF.getSubtarget<ARMSubtarget>().isThumb2() &&
277
- MF.getFunction().optForMinSize())
278
- return 0;
279
- return 1;
256
+ return 1 + MF.getSubtarget<ARMSubtarget>().isThumb1Only();
280
257
}];
281
258
let DiagnosticType = "rGPR";
282
259
}
0 commit comments