From: Ian Romanick Date: Wed, 31 Oct 2018 02:15:18 +0000 (-0700) Subject: nir: Fix holes in nir_instr X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7adafd6e1c94f3730e9233a34b2e970090e508fd;p=mesa.git nir: Fix holes in nir_instr Found using pahole. Changes in peak memory usage according to Valgrind massif: mean soft fp64 using uint64: 1,343,991,403 => 1,342,759,331 gfxbench5 aztec ruins high 11: 63,619,971 => 63,555,571 deus ex mankind divided 148: 62,887,728 => 62,845,304 deus ex mankind divided 2890: 72,399,750 => 71,922,686 dirt showdown 676: 69,464,023 => 69,238,607 dolphin ubershaders 210: 78,359,728 => 77,822,072 Signed-off-by: Ian Romanick Reviewed-by: Jason Ekstrand --- diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 3bf9621d1f8..d99cc6b2d38 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -487,7 +487,7 @@ typedef struct nir_register { #define nir_foreach_register_safe(reg, reg_list) \ foreach_list_typed_safe(nir_register, reg, node, reg_list) -typedef enum { +typedef enum PACKED { nir_instr_type_alu, nir_instr_type_deref, nir_instr_type_call, @@ -502,16 +502,16 @@ typedef enum { typedef struct nir_instr { struct exec_node node; - nir_instr_type type; struct nir_block *block; - - /** generic instruction index. */ - unsigned index; + nir_instr_type type; /* A temporary for optimization and analysis passes to use for storing * flags. For instance, DCE uses this to store the "dead/live" info. */ uint8_t pass_flags; + + /** generic instruction index. */ + unsigned index; } nir_instr; static inline nir_instr *