Lines Matching refs:ValidatorResult

38 class ValidatorResult final {  class
47 ValidatorResult(const ValidatorResult &Source) { in ValidatorResult() function in ValidatorResult
53 ValidatorResult(SCEVType::TYPE Type) : Type(Type) { in ValidatorResult() function in ValidatorResult
58 ValidatorResult(SCEVType::TYPE Type, const SCEV *Expr) : Type(Type) { in ValidatorResult() function in ValidatorResult
84 void addParamsFrom(const ValidatorResult &Source) { in addParamsFrom()
92 void merge(const ValidatorResult &ToMerge) { in merge()
115 raw_ostream &operator<<(raw_ostream &OS, ValidatorResult &VR) { in operator <<()
121 class SCEVValidator : public SCEVVisitor<SCEVValidator, ValidatorResult> {
133 ValidatorResult visitConstant(const SCEVConstant *Constant) { in visitConstant()
134 return ValidatorResult(SCEVType::INT); in visitConstant()
137 ValidatorResult visitZeroExtendOrTruncateExpr(const SCEV *Expr, in visitZeroExtendOrTruncateExpr()
139 ValidatorResult Op = visit(Operand); in visitZeroExtendOrTruncateExpr()
148 return ValidatorResult(SCEVType::INVALID); in visitZeroExtendOrTruncateExpr()
149 return ValidatorResult(SCEVType::PARAM, Expr); in visitZeroExtendOrTruncateExpr()
152 ValidatorResult visitPtrToIntExpr(const SCEVPtrToIntExpr *Expr) { in visitPtrToIntExpr()
156 ValidatorResult visitTruncateExpr(const SCEVTruncateExpr *Expr) { in visitTruncateExpr()
160 ValidatorResult visitZeroExtendExpr(const SCEVZeroExtendExpr *Expr) { in visitZeroExtendExpr()
164 ValidatorResult visitSignExtendExpr(const SCEVSignExtendExpr *Expr) { in visitSignExtendExpr()
168 ValidatorResult visitAddExpr(const SCEVAddExpr *Expr) { in visitAddExpr()
169 ValidatorResult Return(SCEVType::INT); in visitAddExpr()
172 ValidatorResult Op = visit(Expr->getOperand(i)); in visitAddExpr()
183 ValidatorResult visitMulExpr(const SCEVMulExpr *Expr) { in visitMulExpr()
184 ValidatorResult Return(SCEVType::INT); in visitMulExpr()
189 ValidatorResult Op = visit(Expr->getOperand(i)); in visitMulExpr()
207 return ValidatorResult(SCEVType::INVALID); in visitMulExpr()
214 return ValidatorResult(SCEVType::PARAM, Expr); in visitMulExpr()
219 ValidatorResult visitAddRecExpr(const SCEVAddRecExpr *Expr) { in visitAddRecExpr()
222 return ValidatorResult(SCEVType::INVALID); in visitAddRecExpr()
225 ValidatorResult Start = visit(Expr->getStart()); in visitAddRecExpr()
226 ValidatorResult Recurrence = visit(Expr->getStepRecurrence(SE)); in visitAddRecExpr()
240 return ValidatorResult(SCEVType::INVALID); in visitAddRecExpr()
245 ValidatorResult Result(SCEVType::IV); in visitAddRecExpr()
252 return ValidatorResult(SCEVType::INVALID); in visitAddRecExpr()
259 return ValidatorResult(SCEVType::PARAM, Expr); in visitAddRecExpr()
267 ValidatorResult ZeroStartResult = in visitAddRecExpr()
268 ValidatorResult(SCEVType::PARAM, ZeroStartExpr); in visitAddRecExpr()
274 ValidatorResult visitSMaxExpr(const SCEVSMaxExpr *Expr) { in visitSMaxExpr()
275 ValidatorResult Return(SCEVType::INT); in visitSMaxExpr()
278 ValidatorResult Op = visit(Expr->getOperand(i)); in visitSMaxExpr()
289 ValidatorResult visitSMinExpr(const SCEVSMinExpr *Expr) { in visitSMinExpr()
290 ValidatorResult Return(SCEVType::INT); in visitSMinExpr()
293 ValidatorResult Op = visit(Expr->getOperand(i)); in visitSMinExpr()
304 ValidatorResult visitUMaxExpr(const SCEVUMaxExpr *Expr) { in visitUMaxExpr()
308 ValidatorResult Op = visit(Expr->getOperand(i)); in visitUMaxExpr()
312 return ValidatorResult(SCEVType::INVALID); in visitUMaxExpr()
316 return ValidatorResult(SCEVType::PARAM, Expr); in visitUMaxExpr()
319 ValidatorResult visitUMinExpr(const SCEVUMinExpr *Expr) { in visitUMinExpr()
323 ValidatorResult Op = visit(Expr->getOperand(i)); in visitUMinExpr()
327 return ValidatorResult(SCEVType::INVALID); in visitUMinExpr()
331 return ValidatorResult(SCEVType::PARAM, Expr); in visitUMinExpr()
334 ValidatorResult visitSequentialUMinExpr(const SCEVSequentialUMinExpr *Expr) { in visitSequentialUMinExpr()
338 ValidatorResult Op = visit(Expr->getOperand(i)); in visitSequentialUMinExpr()
344 return ValidatorResult(SCEVType::INVALID); in visitSequentialUMinExpr()
348 return ValidatorResult(SCEVType::PARAM, Expr); in visitSequentialUMinExpr()
351 ValidatorResult visitGenericInst(Instruction *I, const SCEV *S) { in visitGenericInst()
355 return ValidatorResult(SCEVType::INVALID); in visitGenericInst()
358 return ValidatorResult(SCEVType::PARAM, S); in visitGenericInst()
361 ValidatorResult visitLoadInstruction(Instruction *I, const SCEV *S) { in visitLoadInstruction()
364 return ValidatorResult(SCEVType::PARAM, S); in visitLoadInstruction()
370 ValidatorResult visitDivision(const SCEV *Dividend, const SCEV *Divisor, in visitDivision()
385 ValidatorResult LHS = visit(Dividend); in visitDivision()
386 ValidatorResult RHS = visit(Divisor); in visitDivision()
388 return ValidatorResult(SCEVType::PARAM, DivExpr); in visitDivision()
392 return ValidatorResult(SCEVType::INVALID); in visitDivision()
395 ValidatorResult visitUDivExpr(const SCEVUDivExpr *Expr) { in visitUDivExpr()
397 return ValidatorResult(SCEVType::INVALID); in visitUDivExpr()
404 ValidatorResult visitSDivInstruction(Instruction *SDiv, const SCEV *Expr) { in visitSDivInstruction()
413 ValidatorResult visitSRemInstruction(Instruction *SRem, const SCEV *S) { in visitSRemInstruction()
427 ValidatorResult visitUnknown(const SCEVUnknown *Expr) { in visitUnknown()
432 return ValidatorResult(SCEVType::INVALID); in visitUnknown()
437 return ValidatorResult(SCEVType::INVALID); in visitUnknown()
457 return ValidatorResult(SCEVType::INT); // "int" in visitUnknown()
460 return ValidatorResult(SCEVType::PARAM, Expr); in visitUnknown()
605 ValidatorResult Result = Validator.visit(Expr); in isAffineExpr()
623 ValidatorResult Result = Validator.visit(E); in isAffineExpr()
664 ValidatorResult Result = Validator.visit(Expr); in getParamsInAffineExpr()