[Mesa-dev] [PATCH v2 2/8] gm107/ir: add emission for OP_ADD3
Samuel Pitoiset
samuel.pitoiset at gmail.com
Tue Jul 19 10:30:16 UTC 2016
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
.../drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp | 34 ++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp
index f1ba27a..c08273e 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp
@@ -150,6 +150,7 @@ private:
void emitLOP();
void emitNOT();
void emitIADD();
+ void emitIADD3();
void emitIMUL();
void emitIMAD();
void emitIMNMX();
@@ -1721,6 +1722,36 @@ CodeEmitterGM107::emitIADD()
}
void
+CodeEmitterGM107::emitIADD3()
+{
+ switch (insn->src(1).getFile()) {
+ case FILE_GPR:
+ emitInsn(0x5cc00000);
+ emitGPR (0x14, insn->src(1));
+ break;
+ case FILE_MEMORY_CONST:
+ emitInsn(0x4cc00000);
+ emitCBUF(0x22, -1, 0x14, 16, 2, insn->src(1));
+ break;
+ case FILE_IMMEDIATE:
+ emitInsn(0x38c00000);
+ emitIMMD(0x14, 19, insn->src(1));
+ break;
+ default:
+ assert(!"bad src1 file");
+ break;
+ }
+ emitNEG(0x33, insn->src(0));
+ emitNEG(0x32, insn->src(1));
+ emitNEG(0x31, insn->src(2));
+ emitX (0x30);
+ emitCC (0x2f);
+ emitGPR(0x27, insn->src(2));
+ emitGPR(0x08, insn->src(0));
+ emitGPR(0x00, insn->def(0));
+}
+
+void
CodeEmitterGM107::emitIMUL()
{
if (insn->src(1).getFile() != FILE_IMMEDIATE) {
@@ -2933,6 +2964,9 @@ CodeEmitterGM107::emitInstruction(Instruction *i)
emitIADD();
}
break;
+ case OP_ADD3:
+ emitIADD3();
+ break;
case OP_MUL:
if (isFloatType(insn->dType)) {
if (insn->dType == TYPE_F64)
--
2.9.0
More information about the mesa-dev
mailing list