From d9fe41c0c8f6eab686c6064e2ce0c8e211b0c995 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 13 Feb 2008 23:13:32 +0000 Subject: [PATCH] Allow the APInt form of ComputeMaskedBits to operate on i128 types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47101 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index e5ccd321756..76cf425499e 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -1134,14 +1134,13 @@ void SelectionDAG::ComputeMaskedBits(SDOperand Op, const APInt &Mask, APInt &KnownZero, APInt &KnownOne, unsigned Depth) const { unsigned BitWidth = Mask.getBitWidth(); + assert(BitWidth == MVT::getSizeInBits(Op.getValueType()) && + "Mask size mismatches value type size!"); + KnownZero = KnownOne = APInt(BitWidth, 0); // Don't know anything. if (Depth == 6 || Mask == 0) return; // Limit search depth. - // The masks are not wide enough to represent this type! Should use APInt. - if (Op.getValueType() == MVT::i128) - return; - APInt KnownZero2, KnownOne2; switch (Op.getOpcode()) { @@ -1477,6 +1476,10 @@ void SelectionDAG::ComputeMaskedBits(SDOperand Op, const APInt &Mask, void SelectionDAG::ComputeMaskedBits(SDOperand Op, uint64_t Mask, uint64_t &KnownZero, uint64_t &KnownOne, unsigned Depth) const { + // The masks are not wide enough to represent this type! Should use APInt. + if (Op.getValueType() == MVT::i128) + return; + unsigned NumBits = MVT::getSizeInBits(Op.getValueType()); APInt APIntMask(NumBits, Mask); APInt APIntKnownZero(NumBits, 0);