diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 1c553c4038b..444542076a7 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -1317,36 +1317,46 @@ optimizations.extend([ (('iand@64', a, '#b(is_lower_half_zero)'), ('pack_64_2x32_split', 0, - ('iand', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b)))), + ('iand', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b))), + '!options->lower_pack_64_2x32_split'), (('iand@64', a, '#b(is_upper_half_zero)'), ('pack_64_2x32_split', ('iand', ('unpack_64_2x32_split_x', a), ('unpack_64_2x32_split_x', b)), - 0)), + 0), + '!options->lower_pack_64_2x32_split'), (('iand@64', a, '#b(is_lower_half_negative_one)'), ('pack_64_2x32_split', ('unpack_64_2x32_split_x', a), - ('iand', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b)))), + ('iand', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b))), + '!options->lower_pack_64_2x32_split'), (('iand@64', a, '#b(is_upper_half_negative_one)'), ('pack_64_2x32_split', ('iand', ('unpack_64_2x32_split_x', a), ('unpack_64_2x32_split_x', b)), - ('unpack_64_2x32_split_y', a))), + ('unpack_64_2x32_split_y', a)), + '!options->lower_pack_64_2x32_split'), (('ior@64', a, '#b(is_lower_half_zero)'), ('pack_64_2x32_split', ('unpack_64_2x32_split_x', a), - ('ior', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b)))), + ('ior', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b))), + '!options->lower_pack_64_2x32_split'), (('ior@64', a, '#b(is_upper_half_zero)'), ('pack_64_2x32_split', ('ior', ('unpack_64_2x32_split_x', a), ('unpack_64_2x32_split_x', b)), - ('unpack_64_2x32_split_y', a))), + ('unpack_64_2x32_split_y', a)), + '!options->lower_pack_64_2x32_split'), (('ior@64', a, '#b(is_lower_half_negative_one)'), ('pack_64_2x32_split', -1, - ('ior', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b)))), + ('ior', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b))), + '!options->lower_pack_64_2x32_split'), (('ior@64', a, '#b(is_upper_half_negative_one)'), ('pack_64_2x32_split', ('ior', ('unpack_64_2x32_split_x', a), ('unpack_64_2x32_split_x', b)), - -1)), + -1), + '!options->lower_pack_64_2x32_split'), (('ixor@64', a, '#b(is_lower_half_zero)'), ('pack_64_2x32_split', ('unpack_64_2x32_split_x', a), - ('ixor', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b)))), + ('ixor', ('unpack_64_2x32_split_y', a), ('unpack_64_2x32_split_y', b))), + '!options->lower_pack_64_2x32_split'), (('ixor@64', a, '#b(is_upper_half_zero)'), ('pack_64_2x32_split', ('ixor', ('unpack_64_2x32_split_x', a), ('unpack_64_2x32_split_x', b)), - ('unpack_64_2x32_split_y', a))), + ('unpack_64_2x32_split_y', a)), + '!options->lower_pack_64_2x32_split'), # DeMorgan's Laws (('iand', ('inot', a), ('inot', b)), ('inot', ('ior', a, b))),