if (!ctx->scalar_pass) {
base = ctx->set->gpr_to_ra_reg[class][0];
if (high) {
- max_target = HIGH_CLASS_REGS(sz);
+ max_target = HIGH_CLASS_REGS(class - HIGH_OFFSET);
} else if (half) {
- max_target = HALF_CLASS_REGS(sz);
+ max_target = HALF_CLASS_REGS(class - HALF_OFFSET);
} else {
- max_target = CLASS_REGS(sz);
+ max_target = CLASS_REGS(class);
}
if ((sz == 1) && !high) {
#define NUM_HIGH_REGS (4 * 8) /* r48 to r55 */
#define FIRST_HIGH_REG (4 * 48)
/* Number of virtual regs in a given class: */
-#define CLASS_REGS(i) (NUM_REGS - (class_sizes[i] - 1))
-#define HALF_CLASS_REGS(i) (NUM_REGS - (half_class_sizes[i] - 1))
-#define HIGH_CLASS_REGS(i) (NUM_HIGH_REGS - (high_class_sizes[i] - 1))
+
+static inline unsigned CLASS_REGS(unsigned i)
+{
+ assert(i < class_count);
+
+ return (NUM_REGS - (class_sizes[i] - 1));
+}
+
+static inline unsigned HALF_CLASS_REGS(unsigned i)
+{
+ assert(i < half_class_count);
+
+ return (NUM_REGS - (half_class_sizes[i] - 1));
+}
+
+static inline unsigned HIGH_CLASS_REGS(unsigned i)
+{
+ assert(i < high_class_count);
+
+ return (NUM_HIGH_REGS - (high_class_sizes[i] - 1));
+}
#define HALF_OFFSET (class_count)
#define HIGH_OFFSET (class_count + half_class_count)