[Mesa-dev] [PATCH 5/5] intel/fs: Rely on undocumented unrestricted regioning for 32x16-bit integer multiply.
Jason Ekstrand
jason at jlekstrand.net
Thu Feb 14 21:16:46 UTC 2019
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
On Fri, Jan 18, 2019 at 6:09 PM Francisco Jerez <currojerez at riseup.net>
wrote:
> Even though the hardware spec claims that any "integer DWord multiply"
> operation is affected by the regioning restrictions of CHV/BXT/GLK,
> this is inconsistent with the behavior of the simulator and with
> empirical evidence -- Return false from
> has_dst_aligned_region_restriction()
> for such instructions as a micro-optimization.
> ---
> src/intel/compiler/brw_ir_fs.h | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/src/intel/compiler/brw_ir_fs.h
> b/src/intel/compiler/brw_ir_fs.h
> index 0a0ba1d363a..c50df45922a 100644
> --- a/src/intel/compiler/brw_ir_fs.h
> +++ b/src/intel/compiler/brw_ir_fs.h
> @@ -543,11 +543,19 @@ has_dst_aligned_region_restriction(const
> gen_device_info *devinfo,
> const fs_inst *inst)
> {
> const brw_reg_type exec_type = get_exec_type(inst);
> - const bool is_int_multiply =
> !brw_reg_type_is_floating_point(exec_type) &&
> - (inst->opcode == BRW_OPCODE_MUL || inst->opcode ==
> BRW_OPCODE_MAD);
> + /* Even though the hardware spec claims that "integer DWord multiply"
> + * operations are restricted, empirical evidence and the behavior of
> the
> + * simulator suggest that only 32x32-bit integer multiplication is
> + * restricted.
> + */
> + const bool is_dword_multiply =
> !brw_reg_type_is_floating_point(exec_type) &&
> + ((inst->opcode == BRW_OPCODE_MUL &&
> + MIN2(type_sz(inst->src[0].type), type_sz(inst->src[1].type)) >=
> 4) ||
> + (inst->opcode == BRW_OPCODE_MAD &&
> + MIN2(type_sz(inst->src[1].type), type_sz(inst->src[2].type)) >=
> 4));
>
> if (type_sz(inst->dst.type) > 4 || type_sz(exec_type) > 4 ||
> - (type_sz(exec_type) == 4 && is_int_multiply))
> + (type_sz(exec_type) == 4 && is_dword_multiply))
> return devinfo->is_cherryview || gen_device_info_is_9lp(devinfo);
> else
> return false;
> --
> 2.19.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190214/afdf7d38/attachment.html>
More information about the mesa-dev
mailing list