X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FAsmWriterEmitter.h;h=7862caa25a8a03471faafa1ae348ff6543bccb67;hb=74f2ca8c4aa28cbb36c950b11416263eb6315593;hp=42d070ec75268b97c8c1ef087321f70b9e1aa02c;hpb=2e1f51b8a583649d74cb666ca5e4cf680cc1ced9;p=oota-llvm.git diff --git a/utils/TableGen/AsmWriterEmitter.h b/utils/TableGen/AsmWriterEmitter.h index 42d070ec752..7862caa25a8 100644 --- a/utils/TableGen/AsmWriterEmitter.h +++ b/utils/TableGen/AsmWriterEmitter.h @@ -1,10 +1,10 @@ //===- AsmWriterEmitter.h - Generate an assembly writer ---------*- C++ -*-===// -// +// // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// //===----------------------------------------------------------------------===// // // This tablegen backend is responsible for emitting an assembly printer for the @@ -16,16 +16,38 @@ #define ASMWRITER_EMITTER_H #include "TableGenBackend.h" +#include +#include +#include namespace llvm { - + class AsmWriterInst; + class CodeGenInstruction; + class AsmWriterEmitter : public TableGenBackend { RecordKeeper &Records; + std::map CGIAWIMap; + std::vector NumberedInstructions; public: AsmWriterEmitter(RecordKeeper &R) : Records(R) {} - + // run - Output the asmwriter, returning true on failure. - void run(std::ostream &o); + void run(raw_ostream &o); + +private: + void EmitPrintInstruction(raw_ostream &o); + void EmitGetRegisterName(raw_ostream &o); + + AsmWriterInst *getAsmWriterInstByID(unsigned ID) const { + assert(ID < NumberedInstructions.size()); + std::map::const_iterator I = + CGIAWIMap.find(NumberedInstructions[ID]); + assert(I != CGIAWIMap.end() && "Didn't find inst!"); + return I->second; + } + void FindUniqueOperandCommands(std::vector &UOC, + std::vector &InstIdxs, + std::vector &InstOpsUsed) const; }; } #endif