diff options
author | Jonathan Marek <[email protected]> | 2020-04-24 14:27:33 -0400 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-04-27 18:40:03 +0000 |
commit | 42093bb694bdcb6fb5bb762c118520c107456f4a (patch) | |
tree | 68170419e5cde64b2c7ac49b10defd5687f970c2 /src | |
parent | cbeda7f78e36caa7e4ca775bd848e1c8d38ee5d7 (diff) |
nir: add pack_32_2x16_split/unpack_32_2x16_split lowering
The new option replaces the two other _split lowering options, since
there's no need for separate options.
Signed-off-by: Jonathan Marek <[email protected]>
Reviewed-by: Alyssa Rosenzweig <[email protected]>
Reviewed-by: Boris Brezillon <[email protected]>
Reviewed-by: Rob Clark <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4738>
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/nir/nir.h | 4 | ||||
-rw-r--r-- | src/compiler/nir/nir_opt_algebraic.py | 18 | ||||
-rw-r--r-- | src/freedreno/ir3/ir3_nir.c | 6 | ||||
-rw-r--r-- | src/panfrost/bifrost/bifrost_compile.h | 3 | ||||
-rw-r--r-- | src/panfrost/midgard/midgard_compile.h | 3 |
5 files changed, 21 insertions, 13 deletions
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index ce12410b79b..59a034f1907 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -2863,18 +2863,18 @@ typedef struct nir_shader_compiler_options { bool lower_ldexp; bool lower_pack_half_2x16; - bool lower_pack_half_2x16_split; bool lower_pack_unorm_2x16; bool lower_pack_snorm_2x16; bool lower_pack_unorm_4x8; bool lower_pack_snorm_4x8; bool lower_unpack_half_2x16; - bool lower_unpack_half_2x16_split; bool lower_unpack_unorm_2x16; bool lower_unpack_snorm_2x16; bool lower_unpack_unorm_4x8; bool lower_unpack_snorm_4x8; + bool lower_pack_split; + bool lower_extract_byte; bool lower_extract_word; diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index bcf13bdf399..b2643641a8e 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -1295,15 +1295,27 @@ optimizations.extend([ (('pack_half_2x16_split', 'a@32', 'b@32'), ('ior', ('ishl', ('u2u32', ('f2f16', b)), 16), ('u2u32', ('f2f16', a))), - 'options->lower_pack_half_2x16_split'), + 'options->lower_pack_split'), (('unpack_half_2x16_split_x', 'a@32'), ('f2f32', ('u2u16', a)), - 'options->lower_unpack_half_2x16_split'), + 'options->lower_pack_split'), (('unpack_half_2x16_split_y', 'a@32'), ('f2f32', ('u2u16', ('ushr', a, 16))), - 'options->lower_unpack_half_2x16_split'), + 'options->lower_pack_split'), + + (('pack_32_2x16_split', 'a@16', 'b@16'), + ('ior', ('ishl', ('u2u32', b), 16), ('u2u32', a)), + 'options->lower_pack_split'), + + (('unpack_32_2x16_split_x', 'a@32'), + ('u2u16', a), + 'options->lower_pack_split'), + + (('unpack_32_2x16_split_y', 'a@32'), + ('u2u16', ('ushr', 'a', 16)), + 'options->lower_pack_split'), (('isign', a), ('imin', ('imax', a, -1), 1), 'options->lower_isign'), (('fsign', a), ('fsub', ('b2f', ('flt', 0.0, a)), ('b2f', ('flt', a, 0.0))), 'options->lower_fsign'), diff --git a/src/freedreno/ir3/ir3_nir.c b/src/freedreno/ir3/ir3_nir.c index 146d9f0e9bd..8a67ea637d9 100644 --- a/src/freedreno/ir3/ir3_nir.c +++ b/src/freedreno/ir3/ir3_nir.c @@ -58,17 +58,16 @@ static const nir_shader_compiler_options options = { .lower_bitfield_insert_to_shifts = true, .lower_bitfield_extract_to_shifts = true, .lower_pack_half_2x16 = true, - .lower_pack_half_2x16_split = true, .lower_pack_snorm_4x8 = true, .lower_pack_snorm_2x16 = true, .lower_pack_unorm_4x8 = true, .lower_pack_unorm_2x16 = true, .lower_unpack_half_2x16 = true, - .lower_unpack_half_2x16_split = true, .lower_unpack_snorm_4x8 = true, .lower_unpack_snorm_2x16 = true, .lower_unpack_unorm_4x8 = true, .lower_unpack_unorm_2x16 = true, + .lower_pack_split = true, .use_interpolated_input_intrinsics = true, .lower_rotate = true, .lower_to_scalar = true, @@ -100,17 +99,16 @@ static const nir_shader_compiler_options options_a6xx = { .lower_bitfield_insert_to_shifts = true, .lower_bitfield_extract_to_shifts = true, .lower_pack_half_2x16 = true, - .lower_pack_half_2x16_split = true, .lower_pack_snorm_4x8 = true, .lower_pack_snorm_2x16 = true, .lower_pack_unorm_4x8 = true, .lower_pack_unorm_2x16 = true, .lower_unpack_half_2x16 = true, - .lower_unpack_half_2x16_split = true, .lower_unpack_snorm_4x8 = true, .lower_unpack_snorm_2x16 = true, .lower_unpack_unorm_4x8 = true, .lower_unpack_unorm_2x16 = true, + .lower_pack_split = true, .use_interpolated_input_intrinsics = true, .lower_rotate = true, .vectorize_io = true, diff --git a/src/panfrost/bifrost/bifrost_compile.h b/src/panfrost/bifrost/bifrost_compile.h index 73e6847891c..a25ad314699 100644 --- a/src/panfrost/bifrost/bifrost_compile.h +++ b/src/panfrost/bifrost/bifrost_compile.h @@ -52,17 +52,16 @@ static const nir_shader_compiler_options bifrost_nir_options = { .lower_rotate = true, .lower_pack_half_2x16 = true, - .lower_pack_half_2x16_split = true, .lower_pack_unorm_2x16 = true, .lower_pack_snorm_2x16 = true, .lower_pack_unorm_4x8 = true, .lower_pack_snorm_4x8 = true, .lower_unpack_half_2x16 = true, - .lower_unpack_half_2x16_split = true, .lower_unpack_unorm_2x16 = true, .lower_unpack_snorm_2x16 = true, .lower_unpack_unorm_4x8 = true, .lower_unpack_snorm_4x8 = true, + .lower_pack_split = true, .lower_doubles_options = nir_lower_dmod, diff --git a/src/panfrost/midgard/midgard_compile.h b/src/panfrost/midgard/midgard_compile.h index a995d12771a..7f87ae74c14 100644 --- a/src/panfrost/midgard/midgard_compile.h +++ b/src/panfrost/midgard/midgard_compile.h @@ -62,17 +62,16 @@ static const nir_shader_compiler_options midgard_nir_options = { .lower_rotate = true, .lower_pack_half_2x16 = true, - .lower_pack_half_2x16_split = true, .lower_pack_unorm_2x16 = true, .lower_pack_snorm_2x16 = true, .lower_pack_unorm_4x8 = true, .lower_pack_snorm_4x8 = true, .lower_unpack_half_2x16 = true, - .lower_unpack_half_2x16_split = true, .lower_unpack_unorm_2x16 = true, .lower_unpack_snorm_2x16 = true, .lower_unpack_unorm_4x8 = true, .lower_unpack_snorm_4x8 = true, + .lower_pack_split = true, .lower_doubles_options = nir_lower_dmod, |