[Mesa-dev] [PATCH 5/5] tgsi: store opcode mnemonics in a separate table

Marek Olšák maraeo at gmail.com
Tue Aug 22 16:30:40 UTC 2017


For the series:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Tue, Aug 22, 2017 at 5:32 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> They are only used for debug info.
>
> Together with making tgsi_opcode_info::opcode a bitfield, this reduces
> the size of tgsi_opcode_info on 64-bit systems from 24 bytes to 4 bytes,
> and makes the whole data structure a bit more linker friendly.
> ---
>  src/gallium/auxiliary/tgsi/tgsi_info.c | 19 +++++++++++++++----
>  src/gallium/auxiliary/tgsi/tgsi_info.h |  3 +--
>  2 files changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_info.c b/src/gallium/auxiliary/tgsi/tgsi_info.c
> index 5112826aafb..08bce6380c9 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_info.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_info.c
> @@ -36,11 +36,11 @@
>  #define OTHR TGSI_OUTPUT_OTHER
>
>  #define OPCODE(_num_dst, _num_src, _output_mode, name, ...) \
> -   { .mnemonic = #name, .opcode = TGSI_OPCODE_ ## name, \
> +   { .opcode = TGSI_OPCODE_ ## name, \
>       .output_mode = _output_mode, .num_dst = _num_dst, .num_src = _num_src, \
>       ##__VA_ARGS__ },
>
> -#define OPCODE_GAP(opc) { .mnemonic = "", .opcode = opc },
> +#define OPCODE_GAP(opc) { .opcode = opc },
>
>  static const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
>  {
> @@ -69,12 +69,23 @@ tgsi_get_opcode_info( uint opcode )
>     return NULL;
>  }
>
> +#define OPCODE(_num_dst, _num_src, _output_mode, name, ...) #name,
> +#define OPCODE_GAP(opc) "UNK" #opc,
> +
> +static const char * const opcode_names[TGSI_OPCODE_LAST] =
> +{
> +#include "tgsi_info_opcodes.h"
> +};
> +
> +#undef OPCODE
> +#undef OPCODE_GAP
>
>  const char *
>  tgsi_get_opcode_name( uint opcode )
>  {
> -   const struct tgsi_opcode_info *info = tgsi_get_opcode_info(opcode);
> -   return info->mnemonic;
> +   if (opcode >= ARRAY_SIZE(opcode_names))
> +      return "UNK_OOB";
> +   return opcode_names[opcode];
>  }
>
>
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_info.h b/src/gallium/auxiliary/tgsi/tgsi_info.h
> index e65f7ac3b74..74bff186924 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_info.h
> +++ b/src/gallium/auxiliary/tgsi/tgsi_info.h
> @@ -79,8 +79,7 @@ struct tgsi_opcode_info
>     unsigned pre_dedent:1;
>     unsigned post_indent:1;
>     enum tgsi_output_mode output_mode:3;
> -   const char *mnemonic;
> -   uint opcode;
> +   unsigned opcode:8;
>  };
>
>  const struct tgsi_opcode_info *
> --
> 2.11.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list