diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2012-03-30 13:58:06 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2012-05-18 16:08:33 -0700 |
commit | b4693383bfa1bc51f6cefc845a37795284bea84d (patch) | |
tree | d30e94714d7ca3de0cb9343362249233e6fb545a | |
parent | 5eb2e5bdc74e8690b3e45639f1183a6fa5c66360 (diff) |
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 <kenneth@whitecape.org>
(cherry picked from commit 01044fce6b3de11635ea5078b76ffee1a33b3802)
-rw-r--r-- | 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 69ebc65af7c..e7364d8d70e 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -296,6 +296,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]); |