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

Author: Kenneth Graunke <[email protected]>
Date:   Fri Mar 30 13:58:06 2012 -0700

i965: Avoid explicit accumulator operands in SIMD16 mode on Gen7.

According to the BSpec ISA volume's "Accumulator Register" section:

"[DevIVB] SIMD16 execution on dwords is not allowed when accumulator is
 explicit source or destination operand."

Fixes piglit tests:
- fs-multiply-const-ivec4
- fs-multiply-const-uvec4
- fs-multiply-ivec4-const
- fs-multiply-uvec4-const

Signed-off-by: Kenneth Graunke <[email protected]>

---

 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp 
b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index b4ef80b..a672ee6 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -337,6 +337,9 @@ fs_visitor::visit(ir_expression *ir)
          * FINISHME: Emit just the MUL if we know an operand is small
          * enough.
          */
+        if (intel->gen >= 7 && c->dispatch_width == 16)
+           fail("16-wide explicit accumulator operands unsupported\n");
+
         struct brw_reg acc = retype(brw_acc_reg(), BRW_REGISTER_TYPE_D);
 
         emit(BRW_OPCODE_MUL, acc, op[0], op[1]);

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to