From: Chris Lattner Date: Thu, 2 Feb 2006 20:00:41 +0000 (+0000) Subject: implement isStoreToStackSlot X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=9c8dd970f773f7481b83c9368ad6324f2e17b444;p=oota-llvm.git implement isStoreToStackSlot git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25911 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp index 046d847fc99..1c0ec8b2cff 100644 --- a/lib/Target/X86/X86RegisterInfo.cpp +++ b/lib/Target/X86/X86RegisterInfo.cpp @@ -139,6 +139,29 @@ unsigned X86RegisterInfo::isLoadFromStackSlot(MachineInstr *MI, return 0; } +unsigned X86RegisterInfo::isStoreToStackSlot(MachineInstr *MI, + int &FrameIndex) const { + switch (MI->getOpcode()) { + default: break; + case X86::MOV8mr: + case X86::MOV16mr: + case X86::MOV32mr: + case X86::FpSTP64m: + case X86::MOVSSmr: + case X86::MOVSDmr: + if (MI->getOperand(0).isFrameIndex() && MI->getOperand(1).isImmediate() && + MI->getOperand(2).isRegister() && MI->getOperand(3).isImmediate() && + MI->getOperand(3).getImmedValue() == 1 && + MI->getOperand(4).getReg() == 0 && + MI->getOperand(5).getImmedValue() == 0) { + FrameIndex = MI->getOperand(1).getFrameIndex(); + return MI->getOperand(4).getReg(); + } + break; + } + return 0; +} + static MachineInstr *MakeMInst(unsigned Opcode, unsigned FrameIndex, MachineInstr *MI) {