Lines Matching defs:operand

59 ///   (1.a) is an operand of an op with memory effects OR
60 /// (1.b) is a non-forwarded branch operand and its branch op could take the
62 /// (1.c) is a non-forwarded call operand.
67 /// (3.a) `B` is a result of an op with operand `A` OR
76 for (auto *operand : operands)
77 propagateIfChanged(operand, operand->markLive());
84 // It is assumed that each operand is used to compute each result of an
85 // op. Thus, if at least one result is live, each operand is live.
86 for (Liveness *operand : operands)
87 meet(operand, *r);
95 void LivenessAnalysis::visitBranchOperand(OpOperand &operand) {
96 // We know (at the moment) and assume (for the future) that `operand` is a
97 // non-forwarded branch operand of a `RegionBranchOpInterface`,
99 Operation *op = operand.getOwner();
110 // branch operand will be live if a block where its op could take the control
116 // `scf.index_switch` op, its branch operand controls the flow into this
124 // `cf.switch` op, its branch operand controls the flow into this op's
130 // operand controls the flow into this op's parent's (which is a
146 Liveness *operandLiveness = getLatticeElement(operand.get());
155 // we will simply visit the op with this non-forwarded operand to potentially
158 operandLiveness.push_back(getLatticeElement(operand.get()));
164 // We also visit the parent op with the parent's results and this operand if
166 // operand depends on not only its memory effects/results but also on those of
177 void LivenessAnalysis::visitCallOperand(OpOperand &operand) {
178 // We know (at the moment) and assume (for the future) that `operand` is a
179 // non-forwarded call operand of an op implementing `CallOpInterface`.
180 assert(isa<CallOpInterface>(operand.getOwner()) &&
188 // call operand is live.
189 Liveness *operandLiveness = getLatticeElement(operand.get());