diff options
author | Chris Lattner <sabre@nondot.org> | 2002-10-29 22:37:54 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-10-29 22:37:54 +0000 |
commit | b4f68ed32ede4cf7d31ce9e516e4074dad0a24ee (patch) | |
tree | bb4d2d8830f9cb5d0904e93950221dbce528b873 /lib/Target/X86/X86TargetMachine.cpp | |
parent | c66583ef3b08abf73cd527d299d978e38a5254ef (diff) |
Convert backend to use passes, implement X86TargetMachine
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4421 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86TargetMachine.cpp')
-rw-r--r-- | lib/Target/X86/X86TargetMachine.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp new file mode 100644 index 0000000000..4273dafefc --- /dev/null +++ b/lib/Target/X86/X86TargetMachine.cpp @@ -0,0 +1,43 @@ +//===-- X86TargetMachine.cpp - Define TargetMachine for the X86 -----------===// +// +// This file defines the X86 specific subclass of TargetMachine. +// +//===----------------------------------------------------------------------===// + +#include "X86TargetMachine.h" +#include "llvm/Target/TargetMachineImpls.h" +#include "llvm/PassManager.h" +#include "X86.h" +#include <iostream> + +// allocateX86TargetMachine - Allocate and return a subclass of TargetMachine +// that implements the X86 backend. +// +TargetMachine *allocateX86TargetMachine() { return new X86TargetMachine(); } + + +/// X86TargetMachine ctor - Create an ILP32 architecture model +/// +X86TargetMachine::X86TargetMachine() : TargetMachine("X86", 1, 4, 4, 4) { +} + + +/// addPassesToJITCompile - Add passes to the specified pass manager to +/// implement a fast dynamic compiler for this target. Return true if this is +/// not supported for this target. +/// +bool X86TargetMachine::addPassesToJITCompile(PassManager &PM) { + PM.add(createSimpleX86InstructionSelector(*this)); + + // TODO: optional optimizations go here + + // Perform register allocation to convert to a concrete x86 representation + //PM.add(createSimpleX86RegisterAllocator(*this)); + + PM.add(createX86CodePrinterPass(*this, std::cerr)); + + //PM.add(createEmitX86CodeToMemory(*this)); + + return false; // success! +} + |