summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2012-03-30 13:58:06 -0700
committerIan Romanick <ian.d.romanick@intel.com>2012-05-18 16:08:33 -0700
commitb4693383bfa1bc51f6cefc845a37795284bea84d (patch)
treed30e94714d7ca3de0cb9343362249233e6fb545a
parent5eb2e5bdc74e8690b3e45639f1183a6fa5c66360 (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.cpp3
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]);