diff --git a/src/intel/compiler/brw_fs_nir.cpp b/src/intel/compiler/brw_fs_nir.cpp index d76a8f84b2b..99bf67abd3e 100644 --- a/src/intel/compiler/brw_fs_nir.cpp +++ b/src/intel/compiler/brw_fs_nir.cpp @@ -1977,6 +1977,9 @@ get_nir_def(nir_to_brw_state &ntb, const nir_def &def, bool all_sources_uniform) nir_instr_as_intrinsic(def.parent_instr); switch (instr->intrinsic) { + case nir_intrinsic_load_btd_global_arg_addr_intel: + case nir_intrinsic_load_btd_local_arg_addr_intel: + case nir_intrinsic_load_btd_shader_type_intel: case nir_intrinsic_load_inline_data_intel: case nir_intrinsic_load_reloc_const_intel: case nir_intrinsic_load_workgroup_id: @@ -4758,17 +4761,19 @@ fs_nir_emit_bs_intrinsic(nir_to_brw_state &ntb, if (nir_intrinsic_infos[instr->intrinsic].has_dest) dest = get_nir_def(ntb, instr->def); + const fs_builder xbld = dest.is_scalar ? bld.scalar_group() : bld; + switch (instr->intrinsic) { case nir_intrinsic_load_btd_global_arg_addr_intel: - bld.MOV(dest, retype(payload.global_arg_ptr, dest.type)); + xbld.MOV(dest, retype(payload.global_arg_ptr, dest.type)); break; case nir_intrinsic_load_btd_local_arg_addr_intel: - bld.MOV(dest, retype(payload.local_arg_ptr, dest.type)); + xbld.MOV(dest, retype(payload.local_arg_ptr, dest.type)); break; case nir_intrinsic_load_btd_shader_type_intel: - payload.load_shader_type(bld, dest); + payload.load_shader_type(xbld, dest); break; default: @@ -5015,19 +5020,11 @@ try_rebuild_source(nir_to_brw_state &ntb, const brw::fs_builder &bld, } case nir_intrinsic_load_btd_local_arg_addr_intel: { - assert(brw_shader_stage_is_bindless(ntb.s.stage)); - const bs_thread_payload &payload = ntb.s.bs_payload(); - ubld.MOV(retype(payload.local_arg_ptr, BRW_TYPE_Q), - &ntb.resource_insts[def->index]); - break; + unreachable("load_btd_local_arg_addr_intel should already be is_scalar"); } case nir_intrinsic_load_btd_global_arg_addr_intel: { - assert(brw_shader_stage_is_bindless(ntb.s.stage)); - const bs_thread_payload &payload = ntb.s.bs_payload(); - ubld.MOV(retype(payload.global_arg_ptr, BRW_TYPE_Q), - &ntb.resource_insts[def->index]); - break; + unreachable("load_btd_global_arg_addr_intel should already be is_scalar"); } case nir_intrinsic_load_reloc_const_intel: {