summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86RegisterInfo.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-02-17 05:54:57 +0000
committerChris Lattner <sabre@nondot.org>2004-02-17 05:54:57 +0000
commit01dded2e698be440be28905b0b020e296318e1ac (patch)
treed9dd67c4f7d62e7186b3012fe954e73aa4a414aa /llvm/lib/Target/X86/X86RegisterInfo.cpp
parent1e70deff780bbe7e54b01333402075539c18c57c (diff)
downloadbcm5719-llvm-01dded2e698be440be28905b0b020e296318e1ac.tar.gz
bcm5719-llvm-01dded2e698be440be28905b0b020e296318e1ac.zip
Change to match the newer, simpler, interface
llvm-svn: 11525
Diffstat (limited to 'llvm/lib/Target/X86/X86RegisterInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86RegisterInfo.cpp37
1 files changed, 7 insertions, 30 deletions
diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp
index eead81fb161..d871b82b0db 100644
--- a/llvm/lib/Target/X86/X86RegisterInfo.cpp
+++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp
@@ -79,24 +79,6 @@ int X86RegisterInfo::copyRegToReg(MachineBasicBlock &MBB,
return 1;
}
-bool X86RegisterInfo::canFoldMemoryOperand(MachineInstr* MI,
- unsigned i) const
-{
- switch(MI->getOpcode()) {
- case X86::ADDrr8: case X86::ADDrr16: case X86::ADDrr32:
- case X86::ADDri8: case X86::ADDri16: case X86::ADDri32:
- case X86::ANDrr8: case X86::ANDrr16: case X86::ANDrr32:
- case X86::ANDri8: case X86::ANDri16: case X86::ANDri32:
- case X86::MOVrr8: case X86::MOVrr16: case X86::MOVrr32:
- return true;
- case X86::IMULrr16: case X86::IMULrr32:
- case X86::IMULrri16: case X86::IMULrri32:
- return i == 1;
- default:
- return false;
- }
-}
-
static MachineInstr *MakeMRInst(unsigned Opcode, unsigned FrameIndex,
MachineInstr *MI) {
return addFrameReference(BuildMI(Opcode, 5), FrameIndex)
@@ -122,11 +104,8 @@ static MachineInstr *MakeRMIInst(unsigned Opcode, unsigned FrameIndex,
}
-
-int X86RegisterInfo::foldMemoryOperand(MachineInstr* MI,
- unsigned i,
- int FrameIndex) const
-{
+bool X86RegisterInfo::foldMemoryOperand(MachineBasicBlock::iterator &MI,
+ unsigned i, int FrameIndex) const {
/// FIXME: This should obviously be autogenerated by tablegen when patterns
/// are available!
MachineBasicBlock& MBB = *MI->getParent();
@@ -148,8 +127,7 @@ int X86RegisterInfo::foldMemoryOperand(MachineInstr* MI,
case X86::ANDri8: NI = MakeMIInst(X86::ANDmi8 , FrameIndex, MI); break;
case X86::ANDri16: NI = MakeMIInst(X86::ANDmi16, FrameIndex, MI); break;
case X86::ANDri32: NI = MakeMIInst(X86::ANDmi32, FrameIndex, MI); break;
-
- default: assert(0 && "Operand cannot be folded");
+ default: return false; // Cannot fold
}
} else if (i == 1) {
switch(MI->getOpcode()) {
@@ -166,15 +144,14 @@ int X86RegisterInfo::foldMemoryOperand(MachineInstr* MI,
case X86::IMULrr32:NI = MakeRMInst(X86::IMULrm32, FrameIndex, MI); break;
case X86::IMULrri16: NI = MakeRMIInst(X86::IMULrmi16, FrameIndex, MI); break;
case X86::IMULrri32: NI = MakeRMIInst(X86::IMULrmi32, FrameIndex, MI); break;
-
- default: assert(0 && "Operand cannot be folded");
+ default: return false; // cannot fold.
}
} else {
- assert(0 && "Operand cannot be folded");
+ return false; // cannot fold.
}
- MBB.insert(MBB.erase(MI), NI);
- return 0;
+ MI = MBB.insert(MBB.erase(MI), NI);
+ return true;
}
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud