Home
last modified time | relevance | path

Searched refs:divergent (Results 1 - 12 of 12) sorted by relevance

/third_party/mesa3d/src/compiler/nir/
H A Dnir_divergence_analysis.c45 * 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) in visit_alu()
71 if (instr->src[i].src.ssa->divergent) { in visit_alu()
72 instr->dest.dest.ssa.divergent = true; in visit_alu()
86 if (instr->dest.ssa.divergent) in visit_intrinsic()
[all...]
H A Dnir_opt_uniform_atomics.c95 if (!scalar.def->divergent) in get_dim()
117 if (!src0_dim && src0.def->divergent) in get_dim()
120 if (!src1_dim && src1.def->divergent) in get_dim()
127 return src1.def->divergent ? 0 : get_dim(src0); in get_dim()
145 if (!nir_ssa_scalar_chase_alu_src(scalar, 0).def->divergent) in match_invocation_comparison()
147 if (!nir_ssa_scalar_chase_alu_src(scalar, 1).def->divergent) in match_invocation_comparison()
218 bool combined_scan_reduce = return_prev && data->divergent; in optimize_atomic()
260 ASSERTED bool original_result_divergent = intrin->dest.ssa.divergent; in optimize_and_rewrite_atomic()
279 assert(result->divergent == original_result_divergent); in optimize_and_rewrite_atomic()
H A Dnir_from_ssa.c127 bool divergent; member
163 set->divergent = def->divergent; in get_merge_node()
217 a->divergent |= b->divergent; in merge_merge_sets()
423 entry->dest.ssa.divergent = nir_src_is_divergent(src->src); in isolate_phi_nodes_block()
438 entry->dest.ssa.divergent = phi->dest.ssa.divergent; in isolate_phi_nodes_block()
505 if (dest_node->set->divergent != src_node->set->divergent) in aggressive_coalesce_parallel_copy()
[all...]
H A Dnir_serialize.c451 blob_write_uint8(ctx->blob, reg->divergent); in write_register()
463 reg->divergent = blob_read_uint8(ctx->blob); in read_register()
576 uint8_t divergent:1; member
702 dest.ssa.divergent = dst->ssa.divergent; in write_dest()
776 dst->ssa.divergent = dest.ssa.divergent; in read_dest()
1396 lc->def.divergent = false; in read_load_const()
1486 undef->def.divergent = false; in read_ssa_undef()
1894 blob_write_uint8(ctx->blob, loop->divergent); in write_loop()
[all...]
H A Dnir.h845 bool divergent;
947 bool divergent;
1098 return src.is_ssa ? src.ssa->divergent : src.reg.reg->divergent;
1116 return dest.is_ssa ? dest.ssa.divergent : dest.reg.reg->divergent;
2911 bool divergent;
H A Dnir.c245 reg->divergent = false; in reg_create()
645 /* Assume that loops are divergent until proven otherwise */ in nir_loop_create()
646 loop->divergent = true; in nir_loop_create()
1746 def->divergent = true; /* This is the safer default */ in nir_ssa_def_init()
H A Dnir_print.c112 divergence = def->divergent ? "div " : "con "; in print_ssa_def()
/third_party/mesa3d/src/amd/common/
H A Dac_nir_lower_ngg.c980 if (alu->dest.dest.ssa.divergent) in save_reusable_variables()
992 intrin->dest.ssa.divergent) in save_reusable_variables()
999 if (phi->dest.ssa.divergent) in save_reusable_variables()
1048 /* Don't reuse if we're in divergent control flow. in save_reusable_variables()
1052 * processed in a different wave. So the two parts may take a different divergent code path. in save_reusable_variables()
1053 * Therefore, these variables in divergent control flow may stay undefined. in save_reusable_variables()
1060 nir_cf_node_as_if(next_cf_node)->condition.ssa->divergent; in save_reusable_variables()
/third_party/mesa3d/src/amd/llvm/
H A Dac_nir_to_llvm.c477 /* To deal with divergent descriptors we can create a loop that handles all
487 * - value is the possibly divergent value for which we built the loop
488 * - divergent is whether value is actually divergent. If false we just pass
492 LLVMValueRef value, bool divergent) in enter_waterfall()
494 /* If the app claims the value is divergent but it is constant we can in enter_waterfall()
497 divergent = false; in enter_waterfall()
499 wctx->use_waterfall = divergent; in enter_waterfall()
500 if (!divergent) in enter_waterfall()
4477 /* Extract any possibly divergent inde
491 enter_waterfall(struct ac_nir_context *ctx, struct waterfall_context *wctx, LLVMValueRef value, bool divergent) enter_waterfall() argument
[all...]
/third_party/mesa3d/src/amd/compiler/
H A Daco_instruction_selection_setup.cpp110 /* If one side of a divergent IF ends in a branch and the other doesn't, we
117 // TODO: skip this if the condition is uniform and there are no divergent breaks/continues? in sanitize_if()
755 assert(!tex->dest.ssa.divergent); in init_context()
/third_party/mesa3d/src/broadcom/compiler/
H A Dnir_to_vir.c4277 if (vir_in_nonuniform_control_flow(c) || loop->divergent) { in ntq_emit_loop()
/third_party/mesa3d/src/panfrost/bifrost/
H A Dbifrost_compile.c4355 * coalescing divergent with non-divergent nodes. */
4360 ssa->divergent = false; in nir_invalidate_divergence_ssa()

Completed in 44 milliseconds