summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nouveau
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2016-04-18 18:48:52 +0200
committerSamuel Pitoiset <[email protected]>2016-04-26 19:47:49 +0200
commitc2ce22ca4641343e9bad446811a882c5c3930419 (patch)
tree520b17ace8980f1b515dd74caf7f160c05035203 /src/gallium/drivers/nouveau
parent222d1a1bff8eeaf1007ff921bc321333a42fe2b4 (diff)
gk110/ir: add emission for OP_PERMT
Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Ilia Mirkin <[email protected]>
Diffstat (limited to 'src/gallium/drivers/nouveau')
-rw-r--r--src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp12
1 files changed, 12 insertions, 0 deletions
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 6fbd04df69b..0968f94a1f1 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -102,6 +102,7 @@ private:
void emitINSBF(const Instruction *);
void emitEXTBF(const Instruction *);
void emitBFIND(const Instruction *);
+ void emitPERMT(const Instruction *);
void emitShift(const Instruction *);
void emitSFnOp(const Instruction *, uint8_t subOp);
@@ -833,6 +834,14 @@ CodeEmitterGK110::emitBFIND(const Instruction *i)
}
void
+CodeEmitterGK110::emitPERMT(const Instruction *i)
+{
+ emitForm_21(i, 0x1e0, 0xb60);
+
+ code[1] |= i->subOp << 19;
+}
+
+void
CodeEmitterGK110::emitShift(const Instruction *i)
{
if (i->op == OP_SHR) {
@@ -2143,6 +2152,9 @@ CodeEmitterGK110::emitInstruction(Instruction *insn)
case OP_BFIND:
emitBFIND(insn);
break;
+ case OP_PERMT:
+ emitPERMT(insn);
+ break;
case OP_JOIN:
emitNOP(insn);
insn->join = 1;