<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Nov 8, 2017 at 9:46 AM, Mark Janes <span dir="ltr"><<a href="mailto:mark.a.janes@intel.com" target="_blank">mark.a.janes@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This patch is CC'd to stable, but CTS regressions bisected to it:<br>
<br>
<a href="https://bugs.freedesktop.org/show_bug.cgi?id=103626" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/<wbr>show_bug.cgi?id=103626</a><br>
<br>
Please do not merge to stable until the bug is addressed.<br><div><div class="h5"></div></div></blockquote><div><br></div><div>Noted. I can take a look at that bug in a bit. It should be easy to fix.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> writes:<br>
<br>
> Some hardware (CHV, BXT) have special restrictions on register regions<br>
> when doing integer multiplication. We want to respect those when we<br>
> lower to DxW multiplication.<br>
><br>
> Cc: <a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.freedesktop.<wbr>org</a><br>
> ---<br>
> src/intel/compiler/brw_fs.cpp | 16 +++++++++-------<br>
> 1 file changed, 9 insertions(+), 7 deletions(-)<br>
><br>
> diff --git a/src/intel/compiler/brw_fs.<wbr>cpp b/src/intel/compiler/brw_fs.<wbr>cpp<br>
> index 56455e9..1c4351b 100644<br>
> --- a/src/intel/compiler/brw_fs.<wbr>cpp<br>
> +++ b/src/intel/compiler/brw_fs.<wbr>cpp<br>
> @@ -3482,18 +3482,20 @@ fs_visitor::lower_integer_<wbr>multiplication()<br>
><br>
> bool needs_mov = false;<br>
> fs_reg orig_dst = inst->dst;<br>
> + fs_reg low = inst->dst;<br>
> if (orig_dst.is_null() || orig_dst.file == MRF ||<br>
> regions_overlap(inst->dst, inst->size_written,<br>
> inst->src[0], inst->size_read(0)) ||<br>
> regions_overlap(inst->dst, inst->size_written,<br>
> inst->src[1], inst->size_read(1))) {<br>
> needs_mov = true;<br>
> - inst->dst = fs_reg(VGRF, alloc.allocate(dispatch_width / 8),<br>
> - inst->dst.type);<br>
> + <a href="http://low.nr" rel="noreferrer" target="_blank">low.nr</a> = alloc.allocate(regs_written(<wbr>inst));<br>
> + low.offset = low.offset % REG_SIZE;<br>
> }<br>
> - fs_reg low = inst->dst;<br>
> - fs_reg high(VGRF, alloc.allocate(dispatch_width / 8),<br>
> - inst->dst.type);<br>
> +<br>
> + fs_reg high = inst->dst;<br>
> + <a href="http://high.nr" rel="noreferrer" target="_blank">high.nr</a> = alloc.allocate(regs_written(<wbr>inst));<br>
> + high.offset = high.offset % REG_SIZE;<br>
><br>
> if (devinfo->gen >= 7) {<br>
> if (inst->src[1].file == IMM) {<br>
> @@ -3514,13 +3516,13 @@ fs_visitor::lower_integer_<wbr>multiplication()<br>
> inst->src[1]);<br>
> }<br>
><br>
> - ibld.ADD(subscript(inst->dst, BRW_REGISTER_TYPE_UW, 1),<br>
> + ibld.ADD(subscript(low, BRW_REGISTER_TYPE_UW, 1),<br>
> subscript(low, BRW_REGISTER_TYPE_UW, 1),<br>
> subscript(high, BRW_REGISTER_TYPE_UW, 0));<br>
><br>
> if (needs_mov || inst->conditional_mod) {<br>
> set_condmod(inst->conditional_<wbr>mod,<br>
> - ibld.MOV(orig_dst, inst->dst));<br>
> + ibld.MOV(orig_dst, low));<br>
> }<br>
> }<br>
><br>
> --<br>
> 2.5.0.400.gff86faf<br>
><br>
</div></div>> ______________________________<wbr>_________________<br>
> mesa-stable mailing list<br>
> <a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.freedesktop.<wbr>org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-stable" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-stable</a><br>
</blockquote></div><br></div></div>