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@chromium.org> Acked-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com> Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
This commit is contained in:
parent
6ad442acae
commit
32e5fbf47c
|
@ -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")
|
||||
|
||||
|
|
Loading…
Reference in New Issue