Lines Matching refs:Candidate

83   struct Candidate : public ilist_node<Candidate> {
91 Candidate()
94 Candidate(Kind CT, const SCEV *B, ConstantInt *Idx, Value *S,
122 Candidate *Basis;
150 bool isBasisFor(const Candidate &Basis, const Candidate &C);
152 bool isFoldable(const Candidate &C, TargetTransformInfo *TTI,
156 bool isSimplestForm(const Candidate &C);
181 void allocateCandidatesAndFindBasis(Candidate::Kind CT, const SCEV *B,
185 void rewriteCandidateWithBasis(const Candidate &C, const Candidate &Basis);
195 static Value *emitBump(const Candidate &Basis, const Candidate &C,
203 ilist<Candidate> Candidates;
224 bool StraightLineStrengthReduce::isBasisFor(const Candidate &Basis,
225 const Candidate &C) {
284 bool StraightLineStrengthReduce::isFoldable(const Candidate &C,
287 if (C.CandidateKind == Candidate::Add)
289 if (C.CandidateKind == Candidate::GEP)
305 bool StraightLineStrengthReduce::isSimplestForm(const Candidate &C) {
306 if (C.CandidateKind == Candidate::Add) {
310 if (C.CandidateKind == Candidate::Mul) {
314 if (C.CandidateKind == Candidate::GEP) {
330 Candidate::Kind CT, const SCEV *B, ConstantInt *Idx, Value *S,
332 Candidate C(CT, B, Idx, S, I);
399 allocateCandidatesAndFindBasis(Candidate::Add, SE->getSCEV(LHS), Idx, S, I);
404 allocateCandidatesAndFindBasis(Candidate::Add, SE->getSCEV(LHS), Idx, S, I);
408 allocateCandidatesAndFindBasis(Candidate::Add, SE->getSCEV(LHS), One, RHS,
432 allocateCandidatesAndFindBasis(Candidate::Mul, SE->getSCEV(B), Idx, RHS, I);
438 allocateCandidatesAndFindBasis(Candidate::Mul, SE->getSCEV(B), Idx, RHS, I);
442 allocateCandidatesAndFindBasis(Candidate::Mul, SE->getSCEV(LHS), Zero, RHS,
473 allocateCandidatesAndFindBasis(Candidate::GEP, B, ScaledIdx, S, I);
556 Value *StraightLineStrengthReduce::emitBump(const Candidate &Basis,
557 const Candidate &C,
566 if (Basis.CandidateKind == Candidate::GEP) {
608 const Candidate &C, const Candidate &Basis) {
627 case Candidate::Add:
628 case Candidate::Mul:
650 case Candidate::GEP:
705 const Candidate &C = Candidates.back();