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:
@@ -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:
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user