nv50/ir/gk110: add memory barriers support for GK110

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
Samuel Pitoiset 2015-12-02 22:05:17 +01:00
parent c672bf3b04
commit 8482763d35

View file

@ -75,6 +75,7 @@ private:
void emitLOAD(const Instruction *);
void emitSTORE(const Instruction *);
void emitMOV(const Instruction *);
void emitMEMBAR(const Instruction *);
void emitINTERP(const Instruction *);
void emitAFETCH(const Instruction *);
@ -1687,6 +1688,14 @@ CodeEmitterGK110::emitMOV(const Instruction *i)
}
}
void CodeEmitterGK110::emitMEMBAR(const Instruction *i)
{
code[0] = 0x00000002 | NV50_IR_SUBOP_MEMBAR_SCOPE(i->subOp) << 8;
code[1] = 0x7cc00000;
emitPredicate(i);
}
bool
CodeEmitterGK110::emitInstruction(Instruction *insn)
{
@ -1918,6 +1927,9 @@ CodeEmitterGK110::emitInstruction(Instruction *insn)
case OP_BAR:
emitBAR(insn);
break;
case OP_MEMBAR:
emitMEMBAR(insn);
break;
case OP_PHI:
case OP_UNION:
case OP_CONSTRAINT: