Mesa (master): nir: Use 8-bit types for most info fields
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri May 15 04:11:11 UTC 2020
Module: Mesa
Branch: master
Commit: ea62c237031a05e82147bca2699269bf2d80fa05
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea62c237031a05e82147bca2699269bf2d80fa05
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Thu May 14 14:50:52 2020 -0500
nir: Use 8-bit types for most info fields
This shrinks nir_intrinsics.c.o from 73K to 35K and nir_opcodes.c.o from
64K to 31K on a release build.
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Reviewed-by: Eric Anholt <eric at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5045>
---
src/compiler/nir/nir.h | 20 ++++++++++----------
src/compiler/nir/nir_serialize.c | 2 +-
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index e393fb49100..dec20d33fd3 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -987,7 +987,7 @@ typedef struct {
* The values in this enum are carefully chosen so that the sized type is
* just the unsized type OR the number of bits.
*/
-typedef enum {
+typedef enum PACKED {
nir_type_invalid = 0, /* Not a valid type */
nir_type_int = 2,
nir_type_uint = 4,
@@ -1217,7 +1217,7 @@ typedef enum {
typedef struct {
const char *name;
- unsigned num_inputs;
+ uint8_t num_inputs;
/**
* The number of components in the output
@@ -1236,7 +1236,7 @@ typedef struct {
* though output_size is zero; in that case, the inputs with a zero
* size act per-component, while the inputs with non-zero size don't.
*/
- unsigned output_size;
+ uint8_t output_size;
/**
* The type of vector that the instruction outputs. Note that the
@@ -1248,7 +1248,7 @@ typedef struct {
/**
* The number of components in each input
*/
- unsigned input_sizes[NIR_MAX_VEC_COMPONENTS];
+ uint8_t input_sizes[NIR_MAX_VEC_COMPONENTS];
/**
* The type of vector that each input takes. Note that negate and
@@ -1703,7 +1703,7 @@ typedef enum {
typedef struct {
const char *name;
- unsigned num_srcs; /** < number of register/SSA inputs */
+ uint8_t num_srcs; /** < number of register/SSA inputs */
/** number of components of each input register
*
@@ -1712,7 +1712,7 @@ typedef struct {
* intrinsic consumes however many components are provided and it is not
* validated at all.
*/
- int src_components[NIR_INTRINSIC_MAX_INPUTS];
+ int8_t src_components[NIR_INTRINSIC_MAX_INPUTS];
bool has_dest;
@@ -1721,16 +1721,16 @@ typedef struct {
* If this value is 0, the number of components is given by the
* num_components field of nir_intrinsic_instr.
*/
- unsigned dest_components;
+ uint8_t dest_components;
/** bitfield of legal bit sizes */
- unsigned dest_bit_sizes;
+ uint8_t dest_bit_sizes;
/** the number of constant indices used by the intrinsic */
- unsigned num_indices;
+ uint8_t num_indices;
/** indicates the usage of intr->const_index[n] */
- unsigned index_map[NIR_INTRINSIC_NUM_INDEX_FLAGS];
+ uint8_t index_map[NIR_INTRINSIC_NUM_INDEX_FLAGS];
/** semantic flags for calls to this intrinsic */
nir_intrinsic_semantic_flag flags;
diff --git a/src/compiler/nir/nir_serialize.c b/src/compiler/nir/nir_serialize.c
index ddb9628b3c1..6688e9e8b17 100644
--- a/src/compiler/nir/nir_serialize.c
+++ b/src/compiler/nir/nir_serialize.c
@@ -1443,7 +1443,7 @@ union packed_tex_data {
uint32_t u32;
struct {
enum glsl_sampler_dim sampler_dim:4;
- nir_alu_type dest_type:8;
+ unsigned dest_type:8;
unsigned coord_components:3;
unsigned is_array:1;
unsigned is_shadow:1;
More information about the mesa-commit
mailing list