Samuel Iglesias Gonsálvez <sigles...@igalia.com> writes: > From: Iago Toral Quiroga <ito...@igalia.com> > > Specifically, consider the size of the data type of the operand to compute > the number of registers written. > --- > src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > index 9147e60..abc68c8 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > @@ -775,7 +775,7 @@ fs_visitor::opt_copy_propagate_local(void *copy_prop_ctx, > bblock_t *block, > int offset = 0; > for (int i = 0; i < inst->sources; i++) { > int effective_width = i < inst->header_size ? 8 : > inst->exec_size; > - int regs_written = effective_width / 8; > + int regs_written = effective_width / 8 * > type_sz(inst->src[i].type) / 4;
Please use 'effective_width * type_sz(...) / REG_SIZE' instead, they are not necessarily equivalent due to rounding and only the latter is correct when they aren't. (The existing code still looks broken when the result is not an exact multiple of REG_SIZE but that probably belongs in a separate patch...) With that fixed: Reviewed-by: Francisco Jerez <curroje...@riseup.net> > if (inst->src[i].file == VGRF) { > acp_entry *entry = ralloc(copy_prop_ctx, acp_entry); > entry->dst = inst->dst; > -- > 2.5.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev