Lines Matching defs:effects

10 // conflicting pair of memory effects, including a pair that is enforced by
81 /// Populates `effects` with all memory effects without associating them to a
84 SmallVectorImpl<MemoryEffects::EffectInstance> &effects) {
85 effects.emplace_back(MemoryEffects::Effect::get<MemoryEffects::Read>());
86 effects.emplace_back(MemoryEffects::Effect::get<MemoryEffects::Write>());
87 effects.emplace_back(MemoryEffects::Effect::get<MemoryEffects::Allocate>());
88 effects.emplace_back(MemoryEffects::Effect::get<MemoryEffects::Free>());
91 /// Collect the memory effects of the given op in 'effects'. Returns 'true' if
93 /// 'false' and conservatively populates the list with all possible effects
97 SmallVectorImpl<MemoryEffects::EffectInstance> &effects,
104 // Skip over ops that we know have no effects.
115 llvm::append_range(effects, localEffects);
122 if (!collectEffects(&innerOp, effects, ignoreBarriers))
131 addAllValuelessEffects(effects);
135 /// Get all effects before the given operation caused by other operations in the
139 SmallVectorImpl<MemoryEffects::EffectInstance> &effects,
152 if (!collectEffects(it, effects))
158 /// Collects memory effects from operations that may be executed before `op` in
161 /// set. Returns `true` if the memory effects added to `effects` are exact,
163 /// `effects` contain instances not associated with a specific value.
166 SmallVectorImpl<MemoryEffects::EffectInstance> &effects,
174 addAllValuelessEffects(effects);
178 // Collect all effects before the op.
179 getEffectsBeforeInBlock(op, effects, stopAtBarrier);
186 if (!getEffectsBefore(op->getParentOp(), effects, stopAtBarrier))
189 // If the op is loop-like, collect effects from the trailing operations until
201 // operation `op1` at iteration `i+1` and the side effects must be ordered
204 // Assuming loop terminators have no side effects.
205 return getEffectsBeforeInBlock(op->getBlock()->getTerminator(), effects,
216 if (!collectEffects(in, effects)) {
226 /// Get all effects after the given operation caused by other operations in the
230 SmallVectorImpl<MemoryEffects::EffectInstance> &effects,
242 if (!collectEffects(it, effects))
248 /// Collects memory effects from operations that may be executed after `op` in
251 /// set. Returns `true` if the memory effects added to `effects` are exact,
253 /// `effects` contain instances not associated with a specific value.
256 SmallVectorImpl<MemoryEffects::EffectInstance> &effects,
264 addAllValuelessEffects(effects);
268 // Collect all effects after the op.
269 getEffectsAfterInBlock(op, effects, stopAtBarrier);
276 if (!getEffectsAfter(op->getParentOp(), effects, stopAtBarrier))
279 // If the op is loop-like, collect effects from the leading operations until
291 // operation `op2` at iteration `i-1` and the side effects must be ordered
297 bool exact = collectEffects(&op->getBlock()->front(), effects);
298 return getEffectsAfterInBlock(&op->getBlock()->front(), effects,
310 if (!collectEffects(in, effects)) {
398 SmallVector<MemoryEffects::EffectInstance> effects;
399 iface.getEffects(effects);
400 if (llvm::all_of(effects,
517 /// Returns `true` if the two effects may be affecting aliasing memory. If
534 /// any "after" instance for the purpose of barrier elimination. The effects are
536 /// if effects instances affect aliasing memory locations and at least on of
576 // Other kinds of effects create a conflict, e.g. read-after-write.