nak/nir: Fix helper invocations

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998>
This commit is contained in:
Faith Ekstrand 2023-09-15 15:41:47 -05:00 committed by Marge Bot
parent 4e14cefa70
commit e174fc9ab3

View file

@ -472,8 +472,6 @@ nak_nir_lower_system_value_instr(nir_builder *b, nir_instr *instr, void *data)
val = nir_load_input(b, intrin->def.num_components, 32,
nir_imm_int(b, 0), .base = addr,
.dest_type = nir_type_int32);
if (intrin->def.bit_size == 1)
val = nir_i2b(b, val);
break;
}
@ -504,6 +502,14 @@ nak_nir_lower_system_value_instr(nir_builder *b, nir_instr *instr, void *data)
break;
}
case nir_intrinsic_is_helper_invocation: {
const uint32_t idx =
nak_sysval_sysval_idx(SYSTEM_VALUE_HELPER_INVOCATION);
/* Unlike load_helper_invocation, this one isn't re-orderable */
val = nir_load_sysval_nv(b, 32, .base = idx);
break;
}
case nir_intrinsic_shader_clock:
val = nir_load_sysval_nv(b, 64, .base = 0x50);
val = nir_unpack_64_2x32(b, val);
@ -513,6 +519,9 @@ nak_nir_lower_system_value_instr(nir_builder *b, nir_instr *instr, void *data)
return false;
}
if (intrin->def.bit_size == 1)
val = nir_i2b(b, val);
nir_def_rewrite_uses(&intrin->def, val);
return true;