aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler/nir
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2020-05-14 14:50:52 -0500
committerMarge Bot <[email protected]>2020-05-15 03:49:18 +0000
commitea62c237031a05e82147bca2699269bf2d80fa05 (patch)
tree14225795b1f7e085318c513f716c8e66c0a0644b /src/compiler/nir
parent57e796a12a883f5845c8e0ed05ec6bdb6d055b53 (diff)
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 <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5045>
Diffstat (limited to 'src/compiler/nir')
-rw-r--r--src/compiler/nir/nir.h20
-rw-r--r--src/compiler/nir/nir_serialize.c2
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;