diff options
author | rdivacky <rdivacky@FreeBSD.org> | 2010-03-10 17:45:15 +0000 |
---|---|---|
committer | rdivacky <rdivacky@FreeBSD.org> | 2010-03-10 17:45:15 +0000 |
commit | 9e2446b38c94db61b2416c28fee415c03663c11c (patch) | |
tree | 231646bba785a129b3a2d409badb74e7ccd1594c /lib/Target/SystemZ | |
parent | 9bef28eb9e224d641ce31a423e215ccf82bf1d43 (diff) | |
download | FreeBSD-src-9e2446b38c94db61b2416c28fee415c03663c11c.zip FreeBSD-src-9e2446b38c94db61b2416c28fee415c03663c11c.tar.gz |
Update LLVM to r98164.
Diffstat (limited to 'lib/Target/SystemZ')
-rw-r--r-- | lib/Target/SystemZ/SystemZInstrInfo.td | 3 | ||||
-rw-r--r-- | lib/Target/SystemZ/SystemZOperands.td | 4 | ||||
-rw-r--r-- | lib/Target/SystemZ/SystemZRegisterInfo.cpp | 2 | ||||
-rw-r--r-- | lib/Target/SystemZ/SystemZRegisterInfo.h | 2 |
4 files changed, 8 insertions, 3 deletions
diff --git a/lib/Target/SystemZ/SystemZInstrInfo.td b/lib/Target/SystemZ/SystemZInstrInfo.td index a44f6d9..a75b85d 100644 --- a/lib/Target/SystemZ/SystemZInstrInfo.td +++ b/lib/Target/SystemZ/SystemZInstrInfo.td @@ -1112,7 +1112,8 @@ def : Pat<(SystemZcall (i64 texternalsym:$dst)), (CALLi texternalsym:$dst)>; // Arbitrary immediate support. def : Pat<(i32 imm:$src), - (EXTRACT_SUBREG (MOV64ri32 (i64 imm:$src)), subreg_32bit)>; + (EXTRACT_SUBREG (MOV64ri32 (GetI64FromI32 (i32 imm:$src))), + subreg_32bit)>; // Implement in terms of LLIHF/OILF. def : Pat<(i64 imm:$imm), diff --git a/lib/Target/SystemZ/SystemZOperands.td b/lib/Target/SystemZ/SystemZOperands.td index 156cace..0de50fd 100644 --- a/lib/Target/SystemZ/SystemZOperands.td +++ b/lib/Target/SystemZ/SystemZOperands.td @@ -67,6 +67,10 @@ def HI32 : SDNodeXForm<imm, [{ return getI32Imm(N->getZExtValue() >> 32); }]>; +def GetI64FromI32 : SDNodeXForm<imm, [{ + return CurDAG->getTargetConstant(N->getSExtValue(), MVT::i64); +}]>; + def i32ll16 : PatLeaf<(i32 imm), [{ // i32ll16 predicate - true if the 32-bit immediate has only rightmost 16 // bits set. diff --git a/lib/Target/SystemZ/SystemZRegisterInfo.cpp b/lib/Target/SystemZ/SystemZRegisterInfo.cpp index fe50c90..ca2fe6f 100644 --- a/lib/Target/SystemZ/SystemZRegisterInfo.cpp +++ b/lib/Target/SystemZ/SystemZRegisterInfo.cpp @@ -110,7 +110,7 @@ int SystemZRegisterInfo::getFrameIndexOffset(const MachineFunction &MF, unsigned SystemZRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, - int SPAdj, int *Value, + int SPAdj, FrameIndexValue *Value, RegScavenger *RS) const { assert(SPAdj == 0 && "Unxpected"); diff --git a/lib/Target/SystemZ/SystemZRegisterInfo.h b/lib/Target/SystemZ/SystemZRegisterInfo.h index fabd4e8..99e396a 100644 --- a/lib/Target/SystemZ/SystemZRegisterInfo.h +++ b/lib/Target/SystemZ/SystemZRegisterInfo.h @@ -56,7 +56,7 @@ struct SystemZRegisterInfo : public SystemZGenRegisterInfo { MachineBasicBlock::iterator I) const; unsigned eliminateFrameIndex(MachineBasicBlock::iterator II, - int SPAdj, int *Value = NULL, + int SPAdj, FrameIndexValue *Value = NULL, RegScavenger *RS = NULL) const; |