Lines Matching refs:O

40   void EmitCallingConv(Record *CC, raw_ostream &O);
41 void EmitAction(Record *Action, unsigned Indent, raw_ostream &O);
42 void EmitArgRegisterLists(raw_ostream &O);
46 void CallingConvEmitter::run(raw_ostream &O) { in run() argument
47 emitSourceFileHeader("Calling Convention Implementation Fragment", O); in run()
54 O << "#ifndef GET_CC_REGISTER_LISTS\n\n"; in run()
59 O << "bool llvm::"; in run()
62 O << "static bool "; in run()
65 O << CC->getName() << "(unsigned ValNo, MVT ValVT,\n" in run()
76 EmitCallingConv(CC, O); in run()
80 EmitArgRegisterLists(O); in run()
82 O << "\n#endif // CC_REGISTER_LIST\n"; in run()
85 void CallingConvEmitter::EmitCallingConv(Record *CC, raw_ostream &O) { in EmitCallingConv() argument
95 O << "\n\n"; in EmitCallingConv()
98 O << "bool llvm::"; in EmitCallingConv()
101 O << "static bool "; in EmitCallingConv()
104 O << CurrentAction << "(unsigned ValNo, MVT ValVT,\n" in EmitCallingConv()
117 O << "\n"; in EmitCallingConv()
118 EmitAction(Action, 2, O); in EmitCallingConv()
121 O << "\n return true; // CC didn't match.\n"; in EmitCallingConv()
122 O << "}\n"; in EmitCallingConv()
126 unsigned Indent, raw_ostream &O) { in EmitAction() argument
130 O << IndentStr << "if ("; in EmitAction()
136 if (i != 0) O << " ||\n " << IndentStr; in EmitAction()
137 O << "LocVT == " << getEnumName(getValueType(VT)); in EmitAction()
141 O << Action->getValueAsString("Predicate"); in EmitAction()
147 O << ") {\n"; in EmitAction()
148 EmitAction(Action->getValueAsDef("SubAction"), Indent+2, O); in EmitAction()
149 O << IndentStr << "}\n"; in EmitAction()
153 O << IndentStr << "if (!" << CC->getName() in EmitAction()
162 O << IndentStr << "if (unsigned Reg = State.AllocateReg(" << Name in EmitAction()
169 O << IndentStr << "static const MCPhysReg RegList" << ++Counter in EmitAction()
171 O << IndentStr << " "; in EmitAction()
179 O << LS << Name; in EmitAction()
181 O << "\n" << IndentStr << "};\n"; in EmitAction()
182 O << IndentStr << "if (unsigned Reg = State.AllocateReg(RegList" in EmitAction()
185 O << IndentStr << " State.addLoc(CCValAssign::getReg(ValNo, ValVT, " in EmitAction()
190 O << IndentStr << " (void)State.AllocateStack("; in EmitAction()
192 O << Size << ", "; in EmitAction()
194 O << "\n" in EmitAction()
200 O << "Align(" << Align << ")"; in EmitAction()
202 O << "\n" in EmitAction()
207 O << ");\n"; in EmitAction()
209 O << IndentStr << " return false;\n"; in EmitAction()
210 O << IndentStr << "}\n"; in EmitAction()
219 O << IndentStr << "if (unsigned Reg = State.AllocateReg("; in EmitAction()
220 O << getQualifiedName(RegList->getElementAsRecord(0)); in EmitAction()
221 O << ", " << getQualifiedName(ShadowRegList->getElementAsRecord(0)); in EmitAction()
222 O << ")) {\n"; in EmitAction()
227 O << IndentStr << "static const MCPhysReg RegList" << RegListNumber in EmitAction()
229 O << IndentStr << " "; in EmitAction()
232 O << LS << getQualifiedName(RegList->getElementAsRecord(i)); in EmitAction()
233 O << "\n" << IndentStr << "};\n"; in EmitAction()
235 O << IndentStr << "static const MCPhysReg RegList" in EmitAction()
237 O << IndentStr << " "; in EmitAction()
240 O << LSS << getQualifiedName(ShadowRegList->getElementAsRecord(i)); in EmitAction()
241 O << "\n" << IndentStr << "};\n"; in EmitAction()
243 O << IndentStr << "if (unsigned Reg = State.AllocateReg(RegList" in EmitAction()
247 O << IndentStr << " State.addLoc(CCValAssign::getReg(ValNo, ValVT, " in EmitAction()
249 O << IndentStr << " return false;\n"; in EmitAction()
250 O << IndentStr << "}\n"; in EmitAction()
255 O << IndentStr << "int64_t Offset" << ++Counter in EmitAction()
258 O << Size << ", "; in EmitAction()
260 O << "\n" << IndentStr in EmitAction()
265 O << "Align(" << Align << ")"; in EmitAction()
267 O << "\n" in EmitAction()
272 O << ");\n" << IndentStr in EmitAction()
275 O << IndentStr << "return false;\n"; in EmitAction()
283 O << IndentStr << "static const MCPhysReg ShadowRegList" in EmitAction()
285 O << IndentStr << " "; in EmitAction()
288 O << LS << getQualifiedName(ShadowRegList->getElementAsRecord(i)); in EmitAction()
289 O << "\n" << IndentStr << "};\n"; in EmitAction()
291 O << IndentStr << "int64_t Offset" << ++Counter in EmitAction()
294 O << IndentStr << "State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset" in EmitAction()
296 O << IndentStr << "return false;\n"; in EmitAction()
300 O << IndentStr << "LocVT = " << getEnumName(DestVT) <<";\n"; in EmitAction()
302 O << IndentStr << "LocInfo = CCValAssign::FPExt;\n"; in EmitAction()
304 O << IndentStr << "if (ArgFlags.isSExt())\n" in EmitAction()
314 O << IndentStr << "LocVT = " << getEnumName(DestVT) << ";\n"; in EmitAction()
320 O << IndentStr << "if (ArgFlags.isSExt())\n" in EmitAction()
329 O << IndentStr << "LocVT = " << getEnumName(getValueType(DestTy)) <<";\n"; in EmitAction()
330 O << IndentStr << "LocInfo = CCValAssign::BCvt;\n"; in EmitAction()
333 O << IndentStr << "LocVT = " << getEnumName(getValueType(DestTy)) <<";\n"; in EmitAction()
334 O << IndentStr << "LocInfo = CCValAssign::Trunc;\n"; in EmitAction()
337 O << IndentStr << "LocVT = " << getEnumName(getValueType(DestTy)) <<";\n"; in EmitAction()
338 O << IndentStr << "LocInfo = CCValAssign::Indirect;\n"; in EmitAction()
342 O << IndentStr << "State.HandleByVal(ValNo, ValVT, LocVT, LocInfo, " in EmitAction()
344 O << IndentStr << "return false;\n"; in EmitAction()
346 O << IndentStr in EmitAction()
349 O << IndentStr << " return false;\n"; in EmitAction()
357 void CallingConvEmitter::EmitArgRegisterLists(raw_ostream &O) { in EmitArgRegisterLists() argument
394 O << "\n#else\n\n"; in EmitArgRegisterLists()
403 O << "const MCRegister " << Entry.first << "_ArgRegs[] = { "; in EmitArgRegisterLists()
406 O << "0"; in EmitArgRegisterLists()
410 O << LS << Reg; in EmitArgRegisterLists()
413 O << " };\n"; in EmitArgRegisterLists()
419 O << "\n// Registers used by Swift.\n"; in EmitArgRegisterLists()
424 O << "const MCRegister " << RegName << "_Swift_ArgRegs[] = { "; in EmitArgRegisterLists()
428 O << LS << Reg; in EmitArgRegisterLists()
430 O << " };\n"; in EmitArgRegisterLists()