[Mesa-dev] [PATCH] i965/vec4: Use UW type for multiply into accumulator on GEN8+
Jason Ekstrand
jason at jlekstrand.net
Thu Jan 14 12:08:57 PST 2016
BDW adds the following restriction: "When multiplying DW x DW, the dst
cannot be accumulator."
---
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 c228743..b2335bd 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;
}
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list