Home | History | Annotate | Download | only in TableGen

Lines Matching refs:OS

100     void printManglingSuffix(raw_ostream &OS, ImmPredicateSet &ImmPredicates,
103 OS << 'r';
105 OS << 'f';
107 OS << 'i';
110 OS << "_" << ImmPredicates.getPredicate(Code-1).getFnName();
146 void emitImmediatePredicate(raw_ostream &OS, ImmPredicateSet &ImmPredicates) {
155 OS << " &&\n ";
160 OS << "VT == "
165 OS << PredFn.getFnName() << "(imm" << i <<')';
280 void PrintParameters(raw_ostream &OS) const {
283 OS << "unsigned Op" << i << ", bool Op" << i << "IsKill";
285 OS << "uint64_t imm" << i;
287 OS << "const ConstantFP *f" << i;
292 OS << ", ";
296 void PrintArguments(raw_ostream &OS,
306 OS << ", ";
308 OS << "Op" << i << ", Op" << i << "IsKill";
311 OS << "imm" << i;
314 OS << "f" << i;
322 void PrintArguments(raw_ostream &OS) const {
325 OS << "Op" << i << ", Op" << i << "IsKill";
327 OS << "imm" << i;
329 OS << "f" << i;
334 OS << ", ";
339 void PrintManglingSuffix(raw_ostream &OS, const std::vector<std::string> &PR,
350 Operands[i].printManglingSuffix(OS, ImmPredicates, StripImmCodes);
354 void PrintManglingSuffix(raw_ostream &OS, ImmPredicateSet &ImmPredicates,
357 Operands[i].printManglingSuffix(OS, ImmPredicates, StripImmCodes);
382 void printImmediatePredicates(raw_ostream &OS);
383 void printFunctionDefinitions(raw_ostream &OS);
567 void FastISelMap::printImmediatePredicates(raw_ostream &OS) {
571 OS << "\n// FastEmit Immediate Predicate functions.\n";
574 OS << "static bool " << I->getFnName() << "(int64_t Imm) {\n";
575 OS << I->getImmediatePredicateCode() << "\n}\n";
578 OS << "\n\n";
582 void FastISelMap::printFunctionDefinitions(raw_ostream &OS) {
594 OS << "// FastEmit functions for " << Opcode << ".\n";
595 OS << "\n";
609 OS << "unsigned FastEmit_"
613 Operands.PrintManglingSuffix(OS, ImmediatePredicates);
614 OS << "(";
615 Operands.PrintParameters(OS);
616 OS << ") {\n";
630 OS << " if (" + PredicateCheck + ") {\n";
631 OS << " ";
637 OS << " BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, "
642 OS << " return FastEmitInst_";
644 Operands.PrintManglingSuffix(OS, *Memo.PhysRegs,
646 OS << "(" << InstNS << Memo.Name << ", ";
647 OS << "&" << InstNS << Memo.RC->getName() << "RegClass";
649 OS << ", ";
650 Operands.PrintArguments(OS, *Memo.PhysRegs);
651 OS << ");\n";
653 OS << "extractsubreg(" << getName(RetVT);
654 OS << ", Op0, Op0IsKill, " << Memo.SubRegNo << ");\n";
658 OS << " }\n";
663 OS << " return 0;\n";
664 OS << "}\n";
665 OS << "\n";
669 OS << "unsigned FastEmit_"
672 Operands.PrintManglingSuffix(OS, ImmediatePredicates);
673 OS << "(MVT RetVT";
675 OS << ", ";
676 Operands.PrintParameters(OS);
677 OS << ") {\nswitch (RetVT.SimpleTy) {\n";
681 OS << " case " << getName(RetVT) << ": return FastEmit_"
684 Operands.PrintManglingSuffix(OS, ImmediatePredicates);
685 OS << "(";
686 Operands.PrintArguments(OS);
687 OS << ");\n";
689 OS << " default: return 0;\n}\n}\n\n";
693 OS << "unsigned FastEmit_"
696 Operands.PrintManglingSuffix(OS, ImmediatePredicates);
697 OS << "(MVT RetVT";
699 OS << ", ";
700 Operands.PrintParameters(OS);
701 OS << ") {\n";
703 OS << " if (RetVT.SimpleTy != " << getName(RM.begin()->first)
721 OS << " if (" + PredicateCheck + ") {\n";
722 OS << " ";
728 OS << " BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, "
733 OS << " return FastEmitInst_";
736 Operands.PrintManglingSuffix(OS, *Memo.PhysRegs,
738 OS << "(" << InstNS << Memo.Name << ", ";
739 OS << "&" << InstNS << Memo.RC->getName() << "RegClass";
741 OS << ", ";
742 Operands.PrintArguments(OS, *Memo.PhysRegs);
743 OS << ");\n";
745 OS << "extractsubreg(RetVT, Op0, Op0IsKill, ";
746 OS << Memo.SubRegNo;
747 OS << ");\n";
751 OS << " }\n";
756 OS << " return 0;\n";
757 OS << "}\n";
758 OS << "\n";
763 OS << "unsigned FastEmit_"
765 Operands.PrintManglingSuffix(OS, ImmediatePredicates);
766 OS << "(MVT VT, MVT RetVT";
768 OS << ", ";
769 Operands.PrintParameters(OS);
770 OS << ") {\n";
771 OS << " switch (VT.SimpleTy) {\n";
776 OS << " case " << TypeName << ": return FastEmit_"
778 Operands.PrintManglingSuffix(OS, ImmediatePredicates);
779 OS << "(RetVT";
781 OS << ", ";
782 Operands.PrintArguments(OS);
783 OS << ");\n";
785 OS << " default: return 0;\n";
786 OS << " }\n";
787 OS << "}\n";
788 OS << "\n";
791 OS << "// Top-level FastEmit function.\n";
792 OS << "\n";
796 OS << "unsigned FastEmit_";
797 Operands.PrintManglingSuffix(OS, ImmediatePredicates);
798 OS << "(MVT VT, MVT RetVT, unsigned Opcode";
800 OS << ", ";
801 Operands.PrintParameters(OS);
802 OS << ") {\n";
820 OS << " if (";
821 MI->second[i].emitImmediatePredicate(OS, ImmediatePredicates);
822 OS << ")\n if (unsigned Reg = FastEmit_";
823 MI->second[i].PrintManglingSuffix(OS, ImmediatePredicates);
824 OS << "(VT, RetVT, Opcode";
826 OS << ", ";
827 MI->second[i].PrintArguments(OS);
828 OS << "))\n return Reg;\n\n";
835 OS << " switch (Opcode) {\n";
840 OS << " case " << Opcode << ": return FastEmit_"
842 Operands.PrintManglingSuffix(OS, ImmediatePredicates);
843 OS << "(VT, RetVT";
845 OS << ", ";
846 Operands.PrintArguments(OS);
847 OS << ");\n";
849 OS << " default: return 0;\n";
850 OS << " }\n";
851 OS << "}\n";
852 OS << "\n";
860 void EmitFastISel(RecordKeeper &RK, raw_ostream &OS) {
864 Target.getName() + " target", OS);
872 F.printImmediatePredicates(OS);
873 F.printFunctionDefinitions(OS);