r600/sfn: Handle umul24 and umad24
authorGert Wollny <gert.wollny@collabora.com>
Sun, 12 Apr 2020 15:00:28 +0000 (17:00 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 28 Apr 2020 08:06:33 +0000 (08:06 +0000)
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4714>

src/gallium/drivers/r600/r600_pipe_common.c
src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp

index e7942c92c0c9832eefd56b356e28b33cd5d0743a..b05099975b2e21870ae7800d062e28aec6ac546b 100644 (file)
@@ -1195,7 +1195,9 @@ const struct nir_shader_compiler_options r600_nir_options = {
        .lower_extract_word = true,
        .max_unroll_iterations = 32,
        .lower_all_io_to_temps = true,
-       .vectorize_io = true
+       .vectorize_io = true,
+        .has_umad24 = true,
+        .has_umul24 = true,
 };
 
 static const void *
index 9d6e7a48b730c1fe755071a0f451285258311a3c..2637c868ee99e523ca322ad69a93cef6e1aaf146 100644 (file)
@@ -177,6 +177,8 @@ bool EmitAluInstruction::do_emit(nir_instr* ir)
    case nir_op_fddy_coarse:
    case nir_op_fddy: return emit_tex_fdd(instr,TexInstruction::get_gradient_v, false);
 
+   case nir_op_umad24: return emit_alu_op3(instr, op3_muladd_uint24,  {0, 1, 2});
+   case nir_op_umul24: return emit_alu_op2(instr, op2_mul_uint24);
    default:
       return false;
    }