Lines Matching defs:MinBitWidth

209       // Worklist and the Stack, and update MinBitWidth.
214 Info.MinBitWidth =
215 std::max(Info.MinBitWidth, InstInfoMap[IOp].MinBitWidth);
225 Info.MinBitWidth = std::max(Info.MinBitWidth, Info.ValidBitWidth);
239 unsigned MinBitWidth = InstInfoMap.lookup(cast<Instruction>(Src)).MinBitWidth;
240 assert(MinBitWidth >= TruncBitWidth);
242 if (MinBitWidth > TruncBitWidth) {
248 // Use the smallest integer type in the range [MinBitWidth, OrigBitWidth).
249 Type *Ty = DL.getSmallestLegalIntType(DstTy->getContext(), MinBitWidth);
252 MinBitWidth = Ty ? Ty->getScalarSizeInBits() : OrigBitWidth;
253 } else { // MinBitWidth == TruncBitWidth
258 bool FromLegal = MinBitWidth == 1 || DL.isLegalInteger(OrigBitWidth);
259 bool ToLegal = MinBitWidth == 1 || DL.isLegalInteger(MinBitWidth);
263 return MinBitWidth;
299 // Initialize MinBitWidth for shift instructions with the minimum number
301 // For `lshr` adjust MinBitWidth so that all potentially truncated
303 // For `ashr` adjust MinBitWidth so that all potentially truncated
306 // Exit early if MinBitWidth is not less than original bitwidth.
311 unsigned MinBitWidth = KnownRHS.getMaxValue()
314 if (MinBitWidth == OrigBitWidth)
318 MinBitWidth =
319 std::max(MinBitWidth, KnownLHS.getMaxValue().getActiveBits());
323 MinBitWidth = std::max(MinBitWidth, OrigBitWidth - NumSignBits + 1);
325 if (MinBitWidth >= OrigBitWidth)
327 Itr.second.MinBitWidth = MinBitWidth;
331 unsigned MinBitWidth = 0;
334 MinBitWidth =
335 std::max(Known.getMaxValue().getActiveBits(), MinBitWidth);
336 if (MinBitWidth >= OrigBitWidth)
339 Itr.second.MinBitWidth = MinBitWidth;
345 unsigned MinBitWidth = getMinBitWidth();
349 if (MinBitWidth >= OrigBitWidth ||
350 (DesiredBitWidth && DesiredBitWidth != MinBitWidth))
353 return IntegerType::get(CurrentTruncInst->getContext(), MinBitWidth);