mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 00:00:11 +01:00
nir: Add optimization for doing removing f16/f32 conversions
This eliminates conversions between f16 and f32 where possible. We can always remove an upcast followed by a down cast, that is: f2f16 ( f2f32 (a) ) -> a f2fmp ( f2f32 (a) ) -> a In the other direction, f2f16 loses precision and can't be undone by a f2f32. However, by definition it's always safe to elminate f2fmp: f2f32 ( f2fmp (a) ) -> a v2. [Neil Roberts (nroberts@igalia.com)] Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3822>
This commit is contained in:
parent
6ee375f68d
commit
9e8466a866
1 changed files with 7 additions and 0 deletions
|
|
@ -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),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue