mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
nir/loop_analyze: skip unsupported induction variable early
Instead of fail in trip count calculation, just don't mark such kind of variable as induction from the beginning. Don't bother inline uniform to deal with such kind of variable either. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Qiang Yu <yuq825@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11950>
This commit is contained in:
parent
0b9639c35d
commit
3c93ebbae5
1 changed files with 6 additions and 3 deletions
|
|
@ -416,6 +416,10 @@ compute_induction_information(loop_info_state *state)
|
|||
alu_src_var = src_var;
|
||||
nir_alu_instr *alu = nir_instr_as_alu(src_var->def->parent_instr);
|
||||
|
||||
/* Check for unsupported alu operations */
|
||||
if (alu->op != nir_op_iadd && alu->op != nir_op_fadd)
|
||||
break;
|
||||
|
||||
if (nir_op_infos[alu->op].num_inputs == 2) {
|
||||
for (unsigned i = 0; i < 2; i++) {
|
||||
/* Is one of the operands const or uniform, and the other the phi.
|
||||
|
|
@ -857,9 +861,8 @@ calculate_iterations(nir_const_value initial, nir_const_value step,
|
|||
induction_base_type);
|
||||
}
|
||||
|
||||
/* Check for nsupported alu operations */
|
||||
if (alu->op != nir_op_iadd && alu->op != nir_op_fadd)
|
||||
return -1;
|
||||
/* Only variable with these update ops were marked as induction. */
|
||||
assert(alu->op == nir_op_iadd || alu->op == nir_op_fadd);
|
||||
|
||||
/* do-while loops can increment the starting value before the condition is
|
||||
* checked. e.g.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue