summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86RegisterInfo.cpp
diff options
context:
space:
mode:
authorAlkis Evlogimenos <alkis@evlogimenos.com>2004-02-17 09:14:23 +0000
committerAlkis Evlogimenos <alkis@evlogimenos.com>2004-02-17 09:14:23 +0000
commite5585328d87a295ebab50b854c747080d57d9f5f (patch)
treef64b52fec1326dbb1eeedb2e64ba7cbf4effae2c /llvm/lib/Target/X86/X86RegisterInfo.cpp
parent93398df103d331327a3fc6a917262f1abadcd013 (diff)
downloadbcm5719-llvm-e5585328d87a295ebab50b854c747080d57d9f5f.tar.gz
bcm5719-llvm-e5585328d87a295ebab50b854c747080d57d9f5f.zip
Add memory operand folding support for MUL, DIV, IDIV, NEG, NOT,
MOVSX, and MOVZX. llvm-svn: 11546
Diffstat (limited to 'llvm/lib/Target/X86/X86RegisterInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86RegisterInfo.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp
index 239f4ef4135..87d1f918ac8 100644
--- a/llvm/lib/Target/X86/X86RegisterInfo.cpp
+++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp
@@ -134,6 +134,21 @@ bool X86RegisterInfo::foldMemoryOperand(MachineBasicBlock::iterator &MI,
case X86::MOVri8: NI = MakeMIInst(X86::MOVmi8 , FrameIndex, MI); break;
case X86::MOVri16: NI = MakeMIInst(X86::MOVmi16, FrameIndex, MI); break;
case X86::MOVri32: NI = MakeMIInst(X86::MOVmi32, FrameIndex, MI); break;
+ case X86::MULr8: NI = MakeMInst(X86::MULm8 , FrameIndex, MI); break;
+ case X86::MULr16: NI = MakeMInst(X86::MULm16, FrameIndex, MI); break;
+ case X86::MULr32: NI = MakeMInst(X86::MULm32, FrameIndex, MI); break;
+ case X86::DIVr8: NI = MakeMInst(X86::DIVm8 , FrameIndex, MI); break;
+ case X86::DIVr16: NI = MakeMInst(X86::DIVm16, FrameIndex, MI); break;
+ case X86::DIVr32: NI = MakeMInst(X86::DIVm32, FrameIndex, MI); break;
+ case X86::IDIVr8: NI = MakeMInst(X86::IDIVm8 , FrameIndex, MI); break;
+ case X86::IDIVr16: NI = MakeMInst(X86::IDIVm16, FrameIndex, MI); break;
+ case X86::IDIVr32: NI = MakeMInst(X86::IDIVm32, FrameIndex, MI); break;
+ case X86::NEGr8: NI = MakeMInst(X86::NEGm8 , FrameIndex, MI); break;
+ case X86::NEGr16: NI = MakeMInst(X86::NEGm16, FrameIndex, MI); break;
+ case X86::NEGr32: NI = MakeMInst(X86::NEGm32, FrameIndex, MI); break;
+ case X86::NOTr8: NI = MakeMInst(X86::NOTm8 , FrameIndex, MI); break;
+ case X86::NOTr16: NI = MakeMInst(X86::NOTm16, FrameIndex, MI); break;
+ case X86::NOTr32: NI = MakeMInst(X86::NOTm32, FrameIndex, MI); break;
case X86::INCr8: NI = MakeMInst(X86::INCm8 , FrameIndex, MI); break;
case X86::INCr16: NI = MakeMInst(X86::INCm16, FrameIndex, MI); break;
case X86::INCr32: NI = MakeMInst(X86::INCm32, FrameIndex, MI); break;
@@ -191,6 +206,13 @@ bool X86RegisterInfo::foldMemoryOperand(MachineBasicBlock::iterator &MI,
case X86::CMPrr8: NI = MakeRMInst(X86::CMPrm8 , FrameIndex, MI); break;
case X86::CMPrr16: NI = MakeRMInst(X86::CMPrm16, FrameIndex, MI); break;
case X86::CMPrr32: NI = MakeRMInst(X86::CMPrm32, FrameIndex, MI); break;
+
+ case X86::MOVSXr16r8: NI = MakeRMInst(X86::MOVSXr16m8 , FrameIndex, MI); break;
+ case X86::MOVSXr32r8: NI = MakeRMInst(X86::MOVSXr32m8, FrameIndex, MI); break;
+ case X86::MOVSXr32r16:NI = MakeRMInst(X86::MOVSXr32m16, FrameIndex, MI); break;
+ case X86::MOVZXr16r8: NI = MakeRMInst(X86::MOVZXr16m8 , FrameIndex, MI); break;
+ case X86::MOVZXr32r8: NI = MakeRMInst(X86::MOVZXr32m8, FrameIndex, MI); break;
+ case X86::MOVZXr32r16:NI = MakeRMInst(X86::MOVZXr32m16, FrameIndex, MI); break;
default: break;
}
}
OpenPOWER on IntegriCloud