1 #ifndef INSTRUCTIONVISITOR_H 2 #define INSTRUCTIONVISITOR_H 3 4 namespace r600 { 5 6 7 class AluInstruction; 8 class ExportInstruction; 9 class TexInstruction; 10 class FetchInstruction; 11 class IfInstruction; 12 class ElseInstruction; 13 class IfElseEndInstruction; 14 class LoopBeginInstruction; 15 class LoopEndInstruction; 16 class LoopBreakInstruction; 17 class LoopContInstruction; 18 class StreamOutIntruction; 19 class MemRingOutIntruction; 20 class EmitVertex; 21 class WaitAck; 22 class WriteScratchInstruction; 23 class GDSInstr; 24 class RatInstruction; 25 class LDSWriteInstruction; 26 class LDSReadInstruction; 27 class LDSAtomicInstruction; 28 class GDSStoreTessFactor; 29 class InstructionBlock; 30 31 class InstructionVisitor 32 { 33 public: ~InstructionVisitor()34 virtual ~InstructionVisitor() {}; 35 virtual bool visit(AluInstruction& i) = 0; 36 virtual bool visit(ExportInstruction& i) = 0; 37 virtual bool visit(TexInstruction& i) = 0; 38 virtual bool visit(FetchInstruction& i) = 0; 39 virtual bool visit(IfInstruction& i) = 0; 40 virtual bool visit(ElseInstruction& i) = 0; 41 virtual bool visit(IfElseEndInstruction& i) = 0; 42 virtual bool visit(LoopBeginInstruction& i) = 0; 43 virtual bool visit(LoopEndInstruction& i) = 0; 44 virtual bool visit(LoopBreakInstruction& i) = 0; 45 virtual bool visit(LoopContInstruction& i) = 0; 46 virtual bool visit(StreamOutIntruction& i) = 0; 47 virtual bool visit(MemRingOutIntruction& i) = 0; 48 virtual bool visit(EmitVertex& i) = 0; 49 virtual bool visit(WaitAck& i) = 0; 50 virtual bool visit(WriteScratchInstruction& i) = 0; 51 virtual bool visit(GDSInstr& i) = 0; 52 virtual bool visit(RatInstruction& i) = 0; 53 virtual bool visit(LDSWriteInstruction& i) = 0; 54 virtual bool visit(LDSReadInstruction& i) = 0; 55 virtual bool visit(LDSAtomicInstruction& i) = 0; 56 virtual bool visit(GDSStoreTessFactor& i) = 0; 57 virtual bool visit(InstructionBlock& i) = 0; 58 }; 59 60 class ConstInstructionVisitor 61 { 62 public: ~ConstInstructionVisitor()63 virtual ~ConstInstructionVisitor() {}; 64 virtual bool visit(const AluInstruction& i) = 0; 65 virtual bool visit(const ExportInstruction& i) = 0; 66 virtual bool visit(const TexInstruction& i) = 0; 67 virtual bool visit(const FetchInstruction& i) = 0; 68 virtual bool visit(const IfInstruction& i) = 0; 69 virtual bool visit(const ElseInstruction& i) = 0; 70 virtual bool visit(const IfElseEndInstruction& i) = 0; 71 virtual bool visit(const LoopBeginInstruction& i) = 0; 72 virtual bool visit(const LoopEndInstruction& i) = 0; 73 virtual bool visit(const LoopBreakInstruction& i) = 0; 74 virtual bool visit(const LoopContInstruction& i) = 0; 75 virtual bool visit(const StreamOutIntruction& i) = 0; 76 virtual bool visit(const MemRingOutIntruction& i) = 0; 77 virtual bool visit(const EmitVertex& i) = 0; 78 virtual bool visit(const WaitAck& i) = 0; 79 virtual bool visit(const WriteScratchInstruction& i) = 0; 80 virtual bool visit(const GDSInstr& i) = 0; 81 virtual bool visit(const RatInstruction& i) = 0; 82 virtual bool visit(const LDSWriteInstruction& i) = 0; 83 virtual bool visit(const LDSReadInstruction& i) = 0; 84 virtual bool visit(const LDSAtomicInstruction& i) = 0; 85 virtual bool visit(const GDSStoreTessFactor& i) = 0; 86 virtual bool visit(const InstructionBlock& i) = 0; 87 }; 88 89 } 90 91 #endif // INSTRUCTIONVISITOR_H 92