Lines Matching full:operation
36 bool mlir::isOpTriviallyDead(Operation *op) {
44 static bool wouldOpBeTriviallyDeadImpl(Operation *rootOp) {
45 // The set of operation intervals (end-exclusive) to consider when checking
56 mlir::Operation *op = &*(it++);
58 // If the operation has recursive effects, push all of the nested operations
88 // of the operation.
99 // operation itself as having no effects. We will visit its children next.
114 bool mlir::hasSingleEffect(Operation *op) {
130 template bool mlir::hasSingleEffect<MemoryEffects::Allocate>(Operation *);
131 template bool mlir::hasSingleEffect<MemoryEffects::Free>(Operation *);
132 template bool mlir::hasSingleEffect<MemoryEffects::Read>(Operation *);
133 template bool mlir::hasSingleEffect<MemoryEffects::Write>(Operation *);
136 bool mlir::hasSingleEffect(Operation *op, Value value) {
155 template bool mlir::hasSingleEffect<MemoryEffects::Allocate>(Operation *,
157 template bool mlir::hasSingleEffect<MemoryEffects::Free>(Operation *,
159 template bool mlir::hasSingleEffect<MemoryEffects::Read>(Operation *,
161 template bool mlir::hasSingleEffect<MemoryEffects::Write>(Operation *,
165 bool mlir::hasSingleEffect(Operation *op, ValueTy value) {
185 mlir::hasSingleEffect<OpOperand *, MemoryEffects::Allocate>(Operation *,
188 mlir::hasSingleEffect<OpOperand *, MemoryEffects::Free>(Operation *,
191 mlir::hasSingleEffect<OpOperand *, MemoryEffects::Read>(Operation *,
194 mlir::hasSingleEffect<OpOperand *, MemoryEffects::Write>(Operation *,
197 mlir::hasSingleEffect<OpResult, MemoryEffects::Allocate>(Operation *, OpResult);
198 template bool mlir::hasSingleEffect<OpResult, MemoryEffects::Free>(Operation *,
200 template bool mlir::hasSingleEffect<OpResult, MemoryEffects::Read>(Operation *,
202 template bool mlir::hasSingleEffect<OpResult, MemoryEffects::Write>(Operation *,
205 mlir::hasSingleEffect<BlockArgument, MemoryEffects::Allocate>(Operation *,
208 mlir::hasSingleEffect<BlockArgument, MemoryEffects::Free>(Operation *,
211 mlir::hasSingleEffect<BlockArgument, MemoryEffects::Read>(Operation *,
214 mlir::hasSingleEffect<BlockArgument, MemoryEffects::Write>(Operation *,
218 bool mlir::hasEffect(Operation *op) {
228 template bool mlir::hasEffect<MemoryEffects::Allocate>(Operation *);
229 template bool mlir::hasEffect<MemoryEffects::Free>(Operation *);
230 template bool mlir::hasEffect<MemoryEffects::Read>(Operation *);
231 template bool mlir::hasEffect<MemoryEffects::Write>(Operation *);
233 mlir::hasEffect<MemoryEffects::Write, MemoryEffects::Free>(Operation *);
236 bool mlir::hasEffect(Operation *op, Value value) {
248 template bool mlir::hasEffect<MemoryEffects::Allocate>(Operation *,
250 template bool mlir::hasEffect<MemoryEffects::Free>(Operation *, Value value);
251 template bool mlir::hasEffect<MemoryEffects::Read>(Operation *, Value value);
252 template bool mlir::hasEffect<MemoryEffects::Write>(Operation *, Value value);
254 mlir::hasEffect<MemoryEffects::Write, MemoryEffects::Free>(Operation *,
258 bool mlir::hasEffect(Operation *op, ValueTy value) {
271 mlir::hasEffect<OpOperand *, MemoryEffects::Allocate>(Operation *, OpOperand *);
272 template bool mlir::hasEffect<OpOperand *, MemoryEffects::Free>(Operation *,
274 template bool mlir::hasEffect<OpOperand *, MemoryEffects::Read>(Operation *,
276 template bool mlir::hasEffect<OpOperand *, MemoryEffects::Write>(Operation *,
280 Operation *, OpOperand *);
282 template bool mlir::hasEffect<OpResult, MemoryEffects::Allocate>(Operation *,
284 template bool mlir::hasEffect<OpResult, MemoryEffects::Free>(Operation *,
286 template bool mlir::hasEffect<OpResult, MemoryEffects::Read>(Operation *,
288 template bool mlir::hasEffect<OpResult, MemoryEffects::Write>(Operation *,
292 Operation *, OpResult);
295 mlir::hasEffect<BlockArgument, MemoryEffects::Allocate>(Operation *,
298 mlir::hasEffect<BlockArgument, MemoryEffects::Free>(Operation *, BlockArgument);
300 mlir::hasEffect<BlockArgument, MemoryEffects::Read>(Operation *, BlockArgument);
302 mlir::hasEffect<BlockArgument, MemoryEffects::Write>(Operation *,
306 Operation *, BlockArgument);
308 bool mlir::wouldOpBeTriviallyDead(Operation *op) {
316 bool mlir::isMemoryEffectFree(Operation *op) {
334 for (Operation &op : region.getOps())
342 mlir::getEffectsRecursively(Operation *rootOp) {
344 SmallVector<Operation *> effectingOps(1, rootOp);
346 Operation *op = effectingOps.pop_back_val();
348 // If the operation has recursive effects, push all of the nested
355 for (Operation &nestedOp : block) {
365 // the operation does not have recursive memory effects or implement
373 bool mlir::isSpeculatable(Operation *op) {
381 for (Operation &op : region.getOps())
399 bool mlir::isPure(Operation *op) {