[Mesa-dev] [PATCH] Gallium/tgsi: Correct signdness of return value of bit operations

Roland Scheidegger sroland at vmware.com
Thu Aug 9 15:10:12 UTC 2018


This is incorrect for umsb.
If you really want to move so the dst type is signed, you need to add it
to infer_src_type so the src args are unsigned.
FWIW I'd like to think that all 3 of these always operate on unsigned
data (even if they might return signed data), imho they are a lot more
easier to understand that way (I mean the signed msb you have to look up
what the hell it actually does, bit operations on unsigned data are just
easier to understand). But of course it doesn't really make a
difference, so I can live with the other 2 if the src type indicates signed.

Roland


Am 09.08.2018 um 10:43 schrieb Gert Wollny:
> The GLSL functions  findLSB, findMSB, and countBits always return
> a signed integer type. Let the according TGSI operations reflect this.
> 
> Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
> ---
>  src/gallium/auxiliary/tgsi/tgsi_info.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_info.c b/src/gallium/auxiliary/tgsi/tgsi_info.c
> index bbe1a21e43..a8c2bbe663 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_info.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_info.c
> @@ -150,9 +150,6 @@ tgsi_opcode_infer_type(enum tgsi_opcode opcode)
>     case TGSI_OPCODE_UBFE:
>     case TGSI_OPCODE_BFI:
>     case TGSI_OPCODE_BREV:
> -   case TGSI_OPCODE_POPC:
> -   case TGSI_OPCODE_LSB:
> -   case TGSI_OPCODE_UMSB:
>     case TGSI_OPCODE_IMG2HND:
>     case TGSI_OPCODE_SAMP2HND:
>        return TGSI_TYPE_UNSIGNED;
> @@ -188,6 +185,9 @@ tgsi_opcode_infer_type(enum tgsi_opcode opcode)
>     case TGSI_OPCODE_U64SGE:
>     case TGSI_OPCODE_I64SLT:
>     case TGSI_OPCODE_I64SGE:
> +   case TGSI_OPCODE_LSB:
> +   case TGSI_OPCODE_POPC:
> +   case TGSI_OPCODE_UMSB:
>        return TGSI_TYPE_SIGNED;
>     case TGSI_OPCODE_DADD:
>     case TGSI_OPCODE_DABS:
> 



More information about the mesa-dev mailing list