Lines Matching refs:OS

18 void PredicateExpander::expandTrue(raw_ostream &OS) { OS << "true"; }
19 void PredicateExpander::expandFalse(raw_ostream &OS) { OS << "false"; }
21 void PredicateExpander::expandCheckImmOperand(raw_ostream &OS, int OpIndex,
25 OS << FunctionMapper << "(";
26 OS << "MI" << (isByRef() ? "." : "->") << "getOperand(" << OpIndex
29 OS << ")";
30 OS << (shouldNegate() ? " != " : " == ") << ImmVal;
33 void PredicateExpander::expandCheckImmOperand(raw_ostream &OS, int OpIndex,
37 expandCheckImmOperandSimple(OS, OpIndex, FunctionMapper);
40 OS << FunctionMapper << "(";
41 OS << "MI" << (isByRef() ? "." : "->") << "getOperand(" << OpIndex
44 OS << ")";
45 OS << (shouldNegate() ? " != " : " == ") << ImmVal;
48 void PredicateExpander::expandCheckImmOperandSimple(raw_ostream &OS,
52 OS << "!";
54 OS << FunctionMapper << "(";
55 OS << "MI" << (isByRef() ? "." : "->") << "getOperand(" << OpIndex
58 OS << ")";
61 void PredicateExpander::expandCheckRegOperand(raw_ostream &OS, int OpIndex,
67 OS << FunctionMapper << "(";
68 OS << "MI" << (isByRef() ? "." : "->") << "getOperand(" << OpIndex
71 OS << ")";
72 OS << (shouldNegate() ? " != " : " == ");
75 OS << Str << "::";
76 OS << Reg->getName();
80 void PredicateExpander::expandCheckRegOperandSimple(raw_ostream &OS,
84 OS << "!";
86 OS << FunctionMapper << "(";
87 OS << "MI" << (isByRef() ? "." : "->") << "getOperand(" << OpIndex
90 OS << ")";
93 void PredicateExpander::expandCheckInvalidRegOperand(raw_ostream &OS,
95 OS << "MI" << (isByRef() ? "." : "->") << "getOperand(" << OpIndex
99 void PredicateExpander::expandCheckSameRegOperand(raw_ostream &OS, int First,
101 OS << "MI" << (isByRef() ? "." : "->") << "getOperand(" << First
106 void PredicateExpander::expandCheckNumOperands(raw_ostream &OS, int NumOps) {
107 OS << "MI" << (isByRef() ? "." : "->") << "getNumOperands() "
111 void PredicateExpander::expandCheckOpcode(raw_ostream &OS, const Record *Inst) {
112 OS << "MI" << (isByRef() ? "." : "->") << "getOpcode() "
117 void PredicateExpander::expandCheckOpcode(raw_ostream &OS,
123 OS << "( ";
124 expandCheckOpcode(OS, Opcodes[0]);
125 OS << " )";
129 OS << '(';
132 OS << '\n';
133 OS.indent(getIndentLevel() * 2);
135 OS << (shouldNegate() ? "&& " : "|| ");
137 expandCheckOpcode(OS, Rec);
141 OS << '\n';
143 OS.indent(getIndentLevel() * 2);
144 OS << ')';
147 void PredicateExpander::expandCheckPseudo(raw_ostream &OS,
150 expandFalse(OS);
152 expandCheckOpcode(OS, Opcodes);
155 void PredicateExpander::expandPredicateSequence(raw_ostream &OS,
160 return expandPredicate(OS, Sequence[0]);
164 OS << (shouldNegate() ? "!(" : "(");
170 OS << '\n';
171 OS.indent(getIndentLevel() * 2);
173 OS << (IsCheckAll ? "&& " : "|| ");
174 expandPredicate(OS, Rec);
177 OS << '\n';
179 OS.indent(getIndentLevel() * 2);
180 OS << ')';
184 void PredicateExpander::expandTIIFunctionCall(raw_ostream &OS,
186 OS << (shouldNegate() ? "!" : "");
187 OS << TargetName << (shouldExpandForMC() ? "_MC::" : "InstrInfo::");
188 OS << MethodName << (isByRef() ? "(MI)" : "(*MI)");
191 void PredicateExpander::expandCheckIsRegOperand(raw_ostream &OS, int OpIndex) {
192 OS << (shouldNegate() ? "!" : "") << "MI" << (isByRef() ? "." : "->")
196 void PredicateExpander::expandCheckIsImmOperand(raw_ostream &OS, int OpIndex) {
197 OS << (shouldNegate() ? "!" : "") << "MI" << (isByRef() ? "." : "->")
201 void PredicateExpander::expandCheckFunctionPredicate(raw_ostream &OS,
204 OS << (shouldExpandForMC() ? MCInstFn : MachineInstrFn)
208 void PredicateExpander::expandCheckNonPortable(raw_ostream &OS,
211 return expandFalse(OS);
213 OS << '(' << Code << ')';
216 void PredicateExpander::expandReturnStatement(raw_ostream &OS,
225 OS << Buffer;
228 void PredicateExpander::expandOpcodeSwitchCase(raw_ostream &OS,
232 OS.indent(getIndentLevel() * 2);
233 OS << "case " << Opcode->getValueAsString("Namespace")
238 OS.indent(getIndentLevel() * 2);
239 expandStatement(OS, Rec->getValueAsDef("CaseStmt"));
243 void PredicateExpander::expandOpcodeSwitchStatement(raw_ostream &OS,
268 OS << Buffer;
271 void PredicateExpander::expandStatement(raw_ostream &OS, const Record *Rec) {
274 expandOpcodeSwitchStatement(OS, Rec->getValueAsListOfDefs("Cases"),
280 expandReturnStatement(OS, Rec->getValueAsDef("Pred"));
287 void PredicateExpander::expandPredicate(raw_ostream &OS, const Record *Rec) {
291 return expandFalse(OS);
292 return expandTrue(OS);
297 return expandTrue(OS);
298 return expandFalse(OS);
303 expandPredicate(OS, Rec->getValueAsDef("Pred"));
309 return expandCheckIsRegOperand(OS, Rec->getValueAsInt("OpIndex"));
312 return expandCheckIsImmOperand(OS, Rec->getValueAsInt("OpIndex"));
315 return expandCheckRegOperand(OS, Rec->getValueAsInt("OpIndex"),
320 return expandCheckRegOperandSimple(OS, Rec->getValueAsInt("OpIndex"),
324 return expandCheckInvalidRegOperand(OS, Rec->getValueAsInt("OpIndex"));
327 return expandCheckImmOperand(OS, Rec->getValueAsInt("OpIndex"),
332 return expandCheckImmOperand(OS, Rec->getValueAsInt("OpIndex"),
337 return expandCheckImmOperandSimple(OS, Rec->getValueAsInt("OpIndex"),
341 return expandCheckSameRegOperand(OS, Rec->getValueAsInt("FirstIndex"),
345 return expandCheckNumOperands(OS, Rec->getValueAsInt("NumOps"));
348 return expandCheckPseudo(OS, Rec->getValueAsListOfDefs("ValidOpcodes"));
351 return expandCheckOpcode(OS, Rec->getValueAsListOfDefs("ValidOpcodes"));
354 return expandPredicateSequence(OS, Rec->getValueAsListOfDefs("Predicates"),
358 return expandPredicateSequence(OS, Rec->getValueAsListOfDefs("Predicates"),
363 OS, Rec->getValueAsString("MCInstFnName"),
367 return expandCheckNonPortable(OS, Rec->getValueAsString("CodeBlock"));
370 return expandTIIFunctionCall(OS, Rec->getValueAsString("FunctionName"));
375 void STIPredicateExpander::expandHeader(raw_ostream &OS,
380 OS.indent(getIndentLevel() * 2);
381 OS << "bool ";
383 OS << getClassPrefix() << "::";
384 OS << FunctionName << "(";
386 OS << "const MCInst " << (isByRef() ? "&" : "*") << "MI";
388 OS << "const MachineInstr " << (isByRef() ? "&" : "*") << "MI";
390 OS << ", APInt &Mask";
391 OS << (shouldExpandForMC() ? ", unsigned ProcessorID) const " : ") const ");
393 OS << "{\n";
398 OS << "override";
399 OS << ";\n";
402 void STIPredicateExpander::expandPrologue(raw_ostream &OS,
411 OS.indent(IndentLevel * 2);
412 OS << "if (" << Delegate->getValueAsString("Name") << "(MI";
414 OS << ", Mask";
416 OS << ", ProcessorID";
417 OS << "))\n";
418 OS.indent((1 + IndentLevel) * 2);
419 OS << "return true;\n\n";
425 OS.indent(IndentLevel * 2);
426 OS << "unsigned ProcessorID = getSchedModel().getProcessorID();\n";
429 void STIPredicateExpander::expandOpcodeGroup(raw_ostream &OS, const OpcodeGroup &Group,
440 OS.indent(getIndentLevel() * 2);
441 OS << "if (ProcessorID == " << I;
443 OS << " || ProcessorID == " << I;
448 OS << ") {\n";
451 OS.indent(getIndentLevel() * 2);
454 OS << "Mask.clearAllBits();\n";
456 OS << "Mask = " << PI.OperandMask << ";\n";
457 OS.indent(getIndentLevel() * 2);
459 OS << "return ";
460 expandPredicate(OS, PI.Predicate);
461 OS << ";\n";
463 OS.indent(getIndentLevel() * 2);
464 OS << "}\n";
468 void STIPredicateExpander::expandBody(raw_ostream &OS,
474 OS.indent(IndentLevel * 2);
475 OS << "switch(MI" << (isByRef() ? "." : "->") << "getOpcode()) {\n";
476 OS.indent(IndentLevel * 2);
477 OS << "default:\n";
478 OS.indent(IndentLevel * 2);
479 OS << " break;";
483 OS << '\n';
484 OS.indent(IndentLevel * 2);
485 OS << "case " << getTargetName() << "::" << Opcode->getName() << ":";
488 OS << '\n';
490 expandOpcodeGroup(OS, Group, UpdatesOpcodeMask);
492 OS.indent(getIndentLevel() * 2);
493 OS << "break;\n";
497 OS.indent(IndentLevel * 2);
498 OS << "}\n";
501 void STIPredicateExpander::expandEpilogue(raw_ostream &OS,
503 OS << '\n';
504 OS.indent(getIndentLevel() * 2);
505 OS << "return ";
506 expandPredicate(OS, Fn.getDefaultReturnPredicate());
507 OS << ";\n";
510 OS.indent(getIndentLevel() * 2);
512 OS << "} // " << ClassPrefix << "::" << FunctionName << "\n\n";
515 void STIPredicateExpander::expandSTIPredicate(raw_ostream &OS,
521 expandHeader(OS, Fn);
523 expandPrologue(OS, Fn);
524 expandBody(OS, Fn);
525 expandEpilogue(OS, Fn);