I've been checking the whole nir_search.c and there is another pending 16-bit support in construct_value function. I'm sending a patch so feel free to squash it to your if it makes sense.
In any case this is. Reviewed-by: Jose Maria Casanova Crespo <jmcasan...@igalia.com> El 28/02/18 a las 22:18, Jason Ekstrand escribió: > --- > src/compiler/nir/nir_search.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/src/compiler/nir/nir_search.c b/src/compiler/nir/nir_search.c > index dec56fe..c7c52ae 100644 > --- a/src/compiler/nir/nir_search.c > +++ b/src/compiler/nir/nir_search.c > @@ -27,6 +27,7 @@ > > #include <inttypes.h> > #include "nir_search.h" > +#include "util/half_float.h" > > struct match_state { > bool inexact_match; > @@ -194,6 +195,9 @@ match_value(const nir_search_value *value, nir_alu_instr > *instr, unsigned src, > for (unsigned i = 0; i < num_components; ++i) { > double val; > switch (load->def.bit_size) { > + case 16: > + val = _mesa_half_to_float(load->value.u16[new_swizzle[i]]); > + break; > case 32: > val = load->value.f32[new_swizzle[i]]; > break; > @@ -213,6 +217,22 @@ match_value(const nir_search_value *value, nir_alu_instr > *instr, unsigned src, > case nir_type_uint: > case nir_type_bool32: > switch (load->def.bit_size) { > + case 8: > + for (unsigned i = 0; i < num_components; ++i) { > + if (load->value.u8[new_swizzle[i]] != > + (uint8_t)const_val->data.u) > + return false; > + } > + return true; > + > + case 16: > + for (unsigned i = 0; i < num_components; ++i) { > + if (load->value.u16[new_swizzle[i]] != > + (uint16_t)const_val->data.u) > + return false; > + } > + return true; > + > case 32: > for (unsigned i = 0; i < num_components; ++i) { > if (load->value.u32[new_swizzle[i]] != > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev