Mesa (master): nv50/ir/gk110: implement quadop

Ilia Mirkin imirkin at kemper.freedesktop.org
Tue Mar 18 09:58:23 UTC 2014


Module: Mesa
Branch: master
Commit: 4bb14aca293b12cbe4f2352fb11c20091876c1cf
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4bb14aca293b12cbe4f2352fb11c20091876c1cf

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Wed Mar 12 09:33:00 2014 -0400

nv50/ir/gk110: implement quadop

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
index cd39d0e..54a06b5 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -1104,7 +1104,17 @@ CodeEmitterGK110::emitTXQ(const TexInstruction *i)
 void
 CodeEmitterGK110::emitQUADOP(const Instruction *i, uint8_t qOp, uint8_t laneMask)
 {
-   emitNOP(i); // TODO
+   code[0] = 0x00000002 | ((qOp & 1) << 31);
+   code[1] = 0x7fc00000 | (qOp >> 1) | (laneMask << 12);
+
+   defId(i->def(0), 2);
+   srcId(i->src(0), 10);
+   srcId(i->srcExists(1) ? i->src(1) : i->src(0), 23);
+
+   if (i->op == OP_QUADOP && progType != Program::TYPE_FRAGMENT)
+      code[1] |= 1 << 9; // dall
+
+   emitPredicate(i);
 }
 
 void




More information about the mesa-commit mailing list