From 54e1072ff696c007d65218f2351b7d245f15385b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Sat, 21 May 2022 18:53:07 -0400 Subject: [PATCH] vtn: assert that vector shuffle indices are in-bounds Reviewed-by: Jason Ekstrand Part-of: --- src/compiler/spirv/spirv_to_nir.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index b1f29219408..ffc3767c98e 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -3898,6 +3898,11 @@ vtn_vector_shuffle(struct vtn_builder *b, unsigned num_components, for (unsigned i = 0; i < num_components; i++) { uint32_t index = indices[i]; + unsigned total_components = src0->num_components + src1->num_components; + vtn_fail_if(index != 0xffffffff && index >= total_components, + "OpVectorShuffle: All Component literals must either be " + "FFFFFFFF or in [0, N - 1] (inclusive)"); + if (index == 0xffffffff) { vec->src[i].src = nir_src_for_ssa(nir_ssa_undef(&b->nb, 1, src0->bit_size));