*/
#include "nir.h"
+#include "main/mtypes.h"
static void
convert_instr(nir_intrinsic_instr *instr)
case SYSTEM_VALUE_VERTEX_ID:
op = nir_intrinsic_load_vertex_id;
break;
+ case SYSTEM_VALUE_VERTEX_ID_ZERO_BASE:
+ op = nir_intrinsic_load_vertex_id_zero_base;
+ break;
+ case SYSTEM_VALUE_BASE_VERTEX:
+ op = nir_intrinsic_load_base_vertex;
+ break;
case SYSTEM_VALUE_INSTANCE_ID:
op = nir_intrinsic_load_instance_id;
break;
op = nir_intrinsic_load_invocation_id;
break;
default:
- assert(0);
- break;
+ unreachable("not reached");
}
nir_intrinsic_instr *new_instr = nir_intrinsic_instr_create(mem_ctx, op);
if (instr->dest.is_ssa) {
- new_instr->dest.is_ssa = true;
- nir_ssa_def_init(&new_instr->instr, &new_instr->dest.ssa,
- instr->dest.ssa.num_components, NULL);
- nir_src new_dest_src = {
- .is_ssa = true,
- .ssa = &new_instr->dest.ssa,
- };
- nir_ssa_def_rewrite_uses(&instr->dest.ssa, new_dest_src, mem_ctx);
+ nir_ssa_dest_init(&new_instr->instr, &new_instr->dest,
+ instr->dest.ssa.num_components, NULL);
+ nir_ssa_def_rewrite_uses(&instr->dest.ssa,
+ nir_src_for_ssa(&new_instr->dest.ssa),
+ mem_ctx);
} else {
- new_instr->dest = nir_dest_copy(instr->dest, mem_ctx);
+ nir_dest_copy(&new_instr->dest, &instr->dest, mem_ctx);
}
nir_instr_insert_before(&instr->instr, &new_instr->instr);