ctx->arg_temps[ctx->args->ac.tes_patch_id.arg_index] = get_ssa_temp(ctx, instr->src[3].ssa);
break;
}
- case nir_intrinsic_overwrite_subgroup_num_vertices_and_primitives_amd: {
- Temp old_merged_wave_info = get_arg(ctx, ctx->args->ac.merged_wave_info);
- Temp num_vertices = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
- Temp num_primitives = bld.as_uniform(get_ssa_temp(ctx, instr->src[1].ssa));
- Temp tmp = bld.sop2(aco_opcode::s_lshl_b32, bld.def(s1), bld.def(s1, scc), num_primitives,
- Operand::c32(8u));
- tmp = bld.sop2(aco_opcode::s_or_b32, bld.def(s1), bld.def(s1, scc), tmp, num_vertices);
- ctx->arg_temps[ctx->args->ac.merged_wave_info.arg_index] =
- bld.sop2(aco_opcode::s_pack_lh_b32_b16, bld.def(s1), tmp, old_merged_wave_info);
- break;
- }
default:
isel_err(&instr->instr, "Unimplemented intrinsic instr");
abort();
intrinsic("overwrite_vs_arguments_amd", src_comp=[1, 1], indices=[])
# Overwrites TES input registers, for use with vertex compaction after culling. src = {tes_u, tes_v, rel_patch_id, patch_id}.
intrinsic("overwrite_tes_arguments_amd", src_comp=[1, 1, 1, 1], indices=[])
-# Overwrites the input vertex and primitive count in the current subgroup after culling. src = {num_vertices, num_primitives}.
-intrinsic("overwrite_subgroup_num_vertices_and_primitives_amd", src_comp=[1, 1], indices=[])
# src = [index] BINDING = which table BASE = offset within handle
intrinsic("load_sbt_amd", src_comp=[-1], dest_comp=0, indices=[BINDING, BASE],