Lines Matching refs:divergent

45     * A divergent break does not cause subsequent control-flow to be considered
46 * divergent because those invocations are no longer active in the loop.
47 * For a divergent if, both sides are considered divergent flow because
50 /* True if a divergent continue happened since the loop header */
52 /* True if a divergent break happened since the loop header */
65 if (instr->dest.dest.ssa.divergent)
71 if (instr->src[i].src.ssa->divergent) {
72 instr->dest.dest.ssa.divergent = true;
86 if (instr->dest.ssa.divergent)
192 is_divergent = instr->src[0].ssa->divergent;
201 is_divergent = instr->src[0].ssa->divergent ||
202 instr->src[1].ssa->divergent;
211 is_divergent = instr->src[1].ssa->divergent;
216 is_divergent = instr->src[0].ssa->divergent;
234 is_divergent = instr->src[0].ssa->divergent ||
235 instr->src[1].ssa->divergent ||
241 is_divergent = instr->src[0].ssa->divergent ||
242 instr->src[1].ssa->divergent;
258 is_divergent = instr->src[0].ssa->divergent;
307 is_divergent = instr->src[0].ssa->divergent;
317 is_divergent = (instr->src[0].ssa->divergent && (nir_intrinsic_access(instr) & ACCESS_NON_UNIFORM)) ||
318 instr->src[1].ssa->divergent;
323 is_divergent = instr->src[0].ssa->divergent && (nir_intrinsic_access(instr) & ACCESS_NON_UNIFORM);
332 is_divergent = (instr->src[0].ssa->divergent && (nir_intrinsic_access(instr) & ACCESS_NON_UNIFORM)) ||
333 instr->src[1].ssa->divergent || instr->src[2].ssa->divergent || instr->src[3].ssa->divergent;
387 if (instr->src[i].ssa->divergent) {
396 is_divergent = instr->src[0].ssa->divergent &&
397 instr->src[1].ssa->divergent;
400 /* Intrinsics which are always divergent */
633 instr->dest.ssa.divergent = is_divergent;
640 if (instr->dest.ssa.divergent)
650 is_divergent |= instr->src[i].src.ssa->divergent &&
656 is_divergent |= instr->src[i].src.ssa->divergent &&
660 is_divergent |= instr->src[i].src.ssa->divergent;
665 instr->dest.ssa.divergent = is_divergent;
728 if (deref->dest.ssa.divergent)
738 is_divergent = deref->arr.index.ssa->divergent;
742 is_divergent |= deref->parent.ssa->divergent;
746 deref->parent.ssa->divergent;
750 deref->dest.ssa.divergent = is_divergent;
787 def->divergent = false;
841 * The resulting value is divergent if the branch condition
842 * or any of the source values is divergent. */
846 if (phi->dest.ssa.divergent)
851 /* if any source value is divergent, the resulting value is divergent */
852 if (src->src.ssa->divergent) {
853 phi->dest.ssa.divergent = true;
861 /* if the condition is divergent and two sources defined, the definition is divergent */
863 phi->dest.ssa.divergent = true;
873 * The resulting value is divergent if any source value
874 * is divergent or a divergent loop continue condition
879 if (phi->dest.ssa.divergent)
884 /* if any source value is divergent, the resulting value is divergent */
885 if (src->src.ssa->divergent) {
886 phi->dest.ssa.divergent = true;
903 phi->dest.ssa.divergent = true;
913 * The resulting value is divergent if the source value is divergent
914 * or any loop exit condition is divergent for a value which is
920 if (phi->dest.ssa.divergent)
924 phi->dest.ssa.divergent = true;
928 /* if any source value is divergent, the resulting value is divergent */
930 if (src->src.ssa->divergent) {
931 phi->dest.ssa.divergent = true;
945 then_state.divergent_loop_cf |= if_stmt->condition.ssa->divergent;
949 else_state.divergent_loop_cf |= if_stmt->condition.ssa->divergent;
958 nir_instr_as_phi(instr)->dest.ssa.divergent = false;
960 if_stmt->condition.ssa->divergent);
969 /* A divergent continue makes succeeding loop CF divergent:
991 if (!state->first_visit && phi->dest.ssa.divergent)
996 phi->dest.ssa.divergent = src->src.ssa->divergent;
1000 progress |= phi->dest.ssa.divergent;
1035 nir_instr_as_phi(instr)->dest.ssa.divergent = false;
1040 loop->divergent = (loop_state.divergent_loop_break || loop_state.divergent_loop_continue);
1114 if (node->type == nir_cf_node_loop && nir_cf_node_as_loop(node)->divergent) {