diff options
Diffstat (limited to 'src/compiler/nir')
-rw-r--r-- | src/compiler/nir/nir_lower_double_packing.c | 47 |
1 files changed, 21 insertions, 26 deletions
diff --git a/src/compiler/nir/nir_lower_double_packing.c b/src/compiler/nir/nir_lower_double_packing.c index 22092a2693f..046e2139862 100644 --- a/src/compiler/nir/nir_lower_double_packing.c +++ b/src/compiler/nir/nir_lower_double_packing.c @@ -46,44 +46,39 @@ lower_unpack_double(nir_builder *b, nir_ssa_def *src) nir_unpack_double_2x32_split_y(b, src)); } -static bool -lower_double_pack_block(nir_block *block, void *ctx) +static void +lower_double_pack_impl(nir_function_impl *impl) { - nir_builder *b = (nir_builder *) ctx; + nir_builder b; + nir_builder_init(&b, impl); - nir_foreach_instr_safe(instr, block) { - if (instr->type != nir_instr_type_alu) - continue; + nir_foreach_block(block, impl) { + nir_foreach_instr_safe(instr, block) { + if (instr->type != nir_instr_type_alu) + continue; - nir_alu_instr *alu_instr = (nir_alu_instr *) instr; + nir_alu_instr *alu_instr = (nir_alu_instr *) instr; - if (alu_instr->op != nir_op_pack_double_2x32 && - alu_instr->op != nir_op_unpack_double_2x32) - continue; + if (alu_instr->op != nir_op_pack_double_2x32 && + alu_instr->op != nir_op_unpack_double_2x32) + continue; - b->cursor = nir_before_instr(&alu_instr->instr); + b.cursor = nir_before_instr(&alu_instr->instr); - nir_ssa_def *src = nir_ssa_for_alu_src(b, alu_instr, 0); - nir_ssa_def *dest = - alu_instr->op == nir_op_pack_double_2x32 ? - lower_pack_double(b, src) : - lower_unpack_double(b, src); + nir_ssa_def *src = nir_ssa_for_alu_src(&b, alu_instr, 0); + nir_ssa_def *dest = + alu_instr->op == nir_op_pack_double_2x32 ? + lower_pack_double(&b, src) : + lower_unpack_double(&b, src); - nir_ssa_def_rewrite_uses(&alu_instr->dest.dest.ssa, nir_src_for_ssa(dest)); - nir_instr_remove(&alu_instr->instr); + nir_ssa_def_rewrite_uses(&alu_instr->dest.dest.ssa, nir_src_for_ssa(dest)); + nir_instr_remove(&alu_instr->instr); + } } return true; } -static void -lower_double_pack_impl(nir_function_impl *impl) -{ - nir_builder b; - nir_builder_init(&b, impl); - nir_foreach_block_call(impl, lower_double_pack_block, &b); -} - void nir_lower_double_pack(nir_shader *shader) { |