diff options
author | Duraid Madina <duraid@octopus.com.au> | 2005-10-28 17:46:35 +0000 |
---|---|---|
committer | Duraid Madina <duraid@octopus.com.au> | 2005-10-28 17:46:35 +0000 |
commit | f221c261f39c2470f4599438527316e188e95540 (patch) | |
tree | 2a18370963e67c7e8c79476f154422c86ff1105a /llvm/lib/Target/IA64/IA64TargetMachine.cpp | |
parent | db53c998dea499624290cb0a4c4ec60e5031fe85 (diff) | |
download | bcm5719-llvm-f221c261f39c2470f4599438527316e188e95540.tar.gz bcm5719-llvm-f221c261f39c2470f4599438527316e188e95540.zip |
DAG->DAG instruction selection for ia64! "hello world" works, not much else.
use -enable-ia64-dag-isel to turn this on
TODO: delete lowering stuff from the pattern isel
: get operations on predicate bits working
: get other bits of pseudocode going
: use sampo's mulh/mull-using divide-by-constant magic
: *so* many patterns ("extr", "tbit" and "dep" will be fun :)
: add FP
: add a JIT!
: get it working 100%
in short: this'll be happier in a couple of weeks, but it's here now so
the tester can make me feel guilty sooner.
OTHER: there are a couple of fixes to the pattern isel, in particular
making the linker happy with big blobs of fun like pypy.
llvm-svn: 24058
Diffstat (limited to 'llvm/lib/Target/IA64/IA64TargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/IA64/IA64TargetMachine.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/Target/IA64/IA64TargetMachine.cpp b/llvm/lib/Target/IA64/IA64TargetMachine.cpp index 7d80e5770c4..3760f489b52 100644 --- a/llvm/lib/Target/IA64/IA64TargetMachine.cpp +++ b/llvm/lib/Target/IA64/IA64TargetMachine.cpp @@ -37,6 +37,9 @@ namespace { cl::desc("Disable the IA64 asm printer, for use " "when profiling the code generator.")); + cl::opt<bool> EnableDAGIsel("enable-ia64-dag-isel", cl::Hidden, + cl::desc("Enable the IA64 DAG->DAG isel")); + // Register the target. RegisterTarget<IA64TargetMachine> X("ia64", " IA-64 (Itanium)"); } @@ -97,8 +100,12 @@ bool IA64TargetMachine::addPassesToEmitFile(PassManager &PM, // Make sure that no unreachable blocks are instruction selected. PM.add(createUnreachableBlockEliminationPass()); - PM.add(createIA64PatternInstructionSelector(*this)); - + // Add an instruction selector + if(EnableDAGIsel) + PM.add(createIA64DAGToDAGInstructionSelector(*this)); + else + PM.add(createIA64PatternInstructionSelector(*this)); + /* XXX not yet. ;) // Run optional SSA-based machine code optimizations next... if (!NoSSAPeephole) |