diff options
author | Alkis Evlogimenos <alkis@evlogimenos.com> | 2004-02-17 09:14:23 +0000 |
---|---|---|
committer | Alkis Evlogimenos <alkis@evlogimenos.com> | 2004-02-17 09:14:23 +0000 |
commit | e5585328d87a295ebab50b854c747080d57d9f5f (patch) | |
tree | f64b52fec1326dbb1eeedb2e64ba7cbf4effae2c /llvm/lib/Target/X86/X86RegisterInfo.cpp | |
parent | 93398df103d331327a3fc6a917262f1abadcd013 (diff) | |
download | bcm5719-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.cpp | 22 |
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; } } |