diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index 9fefa52e510..c0a227f4181 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -31,22 +31,20 @@ static bool src_is_invocation_id(const nir_src *src) { assert(src->is_ssa); - if (src->ssa->parent_instr->type != nir_instr_type_intrinsic) - return false; - - return nir_instr_as_intrinsic(src->ssa->parent_instr)->intrinsic == - nir_intrinsic_load_invocation_id; + nir_ssa_scalar s = nir_ssa_scalar_resolved(src->ssa, 0); + return s.def->parent_instr->type == nir_instr_type_intrinsic && + nir_instr_as_intrinsic(s.def->parent_instr)->intrinsic == + nir_intrinsic_load_invocation_id; } static bool src_is_local_invocation_index(const nir_src *src) { assert(src->is_ssa); - if (src->ssa->parent_instr->type != nir_instr_type_intrinsic) - return false; - - return nir_instr_as_intrinsic(src->ssa->parent_instr)->intrinsic == - nir_intrinsic_load_local_invocation_index; + nir_ssa_scalar s = nir_ssa_scalar_resolved(src->ssa, 0); + return s.def->parent_instr->type == nir_instr_type_intrinsic && + nir_instr_as_intrinsic(s.def->parent_instr)->intrinsic == + nir_intrinsic_load_local_invocation_index; } static void