11#include "mlir/IR/Builders.h"
12#include "mlir/IR/Operation.h"
13#include "mlir/Interfaces/FunctionInterfaces.h"
14#include "mlir/Interfaces/SideEffectInterfaces.h"
25bool isCaptured(Value v, Operation *potentialUser =
nullptr,
26 bool *seenuse =
nullptr);
42 Value stored, OpBuilder &builder);
54bool mayAlias(MemoryEffects::EffectInstance &A,
55 MemoryEffects::EffectInstance &B);
58bool mayAlias(mlir::MemoryEffects::EffectInstance a, mlir::Value v2);
67 SmallVector<MemoryEffects::EffectInstance> &effects);
70SmallVector<MemoryEffects::EffectInstance>
74 MemoryEffects::Effect *effect,
75 SideEffects::Resource *resource);
bool mayAlias(Value v1, Value v2)
bool isCaptured(Value v, Operation *potentialUser, bool *seenuse)
const std::set< std::string > & getNonCapturingFunctions()
Value getBaseObject(Value v, bool offsetAllowed)
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 isReadNone(Operation *op)
Value inactiveStoredValueShadow(Operation *orig, MGradientUtils &gutils, Value stored, OpBuilder &builder)
bool isReadOnly(Operation *op)