summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2016-05-26 23:09:46 -0700
committerFrancisco Jerez <[email protected]>2016-05-29 23:41:38 -0700
commit4db93592de73d68ce38b3d64eddd451aa6c373cc (patch)
tree03891ce45e2466795615f4f37ef67fa59064bb5a
parenta5b4f63c1593cdcbc253cce2838c85b2fd796dac (diff)
i965/fs: Refactor offset() into a separate function taking the width as argument.
This will be useful in the SIMD lowering pass to avoid having to construct a builder object of the known region width just to pass it as argument to offset(), which doesn't do anything with it other than taking the builder dispatch_width as region width. Reviewed-by: Jason Ekstrand <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.h18
-rw-r--r--src/mesa/drivers/dri/i965/brw_ir_fs.h19
2 files changed, 21 insertions, 16 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index d28384d8216..4c1ac9cedd2 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -44,23 +44,9 @@ namespace brw {
struct brw_gs_compile;
static inline fs_reg
-offset(fs_reg reg, const brw::fs_builder& bld, unsigned delta)
+offset(const fs_reg &reg, const brw::fs_builder &bld, unsigned delta)
{
- switch (reg.file) {
- case BAD_FILE:
- break;
- case ARF:
- case FIXED_GRF:
- case MRF:
- case VGRF:
- case ATTR:
- case UNIFORM:
- return byte_offset(reg,
- delta * reg.component_size(bld.dispatch_width()));
- case IMM:
- assert(delta == 0);
- }
- return reg;
+ return offset(reg, bld.dispatch_width(), delta);
}
/**
diff --git a/src/mesa/drivers/dri/i965/brw_ir_fs.h b/src/mesa/drivers/dri/i965/brw_ir_fs.h
index 06a74fab94d..35169f8464f 100644
--- a/src/mesa/drivers/dri/i965/brw_ir_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_ir_fs.h
@@ -140,6 +140,25 @@ horiz_offset(const fs_reg &reg, unsigned delta)
unreachable("Invalid register file");
}
+static inline fs_reg
+offset(fs_reg reg, unsigned width, unsigned delta)
+{
+ switch (reg.file) {
+ case BAD_FILE:
+ break;
+ case ARF:
+ case FIXED_GRF:
+ case MRF:
+ case VGRF:
+ case ATTR:
+ case UNIFORM:
+ return byte_offset(reg, delta * reg.component_size(width));
+ case IMM:
+ assert(delta == 0);
+ }
+ return reg;
+}
+
/**
* Get the scalar channel of \p reg given by \p idx and replicate it to all
* channels of the result.