Yes, we could avoid having four copies of essentially the same code by
using templates here.
Reviewed-by: Paul Berry <stereotype441@gmail.com>
+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)
{
static inline fs_reg
byte_offset(fs_reg reg, unsigned delta)
{
+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:
class dst_reg : public reg
{
public:
+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);
dst_reg
with_writemask(dst_reg const &r, int mask);