summaryrefslogtreecommitdiff
path: root/src/gallium
diff options
context:
space:
mode:
authorVadim Girlin <vadimgirlin@gmail.com>2013-08-11 02:52:34 +0400
committerIan Romanick <ian.d.romanick@intel.com>2013-08-13 17:54:12 -0700
commitb76ff3dbcdb8ccbbd3426a6fef7688fbdb9ba46d (patch)
tree0de4363baa9d4eca14dc39cf97cad139bebcebc8 /src/gallium
parentcb8e109492a911977fd646343a26169edd4a9aee (diff)
r600g/sb: use MULADD workaround on R7xx for MULADD_IEEE
Looks like the same issue that was seen with MULADD in trans slot on R7xx also affects MULADD_IEEE (maybe all OP3 instructions and MULADD is just a most frequently used?). So the workaround is to not allow affected instructions to be placed into the trans slot. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=67927 Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com> Cc: "9.2" <mesa-stable@lists.freedesktop.org> (cherry picked from commit 17bb96b03d340c0aee8e1a332fdcd695e9179486)
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/r600/sb/sb_sched.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/sb/sb_sched.cpp b/src/gallium/drivers/r600/sb/sb_sched.cpp
index f0e41f58637..27923155dae 100644
--- a/src/gallium/drivers/r600/sb/sb_sched.cpp
+++ b/src/gallium/drivers/r600/sb/sb_sched.cpp
@@ -1490,7 +1490,8 @@ unsigned post_scheduler::try_add_instruction(node *n) {
// FIXME workaround for some problems with MULADD in trans slot on r700,
// (is it really needed on r600?)
- if (a->bc.op == ALU_OP3_MULADD && !ctx.is_egcm()) {
+ if ((a->bc.op == ALU_OP3_MULADD || a->bc.op == ALU_OP3_MULADD_IEEE) &&
+ !ctx.is_egcm()) {
allowed_slots &= 0x0F;
}