nir/algebraic: i2f(f2i()) -> trunc()
total instructions in shared programs: 12840968 -> 12840784 (<.01%) instructions in affected programs: 17886 -> 17702 (-1.03%) helped: 77 HURT: 0 total cycles in shared programs: 302508917 -> 302505592 (<.01%) cycles in affected programs: 249964 -> 246639 (-1.33%) helped: 70 HURT: 7 Signed-off-by: Elie Tournier <elie.tournier@collabora.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/948>
This commit is contained in:
parent
3d9a3d0be0
commit
6f394343b1
|
@ -803,6 +803,11 @@ optimizations.extend([
|
|||
(('i2b', ('iabs', a)), ('i2b', a)),
|
||||
(('inot', ('f2b1', a)), ('feq', a, 0.0)),
|
||||
|
||||
# The C spec says, "If the value of the integral part cannot be represented
|
||||
# by the integer type, the behavior is undefined." "Undefined" can mean
|
||||
# "the conversion doesn't happen at all."
|
||||
(('~i2f32', ('f2i32', 'a@32')), ('ftrunc', a)),
|
||||
|
||||
# Ironically, mark these as imprecise because removing the conversions may
|
||||
# preserve more precision than doing the conversions (e.g.,
|
||||
# uint(float(0x81818181u)) == 0x81818200).
|
||||
|
|
Loading…
Reference in New Issue