diff options
| author | Craig Topper <craig.topper@intel.com> | 2017-12-23 02:54:52 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2017-12-23 02:54:52 +0000 |
| commit | ed4a87f6a8c5b4d9a3083ab5117a9ebe8a7cec44 (patch) | |
| tree | 569a8c4d53890f23b4125a0c7d15dafc58bdcfb6 /llvm/lib | |
| parent | d6a8f2e67daa3b84e0dd4eb73c7596d65805d91b (diff) | |
| download | bcm5719-llvm-ed4a87f6a8c5b4d9a3083ab5117a9ebe8a7cec44.tar.gz bcm5719-llvm-ed4a87f6a8c5b4d9a3083ab5117a9ebe8a7cec44.zip | |
[X86] Use SelectionDAG::getZeroExtendInReg instead of implementing it manually.
llvm-svn: 321398
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 122b21b63b7..4a186c85bf0 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -33073,20 +33073,14 @@ static SDValue WidenMaskArithmetic(SDNode *N, SelectionDAG &DAG, SDValue Op = DAG.getNode(Narrow->getOpcode(), DL, WideVT, N0, N1); unsigned Opcode = N->getOpcode(); switch (Opcode) { + default: llvm_unreachable("Unexpected opcode"); case ISD::ANY_EXTEND: return Op; - case ISD::ZERO_EXTEND: { - unsigned InBits = NarrowVT.getScalarSizeInBits(); - APInt Mask = APInt::getAllOnesValue(InBits); - Mask = Mask.zext(VT.getScalarSizeInBits()); - return DAG.getNode(ISD::AND, DL, VT, - Op, DAG.getConstant(Mask, DL, VT)); - } + case ISD::ZERO_EXTEND: + return DAG.getZeroExtendInReg(Op, DL, VT.getScalarType()); case ISD::SIGN_EXTEND: return DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, VT, Op, DAG.getValueType(NarrowVT)); - default: - llvm_unreachable("Unexpected opcode"); } } |

