[Mesa-dev] [PATCH 2/4] i965/fs: Disable CSE on instructions writing to HW_REG.
Kenneth Graunke
kenneth at whitecape.org
Thu Sep 26 20:59:15 PDT 2013
On 09/26/2013 03:00 PM, Matt Turner wrote:
> CSE would otherwise combine the two mul(8) emitted by [iu]mulExtended:
>
> mul(8) acc0 x y
> mach(8) null x y
> mov(8) lsb acc0
> ...
> mul(8) acc0 x y
> mach(8) msb x y
> Into:
> mul(8) temp x y
> mov(8) acc0 temp
> mach(8) null x y
> mov(8) lsb acc0
> ...
> mov(8) acc0 temp
> mach(8) msb x y
>
> But mul(8) into the accumulator produces more than 32-bits of precision,
> which is required and lost if multiplying into a general register and
> moving to the accumulator.
> ---
> src/mesa/drivers/dri/i965/brw_fs_cse.cpp | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
> index ccd4e5e..61b3aeb 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
> @@ -98,7 +98,8 @@ fs_visitor::opt_cse_local(bblock_t *block, exec_list *aeb)
> if (is_expression(inst) &&
> !inst->predicate &&
> !inst->is_partial_write() &&
> - !inst->conditional_mod)
> + !inst->conditional_mod &&
> + inst->dst.file != HW_REG)
> {
> bool found = false;
Patches 1-4 are:
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
More information about the mesa-dev
mailing list