mini-llvm 0.1.0
Loading...
Searching...
No Matches
InstructionVisitor.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <cstdlib>
6#include <utility>
7
9
10namespace mini_llvm::mir {
11
12class Add;
13class AddI;
14class And;
15class AndI;
16class Br;
17class CmpBr;
18class Cmp;
19class CmpSet;
20class CmpZBr;
21class CmpZ;
22class CmpZSet;
23class CondBr;
24class CondSet;
25class FAdd;
26class FCmp;
27class FCmpSet;
28class FCvt;
29class FCvtFS;
30class FCvtFU;
31class FCvtSF;
32class FCvtUF;
33class FDiv;
34class FLoad;
35class FMov;
36class FMovFI;
37class FMovIF;
38class FMul;
39class FNeg;
40class FStore;
41class FSub;
42class LA;
43class LI;
44class FakeUse;
45class Load;
46class Marker;
47class Mov;
48class Mul;
49class Neg;
50class Not;
51class Or;
52class OrI;
53class SDiv;
54class SExt;
55class SHL;
56class SHLI;
57class SHRA;
58class SHRAI;
59class SHRL;
60class SHRLI;
61class SRem;
62class Store;
63class Sub;
64class SubI;
65class UDiv;
66class URem;
67class Xor;
68class XorI;
69
71public:
72 virtual ~InstructionVisitor() = default;
73
74 InstructionVisitor() = default;
75
78
81
82 virtual void visitAdd(Add &I) { visitAdd(std::as_const(I)); }
83 virtual void visitAddI(AddI &I) { visitAddI(std::as_const(I)); }
84 virtual void visitAnd(And &I) { visitAnd(std::as_const(I)); }
85 virtual void visitAndI(AndI &I) { visitAndI(std::as_const(I)); }
86 virtual void visitBr(Br &I) { visitBr(std::as_const(I)); }
87 virtual void visitCmpBr(CmpBr &I) { visitCmpBr(std::as_const(I)); }
88 virtual void visitCmp(Cmp &I) { visitCmp(std::as_const(I)); }
89 virtual void visitCmpSet(CmpSet &I) { visitCmpSet(std::as_const(I)); }
90 virtual void visitCmpZBr(CmpZBr &I) { visitCmpZBr(std::as_const(I)); }
91 virtual void visitCmpZ(CmpZ &I) { visitCmpZ(std::as_const(I)); }
92 virtual void visitCmpZSet(CmpZSet &I) { visitCmpZSet(std::as_const(I)); }
93 virtual void visitCondBr(CondBr &I) { visitCondBr(std::as_const(I)); }
94 virtual void visitCondSet(CondSet &I) { visitCondSet(std::as_const(I)); }
95 virtual void visitFAdd(FAdd &I) { visitFAdd(std::as_const(I)); }
96 virtual void visitFCmp(FCmp &I) { visitFCmp(std::as_const(I)); }
97 virtual void visitFCmpSet(FCmpSet &I) { visitFCmpSet(std::as_const(I)); }
98 virtual void visitFCvt(FCvt &I) { visitFCvt(std::as_const(I)); }
99 virtual void visitFCvtFS(FCvtFS &I) { visitFCvtFS(std::as_const(I)); }
100 virtual void visitFCvtFU(FCvtFS &I) { visitFCvtFS(std::as_const(I)); }
101 virtual void visitFCvtSF(FCvtSF &I) { visitFCvtSF(std::as_const(I)); }
102 virtual void visitFCvtUF(FCvtSF &I) { visitFCvtSF(std::as_const(I)); }
103 virtual void visitFDiv(FDiv &I) { visitFDiv(std::as_const(I)); }
104 virtual void visitFLoad(FLoad &I) { visitFLoad(std::as_const(I)); }
105 virtual void visitFMov(FMov &I) { visitFMov(std::as_const(I)); }
106 virtual void visitFMovFI(FMovFI &I) { visitFMovFI(std::as_const(I)); }
107 virtual void visitFMovIF(FMovIF &I) { visitFMovIF(std::as_const(I)); }
108 virtual void visitFMul(FMul &I) { visitFMul(std::as_const(I)); }
109 virtual void visitFNeg(FNeg &I) { visitFNeg(std::as_const(I)); }
110 virtual void visitFStore(FStore &I) { visitFStore(std::as_const(I)); }
111 virtual void visitFSub(FSub &I) { visitFSub(std::as_const(I)); }
112 virtual void visitLA(LA &I) { visitLA(std::as_const(I)); }
113 virtual void visitLI(LI &I) { visitLI(std::as_const(I)); }
114 virtual void visitLive(FakeUse &I) { visitLive(std::as_const(I)); }
115 virtual void visitLoad(Load &I) { visitLoad(std::as_const(I)); }
116 virtual void visitMarker(Marker &I) { visitMarker(std::as_const(I)); }
117 virtual void visitMov(Mov &I) { visitMov(std::as_const(I)); }
118 virtual void visitMul(Mul &I) { visitMul(std::as_const(I)); }
119 virtual void visitNeg(Neg &I) { visitNeg(std::as_const(I)); }
120 virtual void visitNot(Not &I) { visitNot(std::as_const(I)); }
121 virtual void visitOr(Or &I) { visitOr(std::as_const(I)); }
122 virtual void visitOrI(OrI &I) { visitOrI(std::as_const(I)); }
123 virtual void visitSDiv(SDiv &I) { visitSDiv(std::as_const(I)); }
124 virtual void visitSExt(SExt &I) { visitSExt(std::as_const(I)); }
125 virtual void visitSHL(SHL &I) { visitSHL(std::as_const(I)); }
126 virtual void visitSHLI(SHLI &I) { visitSHLI(std::as_const(I)); }
127 virtual void visitSHRA(SHRA &I) { visitSHRA(std::as_const(I)); }
128 virtual void visitSHRAI(SHRAI &I) { visitSHRAI(std::as_const(I)); }
129 virtual void visitSHRL(SHRL &I) { visitSHRL(std::as_const(I)); }
130 virtual void visitSHRLI(SHRLI &I) { visitSHRLI(std::as_const(I)); }
131 virtual void visitSRem(SRem &I) { visitSRem(std::as_const(I)); }
132 virtual void visitStore(Store &I) { visitStore(std::as_const(I)); }
133 virtual void visitSub(Sub &I) { visitSub(std::as_const(I)); }
134 virtual void visitSubI(SubI &I) { visitSubI(std::as_const(I)); }
135 virtual void visitUDiv(UDiv &I) { visitUDiv(std::as_const(I)); }
136 virtual void visitURem(URem &I) { visitURem(std::as_const(I)); }
137 virtual void visitXor(Xor &I) { visitXor(std::as_const(I)); }
138 virtual void visitXorI(XorI &I) { visitXorI(std::as_const(I)); }
139
140 virtual void visitAdd(const Add &) { abort(); }
141 virtual void visitAddI(const AddI &) { abort(); }
142 virtual void visitAnd(const And &) { abort(); }
143 virtual void visitAndI(const AndI &) { abort(); }
144 virtual void visitBr(const Br &) { abort(); }
145 virtual void visitCmpBr(const CmpBr &) { abort(); }
146 virtual void visitCmp(const Cmp &) { abort(); }
147 virtual void visitCmpSet(const CmpSet &) { abort(); }
148 virtual void visitCmpZBr(const CmpZBr &) { abort(); }
149 virtual void visitCmpZ(const CmpZ &) { abort(); }
150 virtual void visitCmpZSet(const CmpZSet &) { abort(); }
151 virtual void visitCondBr(const CondBr &) { abort(); }
152 virtual void visitCondSet(const CondSet &) { abort(); }
153 virtual void visitFAdd(const FAdd &) { abort(); }
154 virtual void visitFCmp(const FCmp &) { abort(); }
155 virtual void visitFCmpSet(const FCmpSet &) { abort(); }
156 virtual void visitFCvt(const FCvt &) { abort(); }
157 virtual void visitFCvtFS(const FCvtFS &) { abort(); }
158 virtual void visitFCvtFU(const FCvtFU &) { abort(); }
159 virtual void visitFCvtSF(const FCvtSF &) { abort(); }
160 virtual void visitFCvtUF(const FCvtUF &) { abort(); }
161 virtual void visitFDiv(const FDiv &) { abort(); }
162 virtual void visitFLoad(const FLoad &) { abort(); }
163 virtual void visitFMov(const FMov &) { abort(); }
164 virtual void visitFMovFI(const FMovFI &) { abort(); }
165 virtual void visitFMovIF(const FMovIF &) { abort(); }
166 virtual void visitFMul(const FMul &) { abort(); }
167 virtual void visitFNeg(const FNeg &) { abort(); }
168 virtual void visitFStore(const FStore &) { abort(); }
169 virtual void visitFSub(const FSub &) { abort(); }
170 virtual void visitLA(const LA &) { abort(); }
171 virtual void visitLI(const LI &) { abort(); }
172 virtual void visitLive(const FakeUse &) { abort(); }
173 virtual void visitLoad(const Load &) { abort(); }
174 virtual void visitMarker(const Marker &) { abort(); }
175 virtual void visitMov(const Mov &) { abort(); }
176 virtual void visitMul(const Mul &) { abort(); }
177 virtual void visitNeg(const Neg &) { abort(); }
178 virtual void visitNot(const Not &) { abort(); }
179 virtual void visitOr(const Or &) { abort(); }
180 virtual void visitOrI(const OrI &) { abort(); }
181 virtual void visitSDiv(const SDiv &) { abort(); }
182 virtual void visitSExt(const SExt &) { abort(); }
183 virtual void visitSHL(const SHL &) { abort(); }
184 virtual void visitSHLI(const SHLI &) { abort(); }
185 virtual void visitSHRA(const SHRA &) { abort(); }
186 virtual void visitSHRAI(const SHRAI &) { abort(); }
187 virtual void visitSHRL(const SHRL &) { abort(); }
188 virtual void visitSHRLI(const SHRLI &) { abort(); }
189 virtual void visitSRem(const SRem &) { abort(); }
190 virtual void visitStore(const Store &) { abort(); }
191 virtual void visitSub(const Sub &) { abort(); }
192 virtual void visitSubI(const SubI &) { abort(); }
193 virtual void visitUDiv(const UDiv &) { abort(); }
194 virtual void visitURem(const URem &) { abort(); }
195 virtual void visitXor(const Xor &) { abort(); }
196 virtual void visitXorI(const XorI &) { abort(); }
197};
198
199} // namespace mini_llvm::mir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition AddI.h:19
Definition Add.h:18
Definition AndI.h:19
Definition And.h:18
Definition Br.h:18
Definition CmpBr.h:26
Definition CmpSet.h:24
Definition CmpZBr.h:26
Definition CmpZSet.h:24
Definition CmpZ.h:23
Definition Cmp.h:23
Definition CondBr.h:23
Definition CondSet.h:24
Definition FAdd.h:18
Definition FCmpSet.h:26
Definition FCmp.h:25
Definition FCvtFS.h:24
Definition FCvtFU.h:24
Definition FCvtSF.h:24
Definition FCvtUF.h:24
Definition FCvt.h:25
Definition FDiv.h:18
Definition FLoad.h:25
Definition FMovFI.h:25
Definition FMovIF.h:25
Definition FMov.h:18
Definition FMul.h:18
Definition FNeg.h:18
Definition FStore.h:25
Definition FSub.h:18
Definition FakeUse.h:20
virtual void visitStore(Store &I)
Definition InstructionVisitor.h:132
virtual void visitFDiv(const FDiv &)
Definition InstructionVisitor.h:161
virtual void visitFCvt(FCvt &I)
Definition InstructionVisitor.h:98
virtual void visitLI(const LI &)
Definition InstructionVisitor.h:171
virtual void visitSHLI(SHLI &I)
Definition InstructionVisitor.h:126
virtual void visitSubI(SubI &I)
Definition InstructionVisitor.h:134
virtual void visitSHRL(SHRL &I)
Definition InstructionVisitor.h:129
virtual void visitFCvtSF(const FCvtSF &)
Definition InstructionVisitor.h:159
virtual void visitFLoad(FLoad &I)
Definition InstructionVisitor.h:104
virtual void visitCondSet(const CondSet &)
Definition InstructionVisitor.h:152
virtual void visitOr(const Or &)
Definition InstructionVisitor.h:179
virtual void visitFMovIF(const FMovIF &)
Definition InstructionVisitor.h:165
virtual void visitCmpZ(CmpZ &I)
Definition InstructionVisitor.h:91
virtual void visitFDiv(FDiv &I)
Definition InstructionVisitor.h:103
virtual void visitLI(LI &I)
Definition InstructionVisitor.h:113
virtual void visitXorI(XorI &I)
Definition InstructionVisitor.h:138
virtual void visitSRem(const SRem &)
Definition InstructionVisitor.h:189
virtual void visitMarker(Marker &I)
Definition InstructionVisitor.h:116
virtual void visitBr(const Br &)
Definition InstructionVisitor.h:144
virtual void visitSExt(const SExt &)
Definition InstructionVisitor.h:182
virtual void visitSHRA(SHRA &I)
Definition InstructionVisitor.h:127
virtual void visitFMul(const FMul &)
Definition InstructionVisitor.h:166
virtual void visitSHRA(const SHRA &)
Definition InstructionVisitor.h:185
virtual void visitXor(Xor &I)
Definition InstructionVisitor.h:137
virtual void visitFCvtUF(FCvtSF &I)
Definition InstructionVisitor.h:102
virtual void visitCmpBr(const CmpBr &)
Definition InstructionVisitor.h:145
virtual void visitCmpZSet(CmpZSet &I)
Definition InstructionVisitor.h:92
virtual void visitFCmp(const FCmp &)
Definition InstructionVisitor.h:154
InstructionVisitor(const InstructionVisitor &)=delete
virtual void visitSub(const Sub &)
Definition InstructionVisitor.h:191
virtual void visitLA(const LA &)
Definition InstructionVisitor.h:170
virtual void visitFCvtFU(FCvtFS &I)
Definition InstructionVisitor.h:100
virtual void visitCmp(Cmp &I)
Definition InstructionVisitor.h:88
virtual void visitFCvtSF(FCvtSF &I)
Definition InstructionVisitor.h:101
virtual void visitFAdd(const FAdd &)
Definition InstructionVisitor.h:153
virtual void visitMarker(const Marker &)
Definition InstructionVisitor.h:174
virtual void visitSDiv(SDiv &I)
Definition InstructionVisitor.h:123
virtual void visitLA(LA &I)
Definition InstructionVisitor.h:112
virtual void visitMul(Mul &I)
Definition InstructionVisitor.h:118
virtual void visitStore(const Store &)
Definition InstructionVisitor.h:190
virtual void visitFMov(const FMov &)
Definition InstructionVisitor.h:163
virtual void visitSHRL(const SHRL &)
Definition InstructionVisitor.h:187
virtual void visitURem(const URem &)
Definition InstructionVisitor.h:194
virtual void visitAnd(const And &)
Definition InstructionVisitor.h:142
virtual void visitLive(FakeUse &I)
Definition InstructionVisitor.h:114
virtual void visitUDiv(const UDiv &)
Definition InstructionVisitor.h:193
virtual void visitMov(Mov &I)
Definition InstructionVisitor.h:117
virtual void visitSHLI(const SHLI &)
Definition InstructionVisitor.h:184
virtual void visitSub(Sub &I)
Definition InstructionVisitor.h:133
virtual void visitCondSet(CondSet &I)
Definition InstructionVisitor.h:94
virtual void visitFCvt(const FCvt &)
Definition InstructionVisitor.h:156
virtual void visitCondBr(const CondBr &)
Definition InstructionVisitor.h:151
virtual void visitLoad(Load &I)
Definition InstructionVisitor.h:115
virtual void visitSHL(const SHL &)
Definition InstructionVisitor.h:183
virtual void visitFMovIF(FMovIF &I)
Definition InstructionVisitor.h:107
virtual void visitBr(Br &I)
Definition InstructionVisitor.h:86
virtual void visitCmpZBr(CmpZBr &I)
Definition InstructionVisitor.h:90
virtual void visitMul(const Mul &)
Definition InstructionVisitor.h:176
virtual void visitFMul(FMul &I)
Definition InstructionVisitor.h:108
virtual void visitNot(const Not &)
Definition InstructionVisitor.h:178
virtual void visitFCmpSet(FCmpSet &I)
Definition InstructionVisitor.h:97
virtual void visitCmpZ(const CmpZ &)
Definition InstructionVisitor.h:149
virtual void visitSHRLI(SHRLI &I)
Definition InstructionVisitor.h:130
virtual void visitFSub(const FSub &)
Definition InstructionVisitor.h:169
virtual void visitFCmpSet(const FCmpSet &)
Definition InstructionVisitor.h:155
virtual void visitAndI(const AndI &)
Definition InstructionVisitor.h:143
virtual void visitOrI(OrI &I)
Definition InstructionVisitor.h:122
virtual void visitCmp(const Cmp &)
Definition InstructionVisitor.h:146
virtual void visitSHL(SHL &I)
Definition InstructionVisitor.h:125
virtual void visitFCvtFS(const FCvtFS &)
Definition InstructionVisitor.h:157
virtual void visitSubI(const SubI &)
Definition InstructionVisitor.h:192
virtual void visitAndI(AndI &I)
Definition InstructionVisitor.h:85
virtual void visitNeg(const Neg &)
Definition InstructionVisitor.h:177
virtual void visitFAdd(FAdd &I)
Definition InstructionVisitor.h:95
virtual void visitURem(URem &I)
Definition InstructionVisitor.h:136
virtual void visitOr(Or &I)
Definition InstructionVisitor.h:121
virtual void visitAdd(const Add &)
Definition InstructionVisitor.h:140
virtual void visitXor(const Xor &)
Definition InstructionVisitor.h:195
virtual void visitFCvtUF(const FCvtUF &)
Definition InstructionVisitor.h:160
virtual void visitFMovFI(const FMovFI &)
Definition InstructionVisitor.h:164
virtual void visitSHRAI(SHRAI &I)
Definition InstructionVisitor.h:128
virtual void visitFLoad(const FLoad &)
Definition InstructionVisitor.h:162
virtual ~InstructionVisitor()=default
virtual void visitMov(const Mov &)
Definition InstructionVisitor.h:175
virtual void visitLoad(const Load &)
Definition InstructionVisitor.h:173
virtual void visitSHRLI(const SHRLI &)
Definition InstructionVisitor.h:188
virtual void visitFStore(FStore &I)
Definition InstructionVisitor.h:110
virtual void visitSExt(SExt &I)
Definition InstructionVisitor.h:124
InstructionVisitor(InstructionVisitor &&)=delete
virtual void visitCmpSet(const CmpSet &)
Definition InstructionVisitor.h:147
virtual void visitCmpZSet(const CmpZSet &)
Definition InstructionVisitor.h:150
InstructionVisitor & operator=(InstructionVisitor &&)=delete
virtual void visitFMov(FMov &I)
Definition InstructionVisitor.h:105
virtual void visitFMovFI(FMovFI &I)
Definition InstructionVisitor.h:106
virtual void visitFCmp(FCmp &I)
Definition InstructionVisitor.h:96
virtual void visitSDiv(const SDiv &)
Definition InstructionVisitor.h:181
virtual void visitAddI(const AddI &)
Definition InstructionVisitor.h:141
virtual void visitCmpBr(CmpBr &I)
Definition InstructionVisitor.h:87
virtual void visitFCvtFU(const FCvtFU &)
Definition InstructionVisitor.h:158
virtual void visitOrI(const OrI &)
Definition InstructionVisitor.h:180
virtual void visitFSub(FSub &I)
Definition InstructionVisitor.h:111
virtual void visitNeg(Neg &I)
Definition InstructionVisitor.h:119
virtual void visitCmpSet(CmpSet &I)
Definition InstructionVisitor.h:89
virtual void visitUDiv(UDiv &I)
Definition InstructionVisitor.h:135
virtual void visitAnd(And &I)
Definition InstructionVisitor.h:84
InstructionVisitor & operator=(const InstructionVisitor &)=delete
virtual void visitSRem(SRem &I)
Definition InstructionVisitor.h:131
virtual void visitFCvtFS(FCvtFS &I)
Definition InstructionVisitor.h:99
virtual void visitNot(Not &I)
Definition InstructionVisitor.h:120
virtual void visitLive(const FakeUse &)
Definition InstructionVisitor.h:172
virtual void visitAddI(AddI &I)
Definition InstructionVisitor.h:83
virtual void visitFNeg(FNeg &I)
Definition InstructionVisitor.h:109
virtual void visitAdd(Add &I)
Definition InstructionVisitor.h:82
virtual void visitCondBr(CondBr &I)
Definition InstructionVisitor.h:93
virtual void visitSHRAI(const SHRAI &)
Definition InstructionVisitor.h:186
virtual void visitCmpZBr(const CmpZBr &)
Definition InstructionVisitor.h:148
virtual void visitFNeg(const FNeg &)
Definition InstructionVisitor.h:167
virtual void visitXorI(const XorI &)
Definition InstructionVisitor.h:196
virtual void visitFStore(const FStore &)
Definition InstructionVisitor.h:168
Definition LA.h:25
Definition LI.h:24
Definition Load.h:23
Definition Marker.h:19
Definition Mov.h:18
Definition Mul.h:18
Definition Neg.h:18
Definition Not.h:18
Definition OrI.h:19
Definition Or.h:18
Definition SDiv.h:18
Definition SExt.h:23
Definition SHLI.h:19
Definition SHL.h:18
Definition SHRAI.h:19
Definition SHRA.h:18
Definition SHRLI.h:19
Definition SHRL.h:18
Definition SRem.h:18
Definition Store.h:23
Definition SubI.h:19
Definition Sub.h:18
Definition UDiv.h:18
Definition URem.h:18
Definition XorI.h:19
Definition Xor.h:18
Definition BasicBlock.h:22