Yes, we could avoid having four copies of essentially the same code by using templates here. --- src/mesa/drivers/dri/i965/brw_fs.h | 8 ++++++++ src/mesa/drivers/dri/i965/brw_shader.h | 8 ++++++++ src/mesa/drivers/dri/i965/brw_vec4.h | 16 ++++++++++++++++ 3 files changed, 32 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index f918f7e..c011758 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -93,6 +93,14 @@ public: }; static inline fs_reg +offset(fs_reg reg, unsigned delta) +{ + assert(delta == 0 || (reg.file != HW_REG && reg.file != IMM)); + reg.reg_offset += delta; + return reg; +} + +static inline fs_reg byte_offset(fs_reg reg, unsigned delta) { assert(delta == 0 || (reg.file != HW_REG && reg.file != IMM)); diff --git a/src/mesa/drivers/dri/i965/brw_shader.h b/src/mesa/drivers/dri/i965/brw_shader.h index d1357ce..322ef1f 100644 --- a/src/mesa/drivers/dri/i965/brw_shader.h +++ b/src/mesa/drivers/dri/i965/brw_shader.h @@ -80,6 +80,14 @@ public: } imm; }; +static inline backend_reg +offset(backend_reg reg, unsigned delta) +{ + assert(delta == 0 || (reg.file != HW_REG && reg.file != IMM)); + reg.reg_offset += delta; + return reg; +} + class backend_instruction : public exec_node { public: bool is_tex(); diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index 720cc6e..db1604a 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -117,6 +117,14 @@ public: src_reg *reladdr; }; +static inline src_reg +offset(src_reg reg, unsigned delta) +{ + assert(delta == 0 || (reg.file != HW_REG && reg.file != IMM)); + reg.reg_offset += delta; + return reg; +} + class dst_reg : public backend_reg { public: @@ -138,6 +146,14 @@ public: src_reg *reladdr; }; +static inline dst_reg +offset(dst_reg reg, unsigned delta) +{ + assert(delta == 0 || (reg.file != HW_REG && reg.file != IMM)); + reg.reg_offset += delta; + return reg; +} + dst_reg with_writemask(dst_reg const &r, int mask); -- 1.8.3.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev