diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 0162c33fc3b..e8445246979 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -976,19 +976,19 @@ for s in [16, 32, 64]: (('fadd', ('b2f{}'.format(s), ('flt', 0.0, 'a@{}'.format(s))), ('fneg', ('b2f{}'.format(s), ('flt', 'a@{}'.format(s), 0.0)))), ('fsign', a), '!options->lower_fsign'), (('iadd', ('b2i{}'.format(s), ('flt', 0, 'a@{}'.format(s))), ('ineg', ('b2i{}'.format(s), ('flt', 'a@{}'.format(s), 0)))), ('f2i{}'.format(s), ('fsign', a)), '!options->lower_fsign'), + + # float? -> float? -> floatS ==> float? -> floatS + (('~f2f{}'.format(s), ('f2f', a)), ('f2f{}'.format(s), a)), + + # int? -> float? -> floatS ==> int? -> floatS + (('~f2f{}'.format(s), ('u2f', a)), ('u2f{}'.format(s), a)), + (('~f2f{}'.format(s), ('i2f', a)), ('i2f{}'.format(s), a)), + + # float? -> float? -> intS ==> float? -> intS + (('~f2u{}'.format(s), ('f2f', a)), ('f2u{}'.format(s), a)), + (('~f2i{}'.format(s), ('f2f', a)), ('f2i{}'.format(s), a)), ]) - # float? -> float? -> floatS ==> float? -> floatS - (('~f2f{}'.format(s), ('f2f', a)), ('f2f{}'.format(s), a)), - - # int? -> float? -> floatS ==> int? -> floatS - (('~f2f{}'.format(s), ('u2f', a)), ('u2f{}'.format(s), a)), - (('~f2f{}'.format(s), ('i2f', a)), ('i2f{}'.format(s), a)), - - # float? -> float? -> intS ==> float? -> intS - (('~f2u{}'.format(s), ('f2f', a)), ('f2u{}'.format(s), a)), - (('~f2i{}'.format(s), ('f2f', a)), ('f2i{}'.format(s), a)), - for B in [32, 64]: if s < B: optimizations.extend([ diff --git a/src/freedreno/ci/traces-freedreno.yml b/src/freedreno/ci/traces-freedreno.yml index 752056d1b06..95cf923233e 100644 --- a/src/freedreno/ci/traces-freedreno.yml +++ b/src/freedreno/ci/traces-freedreno.yml @@ -100,7 +100,7 @@ traces: freedreno-a630: checksum: 47016a34553e5a28e2e1e0b92d11c92f zink-a630: - checksum: 7ad069adec81baa8f249c45c0f4eec7a + checksum: 5cd30bb46cbabc0d77cc4aacbcd7c0c2 0ad/0ad-v2.trace: freedreno-a306: