Lines Matching defs:Immediate
252 class Immediate : public details::FixedOrScalableQuantity<Immediate, int64_t> {
253 constexpr Immediate(ScalarTy MinVal, bool Scalable)
256 constexpr Immediate(const FixedOrScalableQuantity<Immediate, int64_t> &V)
260 constexpr Immediate() = delete;
262 static constexpr Immediate getFixed(ScalarTy MinVal) {
265 static constexpr Immediate getScalable(ScalarTy MinVal) {
268 static constexpr Immediate get(ScalarTy MinVal, bool Scalable) {
271 static constexpr Immediate getZero() { return {0, false}; }
272 static constexpr Immediate getFixedMin() {
275 static constexpr Immediate getFixedMax() {
278 static constexpr Immediate getScalableMin() {
281 static constexpr Immediate getScalableMax() {
289 constexpr bool isCompatibleImmediate(const Immediate &Imm) const {
302 constexpr Immediate addUnsigned(const Immediate &RHS) const {
308 constexpr Immediate subUnsigned(const Immediate &RHS) const {
315 constexpr Immediate mulUnsigned(const ScalarTy RHS) const {
343 // This is needed for the Compare type of std::map when Immediate is used
348 bool operator()(const Immediate &LHS, const Immediate &RHS) const {
361 bool operator()(const std::pair<size_t, Immediate> &LHS,
362 const std::pair<size_t, Immediate> &RHS) const {
480 Immediate BaseOffset = Immediate::getZero();
511 Immediate UnfoldedOffset = Immediate::getZero();
924 static Immediate ExtractImmediate(const SCEV *&S, ScalarEvolution &SE) {
928 return Immediate::getFixed(C->getValue()->getSExtValue());
932 Immediate Result = ExtractImmediate(NewOps.front(), SE);
938 Immediate Result = ExtractImmediate(NewOps.front(), SE);
949 return Immediate::getScalable(C->getValue()->getSExtValue());
953 return Immediate::getZero();
1268 Immediate Offset = Immediate::getZero();
1331 Immediate MinOffset = Immediate::getFixedMax();
1332 Immediate MaxOffset = Immediate::getFixedMin();
1368 if (Immediate::isKnownGT(f.Offset, MaxOffset))
1370 if (Immediate::isKnownLT(f.Offset, MinOffset))
1388 GlobalValue *BaseGV, Immediate BaseOffset,
1543 Immediate Offset = Fixup.Offset.addUnsigned(F.BaseOffset);
1812 GlobalValue *BaseGV, Immediate BaseOffset,
1875 Immediate MinOffset, Immediate MaxOffset,
1877 GlobalValue *BaseGV, Immediate BaseOffset,
1889 MinOffset = Immediate::get((uint64_t)Base + Min, MinOffset.isScalable());
1892 MaxOffset = Immediate::get((uint64_t)Base + Max, MaxOffset.isScalable());
1901 Immediate MinOffset, Immediate MaxOffset,
1917 static bool isLegalUse(const TargetTransformInfo &TTI, Immediate MinOffset,
1918 Immediate MaxOffset, LSRUse::KindType Kind,
1920 Immediate BaseOffset, bool HasBaseReg, int64_t Scale) {
1931 static bool isLegalUse(const TargetTransformInfo &TTI, Immediate MinOffset,
1932 Immediate MaxOffset, LSRUse::KindType Kind,
1939 Immediate Offset) {
2010 GlobalValue *BaseGV, Immediate BaseOffset,
2041 ScalarEvolution &SE, Immediate MinOffset,
2042 Immediate MaxOffset, LSRUse::KindType Kind,
2050 Immediate BaseOffset = ExtractImmediate(S, SE);
2216 bool reconcileNewOffset(LSRUse &LU, Immediate NewOffset, bool HasBaseReg,
2219 std::pair<size_t, Immediate> getUse(const SCEV *&Expr, LSRUse::KindType Kind,
2246 const SmallVectorImpl<Immediate> &Worklist,
2756 bool LSRInstance::reconcileNewOffset(LSRUse &LU, Immediate NewOffset,
2759 Immediate NewMinOffset = LU.MinOffset;
2760 Immediate NewMaxOffset = LU.MaxOffset;
2780 if (Immediate::isKnownLT(NewOffset, LU.MinOffset)) {
2785 } else if (Immediate::isKnownGT(NewOffset, LU.MaxOffset)) {
2809 std::pair<size_t, Immediate> LSRInstance::getUse(const SCEV *&Expr,
2813 Immediate Offset = ExtractImmediate(Expr, SE);
2819 Offset = Immediate::getFixed(0);
3362 Immediate IncOffset = Immediate::getZero();
3366 IncOffset = Immediate::getFixed(IncConst->getValue()->getSExtValue());
3376 IncOffset = Immediate::getScalable(Scale->getValue()->getSExtValue());
3616 std::pair<size_t, Immediate> P = getUse(S, Kind, AccessTy);
3618 Immediate Offset = P.second;
3808 std::pair<size_t, Immediate> P =
3811 Immediate Offset = P.second;
3976 Immediate::getFixed((uint64_t)F.UnfoldedOffset.getFixedValue() +
3994 Immediate::getFixed((uint64_t)F.UnfoldedOffset.getFixedValue() +
4090 NewBase.UnfoldedOffset = Immediate::getFixed(0);
4130 const SmallVectorImpl<Immediate> &Worklist, size_t Idx, bool IsScaledReg) {
4132 auto GenerateOffset = [&](const SCEV *G, Immediate Offset) {
4177 for (Immediate Offset : Worklist) {
4179 Offset = Immediate::getFixed(Offset.getFixedValue() - Step);
4186 for (Immediate Offset : Worklist)
4189 Immediate Imm = ExtractImmediate(G, SE);
4213 SmallVector<Immediate, 2> Worklist;
4258 Immediate NewBaseOffset = Base.BaseOffset.mulUnsigned(Factor);
4269 Immediate Offset = LU.MinOffset;
4486 Immediate Imm;
4489 WorkItem(size_t LI, Immediate I, const SCEV *R)
4513 using ImmMapTy = std::map<Immediate, const SCEV *, KeyOrderTargetImmediate>;
4520 Immediate Imm = ExtractImmediate(Reg, SE);
4532 SmallSet<std::pair<size_t, Immediate>, 32, KeyOrderSizeTAndImmediate>
4552 Immediate JImm = J->first;
4564 Immediate First = Imms.begin()->first;
4565 Immediate Last = std::prev(Imms.end())->first;
4584 Imms.lower_bound(Immediate::get(Avg, Scalable))};
4591 Immediate Imm = JImm.subUnsigned(M->first);
4609 Immediate Imm = WI.Imm;
4628 Immediate Offset = F.BaseOffset.addUnsigned(Imm.mulUnsigned(F.Scale));
4676 Immediate NewUnfoldedOffset = NewF.UnfoldedOffset.addUnsigned(Imm);
4895 Immediate::getFixed(NewF.BaseOffset.getFixedValue() +
5793 Immediate Offset = F.BaseOffset.addUnsigned(LF.Offset);
5813 Immediate UnfoldedOffset = F.UnfoldedOffset;