nir/algebraic: Optimize 64bit pack/unpack
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 15 Feb 2017 06:22:36 +0000 (22:22 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 17 Feb 2017 01:28:03 +0000 (17:28 -0800)
This reduces the instruction count in some fp64 and int64 piglit tests

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/compiler/nir/nir_opt_algebraic.py

index 8a6dd073e9f07649196ede03ce887cb364e8fb76..d3eaa1f1f2c0676ef5414d4b6a895a9d98dc58d5 100644 (file)
@@ -306,6 +306,12 @@ optimizations = [
    (('fabs', ('b2f', a)), ('b2f', a)),
    (('iabs', ('b2i', a)), ('b2i', a)),
 
+   # Packing and then unpacking does nothing
+   (('unpack_64_2x32_split_x', ('pack_64_2x32_split', a, b)), a),
+   (('unpack_64_2x32_split_y', ('pack_64_2x32_split', a, b)), b),
+   (('pack_64_2x32_split', ('unpack_64_2x32_split_x', a),
+                           ('unpack_64_2x32_split_y', a)), a),
+
    # Byte extraction
    (('ushr', a, 24), ('extract_u8', a, 3), '!options->lower_extract_byte'),
    (('iand', 0xff, ('ushr', a, 16)), ('extract_u8', a, 2), '!options->lower_extract_byte'),