if (1)
nir_print_shader(nir, stderr);
- if (1) {
- nir_convert_to_ssa(nir);
+ nir_convert_to_ssa(nir);
+ nir_validate_shader(nir);
+
+ bool progress;
+ do {
+ progress = false;
+ progress |= nir_copy_prop(nir);
nir_validate_shader(nir);
- nir_copy_prop(nir);
+ progress |= nir_opt_dce(nir);
nir_validate_shader(nir);
- nir_opt_dce(nir);
+ progress |= nir_opt_cse(nir);
nir_validate_shader(nir);
- nir_opt_peephole_select(nir);
+ progress |= nir_opt_peephole_select(nir);
nir_validate_shader(nir);
- nir_opt_peephole_ffma(nir);
+ progress |= nir_opt_peephole_ffma(nir);
nir_validate_shader(nir);
- nir_print_shader(nir, stderr);
+ } while (progress);
+ nir_print_shader(nir, stderr);
- nir_convert_from_ssa(nir);
- nir_print_shader(nir, stderr);
- nir_validate_shader(nir);
- nir_lower_vec_to_movs(nir);
- nir_validate_shader(nir);
- }
+ nir_convert_from_ssa(nir);
+ nir_validate_shader(nir);
+ nir_print_shader(nir, stderr);
+ nir_lower_vec_to_movs(nir);
+ nir_validate_shader(nir);
/* emit the arrays used for inputs and outputs - load/store intrinsics will
* be converted to reads/writes of these arrays