Mesa (master): nv50/ir/tgsi: optimize KIL
Ilia Mirkin
imirkin at kemper.freedesktop.org
Fri May 23 17:13:12 UTC 2014
Module: Mesa
Branch: master
Commit: d479713d25699c168af807ad36068691af11d0e0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d479713d25699c168af807ad36068691af11d0e0
Author: Christoph Bumiller <e0425955 at student.tuwien.ac.at>
Date: Wed Jun 12 21:31:19 2013 +0200
nv50/ir/tgsi: optimize KIL
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Cc: "10.2" <mesa-stable at lists.freedesktop.org>
---
src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp
index e24be51..a0f1fe1 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp
@@ -2457,7 +2457,12 @@ Converter::handleInstruction(const struct tgsi_full_instruction *insn)
break;
case TGSI_OPCODE_KILL_IF:
val0 = new_LValue(func, FILE_PREDICATE);
+ mask = 0;
for (c = 0; c < 4; ++c) {
+ const int s = tgsi.getSrc(0).getSwizzle(c);
+ if (mask & (1 << s))
+ continue;
+ mask |= 1 << s;
mkCmp(OP_SET, CC_LT, TYPE_F32, val0, TYPE_F32, fetchSrc(0, c), zero);
mkOp(OP_DISCARD, TYPE_NONE, NULL)->setPredicate(CC_P, val0);
}
More information about the mesa-commit
mailing list