From 42b15b53995a4e5476ee88b5a517c3efd4a61594 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Fri, 13 Mar 2015 15:10:51 +0200 Subject: [PATCH] i965: in MAD->MUL, switch last argument to be immediate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit bb33a31 introduced MAD->MUL optimization which did not take account case where one of the remaining sources is immediate and did not report progress. Patch changes last one of the sources to be immediate. If both are, this is taken care of by the same opt_algebraic pass on later run. Signed-off-by: Tapani Pälli Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89569 --- src/mesa/drivers/dri/i965/brw_fs.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 8702ea8..710a7e6 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -2490,7 +2490,14 @@ fs_visitor::opt_algebraic() } else if (inst->src[0].is_zero()) { inst->opcode = BRW_OPCODE_MUL; inst->src[0] = inst->src[2]; + /* Last one needs to be immediate. */ + if (inst->src[0].file == IMM) { + inst->src[2] = inst->src[1]; + inst->src[1] = inst->src[0]; + inst->src[0] = inst->src[2]; + } inst->src[2] = reg_undef; + progress = true; } else if (inst->src[1].is_one()) { inst->opcode = BRW_OPCODE_ADD; inst->src[1] = inst->src[2]; -- 2.1.0