summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-03-16 21:47:42 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-03-16 21:47:42 +0000
commit20931a798eff32eaefa1e5f7e4062996bc5cd220 (patch)
tree88b88fcf8bd8b8da49b4878c26ee2c49a2ad15f2 /llvm/lib/Target
parent0b27047a6cf6e65663b4705f9d4f3a66f1069ee4 (diff)
downloadbcm5719-llvm-20931a798eff32eaefa1e5f7e4062996bc5cd220.tar.gz
bcm5719-llvm-20931a798eff32eaefa1e5f7e4062996bc5cd220.zip
Added a way for TargetLowering to specify what values can be used as the
scale component of the target addressing mode. llvm-svn: 26802
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/PowerPC/PPCTargetMachine.cpp4
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp10
-rw-r--r--llvm/lib/Target/X86/X86TargetMachine.cpp4
3 files changed, 14 insertions, 4 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
index 041eddfd1b1..8985a4364f8 100644
--- a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
+++ b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
@@ -84,7 +84,7 @@ bool PPCTargetMachine::addPassesToEmitFile(PassManager &PM,
if (FileType != TargetMachine::AssemblyFile) return true;
// Run loop strength reduction before anything else.
- if (!Fast) PM.add(createLoopStrengthReducePass(1, &TLInfo));
+ if (!Fast) PM.add(createLoopStrengthReducePass(&TLInfo));
// FIXME: Implement efficient support for garbage collection intrinsics.
PM.add(createLowerGCPass());
@@ -138,7 +138,7 @@ void PPCJITInfo::addPassesToJITCompile(FunctionPassManager &PM) {
TM.setRelocationModel(Reloc::DynamicNoPIC);
// Run loop strength reduction before anything else.
- PM.add(createLoopStrengthReducePass(1, TM.getTargetLowering()));
+ PM.add(createLoopStrengthReducePass(TM.getTargetLowering()));
// FIXME: Implement efficient support for garbage collection intrinsics.
PM.add(createLowerGCPass());
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index bf0d6d8e56d..148c7f8af9f 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -49,6 +49,16 @@ X86TargetLowering::X86TargetLowering(TargetMachine &TM)
setSchedulingPreference(SchedulingForRegPressure);
setShiftAmountFlavor(Mask); // shl X, 32 == shl X, 0
setStackPointerRegisterToSaveRestore(X86::ESP);
+
+ // Add legal addressing mode scale values.
+ addLegalAddressScale(8);
+ addLegalAddressScale(4);
+ addLegalAddressScale(2);
+ // Enter the ones which require both scale + index last. These are more
+ // expensive.
+ addLegalAddressScale(9);
+ addLegalAddressScale(5);
+ addLegalAddressScale(3);
// Set up the register classes.
addRegisterClass(MVT::i8, X86::R8RegisterClass);
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp
index 2de8cc0b613..3d5a6f8ffe2 100644
--- a/llvm/lib/Target/X86/X86TargetMachine.cpp
+++ b/llvm/lib/Target/X86/X86TargetMachine.cpp
@@ -97,7 +97,7 @@ bool X86TargetMachine::addPassesToEmitFile(PassManager &PM, std::ostream &Out,
FileType != TargetMachine::ObjectFile) return true;
// Run loop strength reduction before anything else.
- if (EnableX86LSR) PM.add(createLoopStrengthReducePass(1, &TLInfo));
+ if (EnableX86LSR) PM.add(createLoopStrengthReducePass(&TLInfo));
// FIXME: Implement efficient support for garbage collection intrinsics.
PM.add(createLowerGCPass());
@@ -166,7 +166,7 @@ void X86JITInfo::addPassesToJITCompile(FunctionPassManager &PM) {
// Run loop strength reduction before anything else.
if (EnableX86LSR)
- PM.add(createLoopStrengthReducePass(1, TM.getTargetLowering()));
+ PM.add(createLoopStrengthReducePass(TM.getTargetLowering()));
// FIXME: Implement efficient support for garbage collection intrinsics.
PM.add(createLowerGCPass());
OpenPOWER on IntegriCloud