From: Samuel Pitoiset Date: Wed, 2 Dec 2015 21:05:17 +0000 (+0100) Subject: nv50/ir/gk110: add memory barriers support for GK110 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8482763d35d8bbf596a7cce84bb53f4b73d5fa6f;p=mesa.git nv50/ir/gk110: add memory barriers support for GK110 Signed-off-by: Samuel Pitoiset Reviewed-by: Ilia Mirkin --- 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 053df8be7d3..0e52c73b322 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp @@ -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: