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);

Reply via email to