tgsi: store opcode mnemonics in a separate table
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. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
438177aa19
commit
26996ec3b8
|
@ -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];
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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 *
|
||||
|
|
Loading…
Reference in New Issue