Module: Mesa Branch: main Commit: 8d5a1e5a779100d92c79ec533437874644aef82f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8d5a1e5a779100d92c79ec533437874644aef82f
Author: Alyssa Rosenzweig <[email protected]> Date: Mon Nov 6 16:51:23 2023 -0400 nir/validate: Don't spam nir_alu_instr_channels It doesn't inline and so is about 1% of M1 CTS time. Expand out the definition and simplify the logic. Honestly, I think this is clearer too. Signed-off-by: Alyssa Rosenzweig <[email protected]> Reviewed-by: Faith Ekstrand <[email protected]> Reviewed-by: Rhys Perry <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26084> --- src/compiler/nir/nir_validate.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c index 74998b02fa2..4febc3d3b1e 100644 --- a/src/compiler/nir/nir_validate.c +++ b/src/compiler/nir/nir_validate.c @@ -208,12 +208,15 @@ validate_alu_src(nir_alu_instr *instr, unsigned index, validate_state *state) { nir_alu_src *src = &instr->src[index]; + unsigned num_instr_channels = nir_ssa_alu_instr_src_components(instr, index); unsigned num_components = nir_src_num_components(src->src); - for (unsigned i = 0; i < NIR_MAX_VEC_COMPONENTS; i++) { - validate_assert(state, src->swizzle[i] < NIR_MAX_VEC_COMPONENTS); - if (nir_alu_instr_channel_used(instr, index, i)) - validate_assert(state, src->swizzle[i] < num_components); + for (unsigned i = 0; i < num_instr_channels; i++) { + validate_assert(state, src->swizzle[i] < num_components); + } + + for (unsigned i = num_instr_channels; i < NIR_MAX_VEC_COMPONENTS; i++) { + validate_assert(state, src->swizzle[i] < NIR_MAX_VEC_COMPONENTS); } validate_src(&src->src, state, 0, 0);
