[Mesa-dev] [RFC 8/9] nv50/ir: disable mul+add to mad for precise instructions
Karol Herbst
karolherbst at gmail.com
Sun Jun 11 18:42:38 UTC 2017
fixes missrendering in TombRaider
Signed-off-by: Karol Herbst <karolherbst at gmail.com>
---
src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
index 4c92a1efb5..85f3f44832 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
@@ -1669,6 +1669,10 @@ AlgebraicOpt::handleABS(Instruction *abs)
bool
AlgebraicOpt::handleADD(Instruction *add)
{
+ // we can't optimize to SAD/MAD if the instruction is tagged as precise
+ if (add->precise)
+ return false;
+
Value *src0 = add->getSrc(0);
Value *src1 = add->getSrc(1);
@@ -1712,7 +1716,7 @@ AlgebraicOpt::tryADDToMADOrSAD(Instruction *add, operation toOp)
return false;
if (src->getInsn()->saturate || src->getInsn()->postFactor ||
- src->getInsn()->dnz)
+ src->getInsn()->dnz || src->getInsn()->precise)
return false;
if (toOp == OP_SAD) {
--
2.13.1
More information about the mesa-dev
mailing list