mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
Merge branch 'nir_extract' into 'main'
nir/opt_algebraic: optimize downcast followed by upcast to extract See merge request mesa/mesa!41385
This commit is contained in:
commit
69fa3d8399
1 changed files with 15 additions and 13 deletions
|
|
@ -2128,13 +2128,6 @@ optimizations.extend([
|
|||
(('ior', ('bcsel', ('ine', ('iand', a, 0x00800000), 0), ~0xff, 0), ('extract_u8', a, 2)), ('extract_i8', a, 2)),
|
||||
(('ior', ('bcsel', ('ilt', 'a@32', 0), ~0xff, 0), ('extract_u8', a, 3)), ('extract_i8', a, 3)),
|
||||
|
||||
(('extract_i8', ('ushr', a, 8), 0), ('extract_i8', a, 1)),
|
||||
(('extract_i8', ('ushr', a, 8), 1), ('extract_i8', a, 2)),
|
||||
(('extract_i8', ('ushr', a, 8), 2), ('extract_i8', a, 3)),
|
||||
(('extract_u8', ('ushr', a, 8), 0), ('extract_u8', a, 1)),
|
||||
(('extract_u8', ('ushr', a, 8), 1), ('extract_u8', a, 2)),
|
||||
(('extract_u8', ('ushr', a, 8), 2), ('extract_u8', a, 3)),
|
||||
|
||||
(('extract_i8', ('extract_i16', a, 1), 0), ('extract_i8', a, 2)),
|
||||
(('extract_i8', ('extract_i16', a, 1), 1), ('extract_i8', a, 3)),
|
||||
(('extract_i8', ('extract_u16', a, 1), 0), ('extract_i8', a, 2)),
|
||||
|
|
@ -2186,6 +2179,16 @@ optimizations.extend([
|
|||
(('extract_u16', ('extract_i16', a, b), 0), ('extract_u16', a, b)),
|
||||
(('extract_u16', ('extract_u16', a, b), 0), ('extract_u16', a, b)),
|
||||
|
||||
# Downcast followed by upcast
|
||||
(('u2u32', ('u2u8', 'a@32')), ('extract_u8', a, 0), '!options->lower_extract_byte'),
|
||||
(('u2u32', ('i2i8', 'a@32')), ('extract_u8', a, 0), '!options->lower_extract_byte'),
|
||||
(('i2i32', ('i2i8', 'a@32')), ('extract_i8', a, 0), '!options->lower_extract_byte'),
|
||||
(('i2i32', ('u2u8', 'a@32')), ('extract_i8', a, 0), '!options->lower_extract_byte'),
|
||||
(('u2u32', ('u2u16', 'a@32')), ('extract_u16', a, 0), '!options->lower_extract_word'),
|
||||
(('u2u32', ('i2i16', 'a@32')), ('extract_u16', a, 0), '!options->lower_extract_word'),
|
||||
(('i2i32', ('i2i16', 'a@32')), ('extract_i16', a, 0), '!options->lower_extract_word'),
|
||||
(('i2i32', ('u2u16', 'a@32')), ('extract_i16', a, 0), '!options->lower_extract_word'),
|
||||
|
||||
# The extract_X16(a & 0xff) patterns aren't included because the iand will
|
||||
# already be converted to extract_u8.
|
||||
(('extract_i16', ('iand', a, 0x00ff0000), 1), ('extract_u8', a, 2), '!options->lower_extract_byte'), # extract_u8 is correct
|
||||
|
|
@ -2294,12 +2297,11 @@ optimizations.extend([
|
|||
|
||||
# After the ('extract_u8', a, 0) pattern, above, triggers, there will be
|
||||
# patterns like those below.
|
||||
for op in ('ushr', 'ishr'):
|
||||
optimizations.extend([(('extract_u8', (op, 'a@16', 8), 0), ('extract_u8', a, 1))])
|
||||
optimizations.extend([(('extract_u8', (op, 'a@32', 8 * i), 0), ('extract_u8', a, i)) for i in range(1, 4)])
|
||||
optimizations.extend([(('extract_u8', (op, 'a@64', 8 * i), 0), ('extract_u8', a, i)) for i in range(1, 8)])
|
||||
|
||||
optimizations.extend([(('extract_u8', ('extract_u16', a, 1), 0), ('extract_u8', a, 2))])
|
||||
for extract_op in ('extract_u8', 'extract_i8'):
|
||||
for op in ('ushr', 'ishr'):
|
||||
optimizations.extend([((extract_op, (op, a, 8), i), (extract_op, a, i + 1)) for i in range (0, 3)])
|
||||
optimizations.extend([((extract_op, (op, 'a@32', 8 * i), 0), (extract_op, a, i)) for i in range(2, 4)])
|
||||
optimizations.extend([((extract_op, (op, 'a@64', 8 * i), 0), (extract_op, a, i)) for i in range(2, 8)])
|
||||
|
||||
# After the ('extract_[iu]8', a, 3) patterns, above, trigger, there will be
|
||||
# patterns like those below.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue