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