• Home
  • Raw
  • Download

Lines Matching refs:OS

32   void run(raw_ostream &OS);
37 void EmitEnum(raw_ostream &OS, StringRef N, Record *R);
40 void EmitInterp(raw_ostream &OS, StringRef N, Record *R);
43 void EmitDisasm(raw_ostream &OS, StringRef N, Record *R);
46 void EmitEmitter(raw_ostream &OS, StringRef N, Record *R);
49 void EmitProto(raw_ostream &OS, StringRef N, Record *R);
52 void EmitGroup(raw_ostream &OS, StringRef N, Record *R);
55 void EmitEval(raw_ostream &OS, StringRef N, Record *R);
57 void PrintTypes(raw_ostream &OS, ArrayRef<Record *> Types);
88 void ClangOpcodesEmitter::run(raw_ostream &OS) { in run() argument
95 EmitEnum(OS, N, Opcode); in run()
96 EmitInterp(OS, N, Opcode); in run()
97 EmitDisasm(OS, N, Opcode); in run()
98 EmitProto(OS, N, Opcode); in run()
99 EmitGroup(OS, N, Opcode); in run()
100 EmitEmitter(OS, N, Opcode); in run()
101 EmitEval(OS, N, Opcode); in run()
105 void ClangOpcodesEmitter::EmitEnum(raw_ostream &OS, StringRef N, Record *R) { in EmitEnum() argument
106 OS << "#ifdef GET_OPCODE_NAMES\n"; in EmitEnum()
107 Enumerate(R, N, [&OS](ArrayRef<Record *>, const Twine &ID) { in EmitEnum()
108 OS << "OP_" << ID << ",\n"; in EmitEnum()
110 OS << "#endif\n"; in EmitEnum()
113 void ClangOpcodesEmitter::EmitInterp(raw_ostream &OS, StringRef N, Record *R) { in EmitInterp() argument
114 OS << "#ifdef GET_INTERP\n"; in EmitInterp()
116 Enumerate(R, N, [this, R, &OS, &N](ArrayRef<Record *> TS, const Twine &ID) { in EmitInterp()
121 OS << "case OP_" << ID << ": {\n"; in EmitInterp()
125 OS << "\tauto V" << I; in EmitInterp()
126 OS << " = "; in EmitInterp()
127 OS << "PC.read<" << Args[I]->getValueAsString("Name") << ">();\n"; in EmitInterp()
131 OS << "\tif (!" << N; in EmitInterp()
132 PrintTypes(OS, TS); in EmitInterp()
133 OS << "(S"; in EmitInterp()
135 OS << ", PC"; in EmitInterp()
137 OS << ", OpPC"; in EmitInterp()
139 OS << ", Result"; in EmitInterp()
141 OS << ", V" << I; in EmitInterp()
142 OS << "))\n"; in EmitInterp()
143 OS << "\t\treturn false;\n"; in EmitInterp()
147 OS << "\tif (!S.Current || S.Current->isRoot())\n"; in EmitInterp()
148 OS << "\t\treturn true;\n"; in EmitInterp()
151 OS << "\tcontinue;\n"; in EmitInterp()
152 OS << "}\n"; in EmitInterp()
154 OS << "#endif\n"; in EmitInterp()
157 void ClangOpcodesEmitter::EmitDisasm(raw_ostream &OS, StringRef N, Record *R) { in EmitDisasm() argument
158 OS << "#ifdef GET_DISASM\n"; in EmitDisasm()
159 Enumerate(R, N, [R, &OS](ArrayRef<Record *>, const Twine &ID) { in EmitDisasm()
160 OS << "case OP_" << ID << ":\n"; in EmitDisasm()
161 OS << "\tPrintName(\"" << ID << "\");\n"; in EmitDisasm()
162 OS << "\tOS << \"\\t\""; in EmitDisasm()
165 OS << " << PC.read<" << Arg->getValueAsString("Name") << ">() << \" \""; in EmitDisasm()
167 OS << "<< \"\\n\";\n"; in EmitDisasm()
168 OS << "\tcontinue;\n"; in EmitDisasm()
170 OS << "#endif\n"; in EmitDisasm()
173 void ClangOpcodesEmitter::EmitEmitter(raw_ostream &OS, StringRef N, Record *R) { in EmitEmitter() argument
177 OS << "#ifdef GET_LINK_IMPL\n"; in EmitEmitter()
178 Enumerate(R, N, [R, &OS](ArrayRef<Record *>, const Twine &ID) { in EmitEmitter()
182 OS << "bool ByteCodeEmitter::emit" << ID << "("; in EmitEmitter()
184 OS << Args[I]->getValueAsString("Name") << " A" << I << ","; in EmitEmitter()
185 OS << "const SourceInfo &L) {\n"; in EmitEmitter()
188 OS << "\treturn emitOp<"; in EmitEmitter()
191 OS << ", "; in EmitEmitter()
192 OS << Args[I]->getValueAsString("Name"); in EmitEmitter()
194 OS << ">(OP_" << ID; in EmitEmitter()
196 OS << ", A" << I; in EmitEmitter()
197 OS << ", L);\n"; in EmitEmitter()
198 OS << "}\n"; in EmitEmitter()
200 OS << "#endif\n"; in EmitEmitter()
203 void ClangOpcodesEmitter::EmitProto(raw_ostream &OS, StringRef N, Record *R) { in EmitProto() argument
204 OS << "#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)\n"; in EmitProto()
206 Enumerate(R, N, [&OS, &Args](ArrayRef<Record *> TS, const Twine &ID) { in EmitProto()
207 OS << "bool emit" << ID << "("; in EmitProto()
209 OS << Arg->getValueAsString("Name") << ", "; in EmitProto()
210 OS << "const SourceInfo &);\n"; in EmitProto()
216 OS << "#if defined(GET_EVAL_PROTO)\n"; in EmitProto()
217 OS << "template<"; in EmitProto()
220 OS << ", "; in EmitProto()
221 OS << "PrimType"; in EmitProto()
223 OS << ">\n"; in EmitProto()
224 OS << "bool emit" << N << "("; in EmitProto()
226 OS << Arg->getValueAsString("Name") << ", "; in EmitProto()
227 OS << "const SourceInfo &);\n"; in EmitProto()
228 OS << "#endif\n"; in EmitProto()
231 OS << "#endif\n"; in EmitProto()
234 void ClangOpcodesEmitter::EmitGroup(raw_ostream &OS, StringRef N, Record *R) { in EmitGroup() argument
242 OS << "#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)\n"; in EmitGroup()
243 OS << "bool emit" << N << "("; in EmitGroup()
245 OS << "PrimType, "; in EmitGroup()
247 OS << Arg->getValueAsString("Name") << ", "; in EmitGroup()
248 OS << "const SourceInfo &I);\n"; in EmitGroup()
249 OS << "#endif\n"; in EmitGroup()
252 OS << "#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)\n"; in EmitGroup()
253 OS << "bool \n"; in EmitGroup()
254 OS << "#if defined(GET_EVAL_IMPL)\n"; in EmitGroup()
255 OS << "EvalEmitter\n"; in EmitGroup()
256 OS << "#else\n"; in EmitGroup()
257 OS << "ByteCodeEmitter\n"; in EmitGroup()
258 OS << "#endif\n"; in EmitGroup()
259 OS << "::emit" << N << "("; in EmitGroup()
261 OS << "PrimType T" << I << ", "; in EmitGroup()
263 OS << Args[I]->getValueAsString("Name") << " A" << I << ", "; in EmitGroup()
264 OS << "const SourceInfo &I) {\n"; in EmitGroup()
268 Rec = [this, &Rec, &OS, Types, &Args, R, &TS, N](size_t I, const Twine &ID) { in EmitGroup()
273 OS << "#ifdef GET_LINK_IMPL\n"; in EmitGroup()
274 OS << "return emit" << ID << "\n"; in EmitGroup()
275 OS << "#else\n"; in EmitGroup()
276 OS << "return emit" << N; in EmitGroup()
277 PrintTypes(OS, TS); in EmitGroup()
278 OS << "\n#endif\n"; in EmitGroup()
280 OS << "return emit" << ID; in EmitGroup()
283 OS << "("; in EmitGroup()
285 OS << "A" << I << ", "; in EmitGroup()
287 OS << "I);\n"; in EmitGroup()
293 OS << "switch (T" << I << "){\n"; in EmitGroup()
296 OS << "case PT_" << Case->getName() << ":\n"; in EmitGroup()
303 OS << "default: llvm_unreachable(\"invalid type\");\n"; in EmitGroup()
304 OS << "}\n"; in EmitGroup()
305 OS << "llvm_unreachable(\"invalid enum value\");\n"; in EmitGroup()
312 OS << "}\n"; in EmitGroup()
313 OS << "#endif\n"; in EmitGroup()
316 void ClangOpcodesEmitter::EmitEval(raw_ostream &OS, StringRef N, Record *R) { in EmitEval() argument
320 OS << "#ifdef GET_EVAL_IMPL\n"; in EmitEval()
321 Enumerate(R, N, [this, R, &N, &OS](ArrayRef<Record *> TS, const Twine &ID) { in EmitEval()
324 OS << "bool EvalEmitter::emit" << ID << "("; in EmitEval()
326 OS << Args[I]->getValueAsString("Name") << " A" << I << ","; in EmitEval()
327 OS << "const SourceInfo &L) {\n"; in EmitEval()
328 OS << "if (!isActive()) return true;\n"; in EmitEval()
329 OS << "CurrentSource = L;\n"; in EmitEval()
331 OS << "return " << N; in EmitEval()
332 PrintTypes(OS, TS); in EmitEval()
333 OS << "(S, OpPC"; in EmitEval()
335 OS << ", A" << I; in EmitEval()
336 OS << ");\n"; in EmitEval()
337 OS << "}\n"; in EmitEval()
340 OS << "#endif\n"; in EmitEval()
343 void ClangOpcodesEmitter::PrintTypes(raw_ostream &OS, ArrayRef<Record *> Types) { in PrintTypes() argument
346 OS << "<"; in PrintTypes()
349 OS << ", "; in PrintTypes()
350 OS << "PT_" << Types[I]->getName(); in PrintTypes()
352 OS << ">"; in PrintTypes()
355 void clang::EmitClangOpcodes(RecordKeeper &Records, raw_ostream &OS) { in EmitClangOpcodes() argument
356 ClangOpcodesEmitter(Records).run(OS); in EmitClangOpcodes()