diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 281b3a61e78..5e586a303de 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -831,6 +831,13 @@ optimizations.extend([ (('~f2u32', ('i2f', 'a@32')), a), (('~f2u32', ('u2f', 'a@32')), a), + # Conversions from float16 to float32 and back can always be removed + (('f2f16', ('f2f32', 'a@16')), a), + (('f2fmp', ('f2f32', 'a@16')), a), + # Conversions to float16 would be lossy so they should only be removed if + # the instruction was generated by the precision lowering pass. + (('f2f32', ('f2fmp', 'a@32')), a), + (('ffloor', 'a(is_integral)'), a), (('fceil', 'a(is_integral)'), a), (('ftrunc', 'a(is_integral)'), a),