if (!u_vector_init(&bi->instructions,
sizeof(nir_alu_instr *),
- 8 * sizeof(nir_alu_instr *)))
+ 8 * sizeof(nir_alu_instr *))) {
+ free(bi);
return NULL;
+ }
exec_list_push_tail(&bq->blocks, &bi->node);
* will clean these up. This is similar to nir_replace_instr (in
* nir_search.c).
*/
- nir_alu_instr *mov_add = nir_alu_instr_create(mem_ctx, nir_op_imov);
+ nir_alu_instr *mov_add = nir_alu_instr_create(mem_ctx, nir_op_mov);
mov_add->dest.write_mask = orig_add->dest.write_mask;
nir_ssa_dest_init(&mov_add->instr, &mov_add->dest.dest,
orig_add->dest.dest.ssa.num_components,
nir_builder_instr_insert(bld, &mov_add->instr);
- nir_alu_instr *mov_cmp = nir_alu_instr_create(mem_ctx, nir_op_imov);
+ nir_alu_instr *mov_cmp = nir_alu_instr_create(mem_ctx, nir_op_mov);
mov_cmp->dest.write_mask = orig_cmp->dest.write_mask;
nir_ssa_dest_init(&mov_cmp->instr, &mov_cmp->dest.dest,
orig_cmp->dest.dest.ssa.num_components,
* and neither operand is immediate value 0, add it to the set.
*/
if (is_used_by_if(alu) &&
- is_not_const_zero(alu, 0, 1, swizzle) &&
- is_not_const_zero(alu, 1, 1, swizzle))
+ is_not_const_zero(NULL, alu, 0, 1, swizzle) &&
+ is_not_const_zero(NULL, alu, 1, 1, swizzle))
add_instruction_for_block(bi, alu);
break;
return progress;
}
-static bool
+bool
nir_opt_comparison_pre_impl(nir_function_impl *impl)
{
struct block_queue bq;
block_queue_finish(&bq);
- if (progress)
+ if (progress) {
nir_metadata_preserve(impl, nir_metadata_block_index |
nir_metadata_dominance);
+ } else {
+ nir_metadata_preserve(impl, nir_metadata_all);
+ }
return progress;
}