Lines Matching refs:OS

222   void emitBinSearch(raw_ostream &OS, unsigned TableSize);
223 void emitTablesWithFunc(raw_ostream &OS);
224 unsigned emitBinSearchTable(raw_ostream &OS);
227 void emitMapFuncBody(raw_ostream &OS, unsigned TableSize);
360 unsigned MapTableEmitter::emitBinSearchTable(raw_ostream &OS) {
370 OS << "static const uint16_t "<<InstrMapDesc.getName();
373 OS << "Table[]["<< NumCol+1 << "] = {\n";
391 OS << " { " << TargetName << "::" << CurInstr->getName();
392 OS << OutStr <<" },\n";
398 OS << " { " << TargetName << "::" << "INSTRUCTION_LIST_END, ";
399 OS << TargetName << "::" << "INSTRUCTION_LIST_END }";
401 OS << "}; // End of " << InstrMapDesc.getName() << "Table\n\n";
410 void MapTableEmitter::emitBinSearch(raw_ostream &OS, unsigned TableSize) {
411 OS << " unsigned mid;\n";
412 OS << " unsigned start = 0;\n";
413 OS << " unsigned end = " << TableSize << ";\n";
414 OS << " while (start < end) {\n";
415 OS << " mid = start + (end - start)/2;\n";
416 OS << " if (Opcode == " << InstrMapDesc.getName() << "Table[mid][0]) {\n";
417 OS << " break;\n";
418 OS << " }\n";
419 OS << " if (Opcode < " << InstrMapDesc.getName() << "Table[mid][0])\n";
420 OS << " end = mid;\n";
421 OS << " else\n";
422 OS << " start = mid + 1;\n";
423 OS << " }\n";
424 OS << " if (start == end)\n";
425 OS << " return -1; // Instruction doesn't exist in this table.\n\n";
432 void MapTableEmitter::emitMapFuncBody(raw_ostream &OS,
441 emitBinSearch(OS, TableSize);
448 OS << " if (in" << ColName;
449 OS << " == ";
450 OS << ColName << "_" << ColumnI->getElement(j)->getAsUnquotedString();
451 if (j < ColumnI->getSize() - 1) OS << " && ";
452 else OS << ")\n";
454 OS << " return " << InstrMapDesc.getName();
455 OS << "Table[mid]["<<i+1<<"];\n";
457 OS << " return -1;";
460 OS << " return " << InstrMapDesc.getName() << "Table[mid][1];\n";
462 OS <<"}\n\n";
469 void MapTableEmitter::emitTablesWithFunc(raw_ostream &OS) {
478 OS << "// "<< InstrMapDesc.getName() << "\n";
479 OS << "int "<< InstrMapDesc.getName() << "(uint16_t Opcode";
483 OS << ", enum " << ColName << " in" << ColName << ") {\n";
485 } else { OS << ") {\n"; }
488 unsigned TableSize = emitBinSearchTable(OS);
491 emitMapFuncBody(OS, TableSize);
498 static void emitEnums(raw_ostream &OS, RecordKeeper &Records) {
547 OS << "enum " << (*II).first << " {\n";
549 OS << "\t" << (*II).first << "_" << FieldValues[i]->getAsUnquotedString();
551 OS << ",\n";
553 OS << "\n};\n\n";
564 void EmitMapTable(RecordKeeper &Records, raw_ostream &OS) {
573 OS << "#ifdef GET_INSTRMAP_INFO\n";
574 OS << "#undef GET_INSTRMAP_INFO\n";
575 OS << "namespace llvm {\n\n";
576 OS << "namespace " << TargetName << " {\n\n";
579 emitEnums(OS, Records);
597 IMap.emitTablesWithFunc(OS);
599 OS << "} // End " << TargetName << " namespace\n";
600 OS << "} // End llvm namespace\n";
601 OS << "#endif // GET_INSTRMAP_INFO\n\n";