From 30c35d1dcb2fde19b1c968751fda5151b795d257 Mon Sep 17 00:00:00 2001 From: Juha-Pekka Heikkila Date: Wed, 9 Apr 2014 12:08:12 -0700 Subject: i965: Add is_accumulator() function. Reviewed-by: Kenneth Graunke Reviewed-by: Matt Turner Signed-off-by: Juha-Pekka Heikkila --- src/mesa/drivers/dri/i965/brw_fs.cpp | 8 ++++++++ src/mesa/drivers/dri/i965/brw_fs.h | 1 + src/mesa/drivers/dri/i965/brw_vec4.cpp | 17 +++++++++++++++++ src/mesa/drivers/dri/i965/brw_vec4.h | 2 ++ 4 files changed, 28 insertions(+) (limited to 'src/mesa') diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 88dfdfc2056..bff38f0d6e7 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -501,6 +501,14 @@ fs_reg::is_valid_3src() const return file == GRF || file == UNIFORM; } +bool +fs_reg::is_accumulator() const +{ + return file == HW_REG && + fixed_hw_reg.file == BRW_ARCHITECTURE_REGISTER_FILE && + fixed_hw_reg.nr == BRW_ARF_ACCUMULATOR; +} + int fs_visitor::type_size(const struct glsl_type *type) { diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index 4c12bd74774..2a1a81d670d 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -83,6 +83,7 @@ public: bool is_null() const; bool is_valid_3src() const; bool is_contiguous() const; + bool is_accumulator() const; fs_reg &apply_stride(unsigned stride); /** Smear a channel of the reg to all channels. */ diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index 480a3097b42..8aa746d3630 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -151,6 +151,15 @@ src_reg::src_reg(dst_reg reg) swizzles[2], swizzles[3]); } +bool +src_reg::is_accumulator() const +{ + return file == HW_REG && + fixed_hw_reg.file == BRW_ARCHITECTURE_REGISTER_FILE && + fixed_hw_reg.nr == BRW_ARF_ACCUMULATOR; +} + + void dst_reg::init() { @@ -220,6 +229,14 @@ dst_reg::is_null() const fixed_hw_reg.nr == BRW_ARF_NULL; } +bool +dst_reg::is_accumulator() const +{ + return file == HW_REG && + fixed_hw_reg.file == BRW_ARCHITECTURE_REGISTER_FILE && + fixed_hw_reg.nr == BRW_ARF_ACCUMULATOR; +} + bool vec4_instruction::is_send_from_grf() { diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index 159a5bdfbbb..b3549a5c845 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -128,6 +128,7 @@ public: bool equals(src_reg *r); bool is_zero() const; bool is_one() const; + bool is_accumulator() const; src_reg(class vec4_visitor *v, const struct glsl_type *type); @@ -195,6 +196,7 @@ public: explicit dst_reg(src_reg reg); bool is_null() const; + bool is_accumulator() const; int writemask; /**< Bitfield of WRITEMASK_[XYZW] */ -- cgit v1.2.3