diff options
author | Dan Gohman <gohman@apple.com> | 2008-02-13 23:13:32 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-02-13 23:13:32 +0000 |
commit | d9fe41c0c8f6eab686c6064e2ce0c8e211b0c995 (patch) | |
tree | 9eba440082d86359fc7f78b719be9369a0776b55 /lib/CodeGen/SelectionDAG/SelectionDAG.cpp | |
parent | f4f92f5ebe579ded661ec4c311f65e316405d0e6 (diff) |
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
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index e5ccd32175..76cf425499 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); |