i965/fs: Fix half() to handle more exotic register files.
authorFrancisco Jerez <currojerez@riseup.net>
Wed, 18 May 2016 00:37:25 +0000 (17:37 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Sat, 28 May 2016 06:29:05 +0000 (23:29 -0700)
horiz_offset() is able to deal with a superset of the register files
currently special-cased in half().  Just call horiz_offset() in all
cases.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
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);
 }
 
 /**