Mesa (master): i965/vec4: do not predicate scratch writes for BRW_OPCODE_SEL instructions

Iago Toral Quiroga itoral at kemper.freedesktop.org
Fri Aug 7 06:16:09 UTC 2015


Module: Mesa
Branch: master
Commit: f246aa6bcab57f85a143cbfe7e9de24237921249
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f246aa6bcab57f85a143cbfe7e9de24237921249

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Fri Jul 31 14:36:30 2015 +0200

i965/vec4: do not predicate scratch writes for BRW_OPCODE_SEL instructions

The dst is always written, in this case the predicate is only used to select
the value to write, so if we are spilling the dst we always want to write
whatever value we selected to scratch.

Reviewed-by: Francisco Jerez <currojerez at riseup.net>

---

 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index c5c0d2c..ba352be 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -3482,7 +3482,8 @@ vec4_visitor::emit_scratch_write(bblock_t *block, vec4_instruction *inst,
    dst_reg dst = dst_reg(brw_writemask(brw_vec8_grf(0, 0),
 				       inst->dst.writemask));
    vec4_instruction *write = SCRATCH_WRITE(dst, temp, index);
-   write->predicate = inst->predicate;
+   if (inst->opcode != BRW_OPCODE_SEL)
+      write->predicate = inst->predicate;
    write->ir = inst->ir;
    write->annotation = inst->annotation;
    inst->insert_after(block, write);




More information about the mesa-commit mailing list