diff options
author | Samuel Pitoiset <[email protected]> | 2016-04-18 18:48:52 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2016-04-26 19:47:49 +0200 |
commit | c2ce22ca4641343e9bad446811a882c5c3930419 (patch) | |
tree | 520b17ace8980f1b515dd74caf7f160c05035203 /src | |
parent | 222d1a1bff8eeaf1007ff921bc321333a42fe2b4 (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')
-rw-r--r-- | src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp | 12 |
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; |