diff options
author | Chris Lattner <sabre@nondot.org> | 2010-02-05 21:51:35 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-02-05 21:51:35 +0000 |
commit | 9c9453e58261f8967d16e59145a7f08e719b4b8f (patch) | |
tree | 24ca954934a0d774d8760558d1851605152ad4e6 /llvm/lib/Target | |
parent | 86bd19423498bc6e8460a89a4141b727897dead4 (diff) | |
download | bcm5719-llvm-9c9453e58261f8967d16e59145a7f08e719b4b8f.tar.gz bcm5719-llvm-9c9453e58261f8967d16e59145a7f08e719b4b8f.zip |
wire up 64-bit MCCodeEmitter.
llvm-svn: 95438
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/X86/X86.h | 3 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86CodeEmitter.cpp | 7 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86MCCodeEmitter.cpp | 16 |
3 files changed, 17 insertions, 9 deletions
diff --git a/llvm/lib/Target/X86/X86.h b/llvm/lib/Target/X86/X86.h index e39551b9943..1d17a05d5b3 100644 --- a/llvm/lib/Target/X86/X86.h +++ b/llvm/lib/Target/X86/X86.h @@ -50,7 +50,8 @@ FunctionPass *createX86JITCodeEmitterPass(X86TargetMachine &TM, JITCodeEmitter &JCE); MCCodeEmitter *createHeinousX86MCCodeEmitter(const Target &, TargetMachine &TM); -MCCodeEmitter *createX86MCCodeEmitter(const Target &, TargetMachine &TM); +MCCodeEmitter *createX86_32MCCodeEmitter(const Target &, TargetMachine &TM); +MCCodeEmitter *createX86_64MCCodeEmitter(const Target &, TargetMachine &TM); /// createX86EmitCodeToMemory - Returns a pass that converts a register /// allocated function into raw machine code in a dynamically diff --git a/llvm/lib/Target/X86/X86CodeEmitter.cpp b/llvm/lib/Target/X86/X86CodeEmitter.cpp index dbb83c8e78c..480c0cd27ec 100644 --- a/llvm/lib/Target/X86/X86CodeEmitter.cpp +++ b/llvm/lib/Target/X86/X86CodeEmitter.cpp @@ -1117,8 +1117,11 @@ MCCodeEmitter *llvm::createHeinousX86MCCodeEmitter(const Target &T, TargetMachine &TM) { // FIXME: Remove the heinous one when the new one works. - if (EnableNewEncoder) - return createX86MCCodeEmitter(T, TM); + if (EnableNewEncoder) { + if (TM.getTargetData()->getPointerSize() == 4) + return createX86_32MCCodeEmitter(T, TM); + return createX86_64MCCodeEmitter(T, TM); + } return new X86MCCodeEmitter(static_cast<X86TargetMachine&>(TM)); } diff --git a/llvm/lib/Target/X86/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/X86MCCodeEmitter.cpp index 4061b9c40ac..46d38892b21 100644 --- a/llvm/lib/Target/X86/X86MCCodeEmitter.cpp +++ b/llvm/lib/Target/X86/X86MCCodeEmitter.cpp @@ -27,10 +27,9 @@ class X86MCCodeEmitter : public MCCodeEmitter { const TargetInstrInfo &TII; bool Is64BitMode; public: - X86MCCodeEmitter(TargetMachine &tm) + X86MCCodeEmitter(TargetMachine &tm, bool is64Bit) : TM(tm), TII(*TM.getInstrInfo()) { - // FIXME: Get this from the right place. - Is64BitMode = false; + Is64BitMode = is64Bit; } ~X86MCCodeEmitter() {} @@ -83,9 +82,14 @@ public: } // end anonymous namespace -MCCodeEmitter *llvm::createX86MCCodeEmitter(const Target &, - TargetMachine &TM) { - return new X86MCCodeEmitter(TM); +MCCodeEmitter *llvm::createX86_32MCCodeEmitter(const Target &, + TargetMachine &TM) { + return new X86MCCodeEmitter(TM, false); +} + +MCCodeEmitter *llvm::createX86_64MCCodeEmitter(const Target &, + TargetMachine &TM) { + return new X86MCCodeEmitter(TM, true); } |