Mesa (master): i965/vec4: Use UW type for multiply into accumulator on GEN8+

Jason Ekstrand jekstrand at kemper.freedesktop.org
Sat Jan 16 00:44:14 UTC 2016


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

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Jan 14 12:08:57 2016 -0800

i965/vec4: Use UW type for multiply into accumulator on GEN8+

BDW adds the following restriction: "When multiplying DW x DW, the dst
cannot be accumulator."

Cc: "11.1,11.0" <mesa-stable at lists.freedesktop.org>
Reviewed-by: Matt Turner <mattst88 at gmail.com>

---

 src/mesa/drivers/dri/i965/brw_vec4_nir.cpp |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
index 0ae723f..4ee2ed4 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
@@ -1069,7 +1069,11 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr)
    case nir_op_umul_high: {
       struct brw_reg acc = retype(brw_acc_reg(8), dst.type);
 
-      emit(MUL(acc, op[0], op[1]));
+      if (devinfo->gen >=8)
+         emit(MUL(acc, op[0], retype(op[1], BRW_REGISTER_TYPE_UW)));
+      else
+         emit(MUL(acc, op[0], op[1]));
+
       emit(MACH(dst, op[0], op[1]));
       break;
    }




More information about the mesa-commit mailing list