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

/xsrc/external/mit/MesaLib/dist/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)
71 if (instr->src[i].src.ssa->divergent) {
72 instr->dest.dest.ssa.divergent = true;
86 if (instr->dest.ssa.divergent)
[all...]
H A Dnir_opt_uniform_atomics.c86 if (!scalar.def->divergent)
108 if (!src0_dim && src0.def->divergent)
111 if (!src1_dim && src1.def->divergent)
118 return src1.def->divergent ? 0 : get_dim(src0);
136 if (!nir_ssa_scalar_chase_alu_src(scalar, 0).def->divergent)
138 if (!nir_ssa_scalar_chase_alu_src(scalar, 1).def->divergent)
202 bool combined_scan_reduce = return_prev && data->divergent;
244 ASSERTED bool original_result_divergent = intrin->dest.ssa.divergent;
263 assert(result->divergent == original_result_divergent);
H A Dnir_from_ssa.c127 bool divergent; member in struct:merge_set
163 set->divergent = def->divergent;
217 a->divergent |= b->divergent;
420 entry->dest.ssa.divergent = nir_src_is_divergent(src->src);
435 entry->dest.ssa.divergent = phi->dest.ssa.divergent;
499 if (dest_node->set->divergent != src_node->set->divergent)
[all...]
H A Dnir.h736 bool divergent; member in struct:nir_register
838 bool divergent; member in struct:nir_ssa_def
989 return src.is_ssa ? src.ssa->divergent : src.reg.reg->divergent;
1007 return dest.is_ssa ? dest.ssa.divergent : dest.reg.reg->divergent;
3100 bool divergent; member in struct:__anon3ec4419d3508
H A Dnir.c157 reg->divergent = false;
556 /* Assume that loops are divergent until proven otherwise */
557 loop->divergent = true;
1617 def->divergent = true; /* This is the safer default */
/xsrc/external/mit/MesaLib/dist/docs/relnotes/
H A D20.0.2.rst49 - amd/llvm: Fix divergent descriptor indexing. (v3)
50 - amd/llvm: Fix divergent descriptor regressions with radeonsi.
H A D21.3.2.rst51 - nir: Initialize nir_register::divergent
H A D21.2.3.rst135 - ac/nir/nggc: Don't reuse uniform values from divergent control flow.
H A D20.1.0.rst870 - amd/llvm: Fix divergent descriptor indexing. (v3)
871 - amd/llvm: Fix divergent descriptor regressions with radeonsi.
H A D21.0.0.rst849 - aco: remove divergent branches which only jump over very few instructions
2767 - aco: allow divergent mbcnt_amd masks
H A D20.2.0.rst1239 - nir: reset ssa-defs as non-divergent during divergence analysis instead of upfront
2519 - nir: Make "divergent" a property of an SSA value
H A D21.1.0.rst1357 - aco: remove divergent branches which only jump over very few instructions
4781 - aco: track divergent and uniform branch depth
H A D19.3.0.rst2838 - aco: implement divergent vulkan_resource_index
H A D21.3.0.rst4165 - ac/nir/nggc: Don't reuse uniform values from divergent control flow.
H A D20.3.0.rst4089 - aco: don't do divergent break+discard
H A D21.2.0.rst514 - pan/bi: Add divergent intrinsic lowering pass
/xsrc/external/mit/MesaLib/dist/src/amd/compiler/
H A DREADME.md19 otherwise when some lanes take one path while other lanes take a different path, it's divergent.
24 so in case of divergent control flow, the GPU must execute both code paths, each with some lanes disabled.
27 ACO deals with divergent control flow by maintaining two control flow graphs (CFG):
71 In the GCN/RDNA architecture, there is a special register called `exec` which is used for manually controlling which VALU threads (aka. *lanes*) are active. The value of `exec` has to change in divergent branches, loops, etc. and it needs to be restored after the branch or loop is complete. This pass ensures that the correct lanes are active in every branch.
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?
751 assert(!tex->dest.ssa.divergent);
H A Daco_instruction_selection.cpp1132 /* divergent boolean bcsel
5669 bool divergent = local in function:aco::__anon562fcc110110::visit_discard
5672 if (ctx->block->loop_nest_depth && (nir_instr_is_last(&instr->instr) && !divergent)) {
5702 * predicated by a divergent condition, but the above code catches that case
5705 * if (divergent) {
9883 * that break is divergent or continue_or_break is used. We'll either remove
9987 * This would result in divergent breaks not ever being taken. As a
10142 /* visit_block() would usually do this but divergent jumps updates ctx->block */
10318 /* divergent branches use cbranch_execz */
10379 /* divergent branche
[all...]
/xsrc/external/mit/MesaLib/dist/src/amd/common/
H A Dac_nir_lower_ngg.c880 if (alu->dest.dest.ssa.divergent)
892 intrin->dest.ssa.divergent)
899 if (phi->dest.ssa.divergent)
948 /* Don't reuse if we're in divergent control flow.
952 * processed in a different wave. So the two parts may take a different divergent code path.
953 * Therefore, these variables in divergent control flow may stay undefined.
960 nir_cf_node_as_if(next_cf_node)->condition.ssa->divergent;
/xsrc/external/mit/MesaLib/dist/src/amd/llvm/
H A Dac_nir_to_llvm.c474 /* To deal with divergent descriptors we can create a loop that handles all
484 * - value is the possibly divergent value for which we built the loop
485 * - divergent is whether value is actually divergent. If false we just pass
489 LLVMValueRef value, bool divergent)
491 /* If the app claims the value is divergent but it is constant we can
494 divergent = false;
496 wctx->use_waterfall = divergent;
497 if (!divergent)
4424 /* Extract any possibly divergent inde
488 enter_waterfall(struct ac_nir_context * ctx,struct waterfall_context * wctx,LLVMValueRef value,bool divergent) argument
[all...]
/xsrc/external/mit/MesaLib/dist/src/broadcom/compiler/
H A Dnir_to_vir.c3728 if (vir_in_nonuniform_control_flow(c) || loop->divergent) {
/xsrc/external/mit/MesaLib/dist/src/panfrost/bifrost/
H A Dbifrost_compile.c3258 * coalescing divergent with non-divergent nodes. */
3263 ssa->divergent = false;
/xsrc/external/mit/MesaLib/dist/
H A D.pick_status.json21217 "description": "nir: Initialize nir_register::divergent",
22414 "description": "nir: serialize divergent fields",
[all...]

Completed in 612 milliseconds