[Mesa-dev] [PATCH] nir/search: Support 8 and 16-bit constants
Chema Casanova
jmcasanova at igalia.com
Thu Mar 1 17:05:36 UTC 2018
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 <jmcasanova at 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]] !=
>
More information about the mesa-dev
mailing list