Lines Matching defs:BitPart
3815 struct BitPart {
3816 BitPart(Value *P, unsigned BW) : Provider(P) {
3843 /// BitPart is returned with Provider set to %X and Provenance[24-31] set to
3850 /// To avoid revisiting values, the BitPart results are memoized into the
3859 static const std::optional<BitPart> &
3861 std::map<Value *, std::optional<BitPart>> &BPS, int Depth,
3898 Result = BitPart(A->Provider, BitWidth);
3900 if (A->Provenance[BitIdx] != BitPart::Unset &&
3901 B->Provenance[BitIdx] != BitPart::Unset &&
3905 if (A->Provenance[BitIdx] == BitPart::Unset)
3936 P.insert(P.begin(), BitShift.getZExtValue(), BitPart::Unset);
3939 P.insert(P.end(), BitShift.getZExtValue(), BitPart::Unset);
3965 Result->Provenance[BitIdx] = BitPart::Unset;
3976 Result = BitPart(Res->Provider, BitWidth);
3981 Result->Provenance[BitIdx] = BitPart::Unset;
3992 Result = BitPart(Res->Provider, BitWidth);
4006 Result = BitPart(Res->Provider, BitWidth);
4020 Result = BitPart(Res->Provider, BitWidth);
4057 Result = BitPart(LHS->Provider, BitWidth);
4074 Result = BitPart(V, BitWidth);
4112 std::map<Value *, std::optional<BitPart>> BPS;
4119 [](int8_t I) { return I == BitPart::Unset || 0 <= I; }) &&
4124 if (BitProvenance.back() == BitPart::Unset) {
4125 while (!BitProvenance.empty() && BitProvenance.back() == BitPart::Unset)
4146 if (BitProvenance[BitIdx] == BitPart::Unset) {