Lines Matching defs:Candidate

133   struct Candidate {
141 Candidate() = default;
142 Candidate(Kind CT, const SCEV *B, ConstantInt *Idx, Value *S,
175 Candidate *Basis = nullptr;
183 bool isBasisFor(const Candidate &Basis, const Candidate &C);
186 bool isFoldable(const Candidate &C, TargetTransformInfo *TTI,
191 bool isSimplestForm(const Candidate &C);
223 void allocateCandidatesAndFindBasis(Candidate::Kind CT, const SCEV *B,
228 void rewriteCandidateWithBasis(const Candidate &C, const Candidate &Basis);
237 static Value *emitBump(const Candidate &Basis, const Candidate &C,
244 std::list<Candidate> Candidates;
268 bool StraightLineStrengthReduce::isBasisFor(const Candidate &Basis,
269 const Candidate &C) {
297 bool StraightLineStrengthReduce::isFoldable(const Candidate &C,
300 if (C.CandidateKind == Candidate::Add)
302 if (C.CandidateKind == Candidate::GEP)
318 bool StraightLineStrengthReduce::isSimplestForm(const Candidate &C) {
319 if (C.CandidateKind == Candidate::Add) {
323 if (C.CandidateKind == Candidate::Mul) {
327 if (C.CandidateKind == Candidate::GEP) {
343 Candidate::Kind CT, const SCEV *B, ConstantInt *Idx, Value *S,
345 Candidate C(CT, B, Idx, S, I);
412 allocateCandidatesAndFindBasis(Candidate::Add, SE->getSCEV(LHS), Idx, S, I);
417 allocateCandidatesAndFindBasis(Candidate::Add, SE->getSCEV(LHS), Idx, S, I);
421 allocateCandidatesAndFindBasis(Candidate::Add, SE->getSCEV(LHS), One, RHS,
443 allocateCandidatesAndFindBasis(Candidate::Mul, SE->getSCEV(B), Idx, RHS, I);
449 allocateCandidatesAndFindBasis(Candidate::Mul, SE->getSCEV(B), Idx, RHS, I);
453 allocateCandidatesAndFindBasis(Candidate::Mul, SE->getSCEV(LHS), Zero, RHS,
484 allocateCandidatesAndFindBasis(Candidate::GEP, B, ScaledIdx, S, I);
575 Value *StraightLineStrengthReduce::emitBump(const Candidate &Basis,
576 const Candidate &C,
612 const Candidate &C, const Candidate &Basis) {
630 case Candidate::Add:
631 case Candidate::Mul: {
654 case Candidate::GEP: {
691 const Candidate &C = Candidates.back();