diff options
author | Chris Lattner <sabre@nondot.org> | 2010-03-08 18:52:55 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-03-08 18:52:55 +0000 |
commit | 0273fbbf2223054a140e16f698465d3aeaf90553 (patch) | |
tree | df44c643322754f4355f7d1cfdc7f21507fa87e2 /lib | |
parent | d10a53d5a1a5f5a729b55638acfb25d3871df70b (diff) | |
download | external_llvm-0273fbbf2223054a140e16f698465d3aeaf90553.zip external_llvm-0273fbbf2223054a140e16f698465d3aeaf90553.tar.gz external_llvm-0273fbbf2223054a140e16f698465d3aeaf90553.tar.bz2 |
fix a type compatibility bug. imm is i32 in the input
pattern, not i64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97956 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/SystemZ/SystemZInstrInfo.td | 3 | ||||
-rw-r--r-- | lib/Target/SystemZ/SystemZOperands.td | 4 |
2 files changed, 6 insertions, 1 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. |