Mesa (master): nir: Add a new ALU nir_op_imad24_ir3

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Oct 18 22:35:00 UTC 2019


Module: Mesa
Branch: master
Commit: 32e5fbf47cbe6cca136076c5b25bfe7208c0eec8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=32e5fbf47cbe6cca136076c5b25bfe7208c0eec8

Author: Eduardo Lima Mitev <elima at igalia.com>
Date:   Fri Jun 28 09:39:38 2019 +0200

nir: Add a new ALU nir_op_imad24_ir3

ir3 compiler has a signed integer multiply-add instruction (MAD_S24)
that is used for different offset calculations in the backend.
Since we intend to move some of these calculations to NIR, we need
a new ALU op that can directly represent it.

Signed-off-by: Rob Clark <robdclark at chromium.org>
Acked-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>
Reviewed-by: Eduardo Lima Mitev <elima at igalia.com>

---

 src/compiler/nir/nir_opcodes.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py
index 5d589ee20bf..b759910cd80 100644
--- a/src/compiler/nir/nir_opcodes.py
+++ b/src/compiler/nir/nir_opcodes.py
@@ -1054,3 +1054,10 @@ opcode("imadsh_mix16", 1, tint32,
        [1, 1, 1], [tint32, tint32, tint32], False, "", """
 dst.x = ((((src0.x & 0xffff0000) >> 16) * (src1.x & 0x0000ffff)) << 16) + src2.x;
 """)
+
+# ir3-specific instruction that maps directly to ir3 mad.s24.
+#
+# 24b multiply into 32b result (with sign extension) plus 32b int
+triop("imad24_ir3", tint32, _2src_commutative,
+      "(((int32_t)src0 << 8) >> 8) * (((int32_t)src1 << 8) >> 8) + src2")
+




More information about the mesa-commit mailing list