On Monday, September 21, 2015 02:04:00 PM Matt Turner wrote:
> With NIR:
>
> instructions in affected programs: 111508 -> 109193 (-2.08%)
> helped: 507
>
> Without NIR:
>
> instructions in affected programs: 28763 -> 28474 (-1.00%)
> helped: 186
> ---
> src/mesa/drivers/dri/i965/brw_vec4.cpp | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> index ed49cd3..d09a8dd 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> @@ -1021,6 +1021,27 @@ vec4_visitor::opt_register_coalesce()
> inst->src[0].abs || inst->src[0].negate || inst->src[0].reladdr)
> continue;
>
> + if (inst->dst.file == inst->src[0].file &&
> + inst->dst.reg == inst->src[0].reg &&
> + inst->dst.reg_offset == inst->src[0].reg_offset) {
> + bool is_nop_mov = true;
> +
> + for (unsigned c = 0; c < 4; c++) {
> + if ((inst->dst.writemask & (1 << c)) == 0)
> + continue;
> +
> + if (BRW_GET_SWZ(inst->src[0].swizzle, c) != c) {
> + is_nop_mov = false;
> + break;
> + }
> + }
> +
> + if (is_nop_mov) {
> + inst->remove(block);
> + continue;
> + }
> + }
> +
> bool to_mrf = (inst->dst.file == MRF);
>
> /* Can't coalesce this GRF if someone else was going to
> Seems like this would break for: mov(8) g2<1>F g2.xyzw<4,4,1>D or mov(8) g2<1>F -|g2.xyzw|<4,4,1>F Did I miss something?
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
