Revert MR 369 (Fix extract_i8 and extract_u8 for 64-bit integers)
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 9 Mar 2019 09:39:20 +0000 (01:39 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 9 Mar 2019 09:42:16 +0000 (01:42 -0800)
This broke piles of image load store tests (179 failures on CI,
mesa_master build #15546, previous build right before this landed
was green).  I'd rather not leave the tree on fire over the weekend,
so let's revert for now, and we can figure out what happened next week.

src/compiler/nir/nir_opt_algebraic.py

index 218dacf403126fbfd4202bbf480966079d4f702d..5b2e7ee2405378896e8283641c9302a84b2651bd 100644 (file)
@@ -604,32 +604,18 @@ optimizations = [
                            ('unpack_64_2x32_split_y', a)), a),
 
    # Byte extraction
-   (('ushr', 'a@16',  8), ('extract_u8', a, 1), '!options->lower_extract_byte'),
+   (('ushr', ('ishl', 'a@32', 24), 24), ('extract_u8', a, 0), '!options->lower_extract_byte'),
+   (('ushr', ('ishl', 'a@32', 16), 24), ('extract_u8', a, 1), '!options->lower_extract_byte'),
+   (('ushr', ('ishl', 'a@32', 8), 24), ('extract_u8', a, 2), '!options->lower_extract_byte'),
    (('ushr', 'a@32', 24), ('extract_u8', a, 3), '!options->lower_extract_byte'),
-   (('ushr', 'a@64', 56), ('extract_u8', a, 7), '!options->lower_extract_byte'),
-   (('ishr', 'a@16',  8), ('extract_i8', a, 1), '!options->lower_extract_byte'),
+   (('ishr', ('ishl', 'a@32', 24), 24), ('extract_i8', a, 0), '!options->lower_extract_byte'),
+   (('ishr', ('ishl', 'a@32', 16), 24), ('extract_i8', a, 1), '!options->lower_extract_byte'),
+   (('ishr', ('ishl', 'a@32', 8), 24), ('extract_i8', a, 2), '!options->lower_extract_byte'),
    (('ishr', 'a@32', 24), ('extract_i8', a, 3), '!options->lower_extract_byte'),
-   (('ishr', 'a@64', 56), ('extract_i8', a, 7), '!options->lower_extract_byte'),
-   (('iand', 0xff, a), ('extract_u8', a, 0), '!options->lower_extract_byte')
-]
-
-# 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))])
+   (('iand', 0xff, ('ushr', a, 16)), ('extract_u8', a, 2), '!options->lower_extract_byte'),
+   (('iand', 0xff, ('ushr', a,  8)), ('extract_u8', a, 1), '!options->lower_extract_byte'),
+   (('iand', 0xff, a), ('extract_u8', a, 0), '!options->lower_extract_byte'),
 
-# After the ('extract_[iu]8', a, 3) patterns, above, trigger, there will be
-# patterns like those below.
-for op in ('extract_u8', 'extract_i8'):
-   optimizations.extend([((op, ('ishl', 'a@16',      8),     1), ('extract_u8', a, 0))])
-   optimizations.extend([((op, ('ishl', 'a@32', 24 - 8 * i), 3), ('extract_u8', a, i)) for i in range(2, -1, -1)])
-   optimizations.extend([((op, ('ishl', 'a@64', 56 - 8 * i), 7), ('extract_u8', a, i)) for i in range(6, -1, -1)])
-
-optimizations.extend([
     # Word extraction
    (('ushr', ('ishl', 'a@32', 16), 16), ('extract_u16', a, 0), '!options->lower_extract_word'),
    (('ushr', 'a@32', 16), ('extract_u16', a, 1), '!options->lower_extract_word'),
@@ -812,7 +798,7 @@ optimizations.extend([
      'options->lower_unpack_snorm_4x8'),
 
    (('isign', a), ('imin', ('imax', a, -1), 1), 'options->lower_isign'),
-])
+]
 
 # bit_size dependent lowerings
 for bit_size in [8, 16, 32, 64]: