i965: Add non-mutating helper functions to modify the register offset.
authorFrancisco Jerez <currojerez@riseup.net>
Wed, 19 Feb 2014 14:19:10 +0000 (15:19 +0100)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 19 Feb 2014 15:27:25 +0000 (16:27 +0100)
Yes, we could avoid having four copies of essentially the same code by
using templates here.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_vec4.h

index 914ace67ce9b273a33eb7efb3711bafac8e08c17..ce5050bd41aac2848482e3c7a8ce51ae324e98e7 100644 (file)
@@ -129,6 +129,14 @@ public:
    fs_reg *reladdr;
 };
 
+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)
 {
index ecb16497fdb43c56ee93d9049dfd1e8a2b6edd51..3be17d890cf1c21633d34d4842d4eed320d79f8c 100644 (file)
@@ -140,6 +140,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 reg
 {
 public:
@@ -160,6 +168,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);