summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2018-07-12 17:51:53 -0700
committerMatt Turner <mattst88@gmail.com>2019-01-08 22:12:38 -0800
commit9a786e7a77be887d2a472fd2a257178860e09037 (patch)
tree1b9b523e718ed3912c62cc877ed45b754bdffcb8
parent642e863c5d7cdcaa627a8f7a300aa74834b384fd (diff)
nir: Optimize reverse shifts
-rw-r--r--src/compiler/nir/nir_opt_algebraic.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
index 75a3d2ad238..e5d059ec019 100644
--- a/src/compiler/nir/nir_opt_algebraic.py
+++ b/src/compiler/nir/nir_opt_algebraic.py
@@ -481,6 +481,9 @@ optimizations = [
(('ishr', a, 0), a),
(('ushr', 0, a), 0),
(('ushr', a, 0), a),
+ (('ishl@32', a, ('iabs', ('iadd', b, -32))), ('ishl', a, ('ineg', b))),
+ (('ishr@32', a, ('iabs', ('iadd', b, -32))), ('ishr', a, ('ineg', b))),
+ (('ushr@32', a, ('iabs', ('iadd', b, -32))), ('ushr', a, ('ineg', b))),
(('iand', 0xff, ('ushr@32', a, 24)), ('ushr', a, 24)),
(('iand', 0xffff, ('ushr@32', a, 16)), ('ushr', a, 16)),
# Exponential/logarithmic identities