i965/fs: Fix half() to handle more exotic register files.
[mesa.git] / src / mesa / drivers / dri / i965 / brw_ir_fs.h
index bb05a058a8cad86af7e34d31bf82f15fd22f3e9f..06a74fab94dba1677dd33a98ba5586f1b02aad65 100644 (file)
@@ -188,31 +188,14 @@ is_uniform(const fs_reg &reg)
 }
 
 /**
- * Get either of the 8-component halves of a 16-component register.
- *
- * Note: this also works if \c reg represents a SIMD16 pair of registers.
+ * Get the specified 8-component quarter of a register.
+ * XXX - Maybe come up with a less misleading name for this (e.g. quarter())?
  */
 static inline fs_reg
-half(fs_reg reg, unsigned idx)
+half(const fs_reg &reg, unsigned idx)
 {
    assert(idx < 2);
-
-   switch (reg.file) {
-   case BAD_FILE:
-   case UNIFORM:
-   case IMM:
-      return reg;
-
-   case VGRF:
-   case MRF:
-      return horiz_offset(reg, 8 * idx);
-
-   case ARF:
-   case FIXED_GRF:
-   case ATTR:
-      unreachable("Cannot take half of this register type");
-   }
-   return reg;
+   return horiz_offset(reg, 8 * idx);
 }
 
 /**