gk110/ir: add emission for OP_PERMT

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
Samuel Pitoiset 2016-04-18 18:48:52 +02:00
parent 222d1a1bff
commit c2ce22ca46

View file

@ -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);
@ -832,6 +833,14 @@ CodeEmitterGK110::emitBFIND(const Instruction *i)
code[1] |= 0x1000;
}
void
CodeEmitterGK110::emitPERMT(const Instruction *i)
{
emitForm_21(i, 0x1e0, 0xb60);
code[1] |= i->subOp << 19;
}
void
CodeEmitterGK110::emitShift(const Instruction *i)
{
@ -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;