From: Francisco Jerez Date: Wed, 18 May 2016 00:37:25 +0000 (-0700) Subject: i965/fs: Fix half() to handle more exotic register files. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=298320280f7255c6ed18a65780a93cb6a29e8644;p=mesa.git i965/fs: Fix half() to handle more exotic register files. 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 --- diff --git a/src/mesa/drivers/dri/i965/brw_ir_fs.h b/src/mesa/drivers/dri/i965/brw_ir_fs.h index bb05a058a8c..06a74fab94d 100644 --- a/src/mesa/drivers/dri/i965/brw_ir_fs.h +++ b/src/mesa/drivers/dri/i965/brw_ir_fs.h @@ -188,31 +188,14 @@ is_uniform(const fs_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 ®, 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); } /**