Enzyme main
Loading...
Searching...
No Matches
mlir::enzyme::oputils Namespace Reference

Functions

const std::set< std::string > & getNonCapturingFunctions ()
 
bool isCaptured (Value v, Operation *potentialUser, bool *seenuse)
 
Value inactiveStoredValueShadow (Operation *orig, MGradientUtils &gutils, Value stored, OpBuilder &builder)
 
Value getBaseObject (Value v, bool offsetAllowed)
 
static bool isStackAlloca (Value v)
 
bool mayAlias (Value v1, Value v2)
 
bool mayAlias (MemoryEffects::EffectInstance a, Value v2)
 
bool mayAlias (MemoryEffects::EffectInstance &a, MemoryEffects::EffectInstance &b)
 
bool isReadOnly (Operation *op)
 
bool isReadNone (Operation *op)
 
bool collectOpEffects (Operation *rootOp, SmallVector< MemoryEffects::EffectInstance > &effects)
 Returns the side effects of an operation(similar to mlir::getEffectsRecursively).
 
SmallVector< MemoryEffects::EffectInstance > collectFnEffects (FunctionOpInterface fnOp)
 
MemoryEffects::EffectInstance getEffectOfVal (Value val, MemoryEffects::Effect *effect, SideEffects::Resource *resource)
 
bool mayAlias (mlir::MemoryEffects::EffectInstance a, mlir::Value v2)
 

Function Documentation

◆ collectFnEffects()

SmallVector< MemoryEffects::EffectInstance > mlir::enzyme::oputils::collectFnEffects ( FunctionOpInterface fnOp)

Definition at line 418 of file Utils.cpp.

References collectOpEffects().

Referenced by mlir::enzyme::batchutils::pruneMemoryEffects().

◆ collectOpEffects()

bool mlir::enzyme::oputils::collectOpEffects ( Operation * rootOp,
SmallVector< MemoryEffects::EffectInstance > & effects )

Returns the side effects of an operation(similar to mlir::getEffectsRecursively).

If the operation has RecursiveMemoryEffects, include all side effects of child operations.

Also accounts for LLVM and autodiff-specific memory effects which are not captured by the default mlir::getEffectsRecursively

Definition at line 306 of file Utils.cpp.

Referenced by collectFnEffects(), and mlir::enzyme::batchutils::pruneMemoryEffects().

◆ getBaseObject()

Value mlir::enzyme::oputils::getBaseObject ( Value v,
bool offsetAllowed )

◆ getEffectOfVal()

MemoryEffects::EffectInstance mlir::enzyme::oputils::getEffectOfVal ( Value val,
MemoryEffects::Effect * effect,
SideEffects::Resource * resource )

Definition at line 431 of file Utils.cpp.

Referenced by mlir::enzyme::batchutils::findCallerEffects().

◆ getNonCapturingFunctions()

const std::set< std::string > & mlir::enzyme::oputils::getNonCapturingFunctions ( )

Definition at line 31 of file Utils.cpp.

Referenced by isCaptured().

◆ inactiveStoredValueShadow()

Value mlir::enzyme::oputils::inactiveStoredValueShadow ( Operation * orig,
MGradientUtils & gutils,
Value stored,
OpBuilder & builder )

◆ isCaptured()

bool mlir::enzyme::oputils::isCaptured ( Value v,
Operation * potentialUser,
bool * seenuse )

Definition at line 42 of file Utils.cpp.

References getNonCapturingFunctions().

Referenced by mayAlias().

◆ isReadNone()

bool mlir::enzyme::oputils::isReadNone ( Operation * op)

Definition at line 275 of file Utils.cpp.

References isReadNone().

Referenced by isReadNone().

◆ isReadOnly()

bool mlir::enzyme::oputils::isReadOnly ( Operation * op)

Definition at line 246 of file Utils.cpp.

References isReadOnly().

Referenced by isReadOnly().

◆ isStackAlloca()

static bool mlir::enzyme::oputils::isStackAlloca ( Value v)
static

Definition at line 139 of file Utils.cpp.

Referenced by mayAlias().

◆ mayAlias() [1/4]

bool mlir::enzyme::oputils::mayAlias ( MemoryEffects::EffectInstance & a,
MemoryEffects::EffectInstance & b )

Definition at line 230 of file Utils.cpp.

References mayAlias().

◆ mayAlias() [2/4]

bool mlir::enzyme::oputils::mayAlias ( MemoryEffects::EffectInstance a,
Value v2 )

Definition at line 223 of file Utils.cpp.

References mayAlias().

◆ mayAlias() [3/4]

bool mlir::enzyme::oputils::mayAlias ( mlir::MemoryEffects::EffectInstance a,
mlir::Value v2 )

◆ mayAlias() [4/4]

bool mlir::enzyme::oputils::mayAlias ( Value v1,
Value v2 )