aco: implement two load lds ngg intrininsic for radeonsi

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23094>
This commit is contained in:
Qiang Yu
2023-04-27 17:01:56 +08:00
committed by Marge Bot
parent 2d02494d71
commit 89dab66561
3 changed files with 16 additions and 0 deletions
@@ -9081,6 +9081,18 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr)
bld.pseudo(aco_opcode::p_start_linear_vgpr, Definition(dst), tmp);
break;
}
case nir_intrinsic_load_lds_ngg_scratch_base_amd: {
Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
bld.sop1(aco_opcode::p_load_symbol, Definition(dst),
Operand::c32(aco_symbol_lds_ngg_scratch_base));
break;
}
case nir_intrinsic_load_lds_ngg_gs_out_vertex_base_amd: {
Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
bld.sop1(aco_opcode::p_load_symbol, Definition(dst),
Operand::c32(aco_symbol_lds_ngg_gs_out_vertex_base));
break;
}
default:
isel_err(&instr->instr, "Unimplemented intrinsic instr");
abort();
@@ -492,6 +492,8 @@ init_context(isel_context* ctx, nir_shader* shader)
case nir_intrinsic_bindless_image_samples:
case nir_intrinsic_load_force_vrs_rates_amd:
case nir_intrinsic_load_scalar_arg_amd:
case nir_intrinsic_load_lds_ngg_scratch_base_amd:
case nir_intrinsic_load_lds_ngg_gs_out_vertex_base_amd:
case nir_intrinsic_load_smem_amd: type = RegType::sgpr; break;
case nir_intrinsic_load_sample_id:
case nir_intrinsic_load_input:
+2
View File
@@ -164,6 +164,8 @@ enum aco_symbol_id {
aco_symbol_invalid,
aco_symbol_scratch_addr_lo,
aco_symbol_scratch_addr_hi,
aco_symbol_lds_ngg_scratch_base,
aco_symbol_lds_ngg_gs_out_vertex_base,
};
struct aco_symbol {