summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nvc0/codegen/nv50_ir_emit_nvc0.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/nvc0/codegen/nv50_ir_emit_nvc0.cpp')
-rw-r--r--src/gallium/drivers/nvc0/codegen/nv50_ir_emit_nvc0.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gallium/drivers/nvc0/codegen/nv50_ir_emit_nvc0.cpp b/src/gallium/drivers/nvc0/codegen/nv50_ir_emit_nvc0.cpp
index d4fd4da07e7..912540d0c40 100644
--- a/src/gallium/drivers/nvc0/codegen/nv50_ir_emit_nvc0.cpp
+++ b/src/gallium/drivers/nvc0/codegen/nv50_ir_emit_nvc0.cpp
@@ -102,6 +102,7 @@ private:
102 void emitSLCT(const CmpInstruction *); 102 void emitSLCT(const CmpInstruction *);
103 void emitSELP(const Instruction *); 103 void emitSELP(const Instruction *);
104 104
105 void emitTEXBAR(const Instruction *);
105 void emitTEX(const TexInstruction *); 106 void emitTEX(const TexInstruction *);
106 void emitTEXCSAA(const TexInstruction *); 107 void emitTEXCSAA(const TexInstruction *);
107 void emitTXQ(const TexInstruction *); 108 void emitTXQ(const TexInstruction *);
@@ -938,6 +939,14 @@ void CodeEmitterNVC0::emitSELP(const Instruction *i)
938 code[1] |= 1 << 20; 939 code[1] |= 1 << 20;
939} 940}
940 941
942void CodeEmitterNVC0::emitTEXBAR(const Instruction *i)
943{
944 code[0] = 0x00000006 | (i->subOp << 26);
945 code[1] = 0xf0000000;
946 emitPredicate(i);
947 emitCondCode(i->predSrc >= 0 ? i->cc : CC_ALWAYS, 5);
948}
949
941void CodeEmitterNVC0::emitTEXCSAA(const TexInstruction *i) 950void CodeEmitterNVC0::emitTEXCSAA(const TexInstruction *i)
942{ 951{
943 code[0] = 0x00000086; 952 code[0] = 0x00000086;
@@ -1630,6 +1639,9 @@ CodeEmitterNVC0::emitInstruction(Instruction *insn)
1630 case OP_TXQ: 1639 case OP_TXQ:
1631 emitTXQ(insn->asTex()); 1640 emitTXQ(insn->asTex());
1632 break; 1641 break;
1642 case OP_TEXBAR:
1643 emitTEXBAR(insn);
1644 break;
1633 case OP_BRA: 1645 case OP_BRA:
1634 case OP_CALL: 1646 case OP_CALL:
1635 case OP_PRERET: 1647 case OP_PRERET: