diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2003-05-24 00:17:12 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2003-05-24 00:17:12 +0000 |
commit | f00ce8bc29c3194485b7251dd3e234cead10008e (patch) | |
tree | 515d5a6af13e7183edafac7425acbf18df4697ef /utils | |
parent | 9fff7e194a2d8aa3abe92efa506b1fbe83583f53 (diff) | |
download | external_llvm-f00ce8bc29c3194485b7251dd3e234cead10008e.zip external_llvm-f00ce8bc29c3194485b7251dd3e234cead10008e.tar.gz external_llvm-f00ce8bc29c3194485b7251dd3e234cead10008e.tar.bz2 |
Add ability to utilize the code emitter generator (CodeEmitterGen).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6322 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r-- | utils/TableGen/TableGen.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/utils/TableGen/TableGen.cpp b/utils/TableGen/TableGen.cpp index 35df907..5eb5a7c 100644 --- a/utils/TableGen/TableGen.cpp +++ b/utils/TableGen/TableGen.cpp @@ -1,9 +1,11 @@ #include "Record.h" #include "Support/CommandLine.h" +#include "CodeEmitterGen.h" #include <algorithm> static cl::opt<std::string> Class("class", cl::desc("Print Enum list for this class")); static cl::opt<bool> Parse("parse"); +static cl::opt<bool> GenEmitter("gen-emitter"); void ParseFile(); @@ -289,6 +291,7 @@ static void PrintInstruction(Record *I, unsigned char *Ptr) { } static void ParseMachineCode() { + // X86 code unsigned char Buffer[] = { 0x55, // push EBP 0x89, 0xE5, // mov EBP, ESP @@ -307,7 +310,18 @@ static void ParseMachineCode() { 0x85, 0xC0, // test EAX, EAX 0xF4, // hlt }; - + +#if 0 + // SparcV9 code + unsigned char Buffer[] = { 0xbf, 0xe0, 0x20, 0x1f, 0x1, 0x0, 0x0, 0x1, + 0x0, 0x0, 0x0, 0x0, 0xc1, 0x0, 0x20, 0x1, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xaf, 0xe8, 0x20, 0x17 + }; +#endif + std::vector<Record*> Insts; const std::map<std::string, Record*> &Defs = Records.getDefs(); @@ -344,6 +358,12 @@ int main(int argc, char **argv) { return 0; } + if (GenEmitter) { + CodeEmitterGen CEG(Records); + CEG.createEmitter(std::cout); + return 0; + } + if (Class == "") { std::cout << Records; // No argument, dump all contents } else { |