Polly 19.0.0git
|
The SCEVExpander will not generate any code for an existing SDiv/SRem instruction but just use it, if it is referenced as a SCEVUnknown. More...
Public Member Functions | |
ScopExpander (const Region &R, ScalarEvolution &SE, const DataLayout &DL, const char *Name, ValueMapT *VMap, BasicBlock *RTCBB) | |
Value * | expandCodeFor (const SCEV *E, Type *Ty, Instruction *I) |
const SCEV * | visit (const SCEV *E) |
Private Member Functions | |
const SCEV * | visitGenericInst (const SCEVUnknown *E, Instruction *Inst, Instruction *IP) |
const SCEV * | visitUnknown (const SCEVUnknown *E) |
const SCEV * | visitConstant (const SCEVConstant *E) |
The following functions will just traverse the SCEV and rebuild it with the new operands returned by the traversal. | |
const SCEV * | visitVScale (const SCEVVScale *E) |
const SCEV * | visitPtrToIntExpr (const SCEVPtrToIntExpr *E) |
const SCEV * | visitTruncateExpr (const SCEVTruncateExpr *E) |
const SCEV * | visitZeroExtendExpr (const SCEVZeroExtendExpr *E) |
const SCEV * | visitSignExtendExpr (const SCEVSignExtendExpr *E) |
const SCEV * | visitUDivExpr (const SCEVUDivExpr *E) |
const SCEV * | visitAddExpr (const SCEVAddExpr *E) |
const SCEV * | visitMulExpr (const SCEVMulExpr *E) |
const SCEV * | visitUMaxExpr (const SCEVUMaxExpr *E) |
const SCEV * | visitSMaxExpr (const SCEVSMaxExpr *E) |
const SCEV * | visitUMinExpr (const SCEVUMinExpr *E) |
const SCEV * | visitSMinExpr (const SCEVSMinExpr *E) |
const SCEV * | visitSequentialUMinExpr (const SCEVSequentialUMinExpr *E) |
const SCEV * | visitAddRecExpr (const SCEVAddRecExpr *E) |
Private Attributes | |
SCEVExpander | Expander |
ScalarEvolution & | SE |
const char * | Name |
const Region & | R |
ValueMapT * | VMap |
BasicBlock * | RTCBB |
DenseMap< const SCEV *, const SCEV * > | SCEVCache |
Friends | |
struct | SCEVVisitor< ScopExpander, const SCEV * > |
The SCEVExpander will not generate any code for an existing SDiv/SRem instruction but just use it, if it is referenced as a SCEVUnknown.
We want however to generate new code if the instruction is in the analyzed region and we generate code outside/in front of that region. Hence, we generate the code for the SDiv/SRem operands in front of the analyzed region and then create a new SDiv/SRem operation there too.
Definition at line 237 of file ScopHelper.cpp.
|
inlineexplicit |
Definition at line 240 of file ScopHelper.cpp.
|
inline |
Definition at line 246 of file ScopHelper.cpp.
References Expander, R, polly::Value, and visit().
Referenced by visitGenericInst(), and visitUnknown().
|
inline |
Definition at line 255 of file ScopHelper.cpp.
References SCEVCache.
Referenced by expandCodeFor(), visitAddExpr(), visitAddRecExpr(), visitMulExpr(), visitPtrToIntExpr(), visitSequentialUMinExpr(), visitSignExtendExpr(), visitSMaxExpr(), visitSMinExpr(), visitTruncateExpr(), visitUDivExpr(), visitUMaxExpr(), visitUMinExpr(), visitUnknown(), and visitZeroExtendExpr().
|
inlineprivate |
Definition at line 361 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 403 of file ScopHelper.cpp.
|
inlineprivate |
The following functions will just traverse the SCEV and rebuild it with the new operands returned by the traversal.
{
Definition at line 341 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 275 of file ScopHelper.cpp.
References assert, expandCodeFor(), Name, R, and SE.
Referenced by visitUnknown().
|
inlineprivate |
Definition at line 367 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 343 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 397 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 352 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 379 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 391 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 346 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 355 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 373 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 385 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 296 of file ScopHelper.cpp.
References expandCodeFor(), Name, R, RTCBB, SE, polly::Value, visit(), visitGenericInst(), and VMap.
|
inlineprivate |
Definition at line 342 of file ScopHelper.cpp.
|
inlineprivate |
Definition at line 349 of file ScopHelper.cpp.
|
friend |
Definition at line 815 of file ScopHelper.cpp.
|
private |
Definition at line 267 of file ScopHelper.cpp.
Referenced by expandCodeFor().
|
private |
Definition at line 269 of file ScopHelper.cpp.
Referenced by visitGenericInst(), and visitUnknown().
|
private |
Definition at line 270 of file ScopHelper.cpp.
Referenced by expandCodeFor(), visitGenericInst(), and visitUnknown().
|
private |
Definition at line 272 of file ScopHelper.cpp.
Referenced by visitUnknown().
|
private |
Definition at line 273 of file ScopHelper.cpp.
Referenced by visit().
|
private |
Definition at line 268 of file ScopHelper.cpp.
Referenced by visitAddExpr(), visitAddRecExpr(), visitGenericInst(), visitMulExpr(), visitPtrToIntExpr(), visitSequentialUMinExpr(), visitSignExtendExpr(), visitSMaxExpr(), visitSMinExpr(), visitTruncateExpr(), visitUDivExpr(), visitUMaxExpr(), visitUMinExpr(), visitUnknown(), and visitZeroExtendExpr().
|
private |
Definition at line 271 of file ScopHelper.cpp.
Referenced by visitUnknown().