aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-11-05 23:53:08 +0000
committerDan Gohman <gohman@apple.com>2009-11-05 23:53:08 +0000
commit3965ee217f82f6faae5b9bff7a756d2573edbe2c (patch)
treebc8a9b78e4d8ab8f0f2156b93f01c3955193e5a5
parent2b4eb23c3ae503dbfe2f2d14ac14a513d033755c (diff)
downloadexternal_llvm-3965ee217f82f6faae5b9bff7a756d2573edbe2c.zip
external_llvm-3965ee217f82f6faae5b9bff7a756d2573edbe2c.tar.gz
external_llvm-3965ee217f82f6faae5b9bff7a756d2573edbe2c.tar.bz2
Use SUBREG_TO_REG instead of INSERT_SUBREG to model x86-64's
implicit zero-extend. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86196 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/X86ISelDAGToDAG.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp
index 8e085bd..80cf386 100644
--- a/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -1949,14 +1949,12 @@ SDNode *X86DAGToDAGISel::Select(SDValue N) {
0);
// We just did a 32-bit clear, insert it into a 64-bit register to
// clear the whole 64-bit reg.
- SDValue Undef =
- SDValue(CurDAG->getMachineNode(TargetInstrInfo::IMPLICIT_DEF,
- dl, MVT::i64), 0);
+ SDValue Zero = CurDAG->getTargetConstant(0, MVT::i64);
SDValue SubRegNo =
CurDAG->getTargetConstant(X86::SUBREG_32BIT, MVT::i32);
ClrNode =
- SDValue(CurDAG->getMachineNode(TargetInstrInfo::INSERT_SUBREG, dl,
- MVT::i64, Undef, ClrNode, SubRegNo),
+ SDValue(CurDAG->getMachineNode(TargetInstrInfo::SUBREG_TO_REG, dl,
+ MVT::i64, Zero, ClrNode, SubRegNo),
0);
} else {
ClrNode = SDValue(CurDAG->getMachineNode(ClrOpcode, dl, NVT), 0);