summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2018-07-03 14:19:09 -0700
committerIan Romanick <ian.d.romanick@intel.com>2018-07-26 15:11:13 -0700
commitdd6cd87fb4cb8f3056604d3188a8c3de555ed976 (patch)
tree2865823e0454f7d285e2336fe2164276fc620f70
parente447beab9c9c4302ebaf9cde63eb6f27290f6047 (diff)
nir: Don't compare i2f or u2i for greater-than-or-equal or less-than zero
-rw-r--r--src/compiler/nir/nir_opt_algebraic.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
index dde205b8bcf..7dca68bc1b8 100644
--- a/src/compiler/nir/nir_opt_algebraic.py
+++ b/src/compiler/nir/nir_opt_algebraic.py
@@ -195,8 +195,16 @@ optimizations = [
(('fne', ('u2f32', a), 0.0), ('ine', a, 0)),
(('feq', ('u2f32', a), 0.0), ('ieq', a, 0)),
+ (('fge', ('u2f32', a), 0.0), True),
+ (('fge', 0.0, ('u2f32', a)), ('uge', 0, a)), # ieq instead?
+ (('flt', ('u2f32', a), 0.0), False),
+ (('flt', 0.0, ('u2f32', a)), ('ult', 0, a)), # ine instead?
(('fne', ('i2f32', a), 0.0), ('ine', a, 0)),
(('feq', ('i2f32', a), 0.0), ('ieq', a, 0)),
+ (('fge', ('i2f32', a), 0.0), ('ige', a, 0)),
+ (('fge', 0.0, ('i2f32', a)), ('ige', 0, a)),
+ (('flt', ('i2f32', a), 0.0), ('ilt', a, 0)),
+ (('flt', 0.0, ('i2f32', a)), ('ilt', 0, a)),
# 0.0 < fabs(a)
# fabs(a) > 0.0