On 04/05/16 00:51, Jordan Justen wrote: > On 2016-05-03 05:21:52, Samuel Iglesias Gonsálvez wrote: >> 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; > > Line length. >
OK > Should this be based on inst->dst? > No, it shouldn't. When SHADER_OPCODE_LOAD_PAYLOAD is lowered, the destination is retyped to source's type. Furthermore inside LOAD_PAYLOAD(), regs_written is calculated with the type size of the sources. > type_sz(foo.type) will only ever be 4 or 8? > I have not found any usage with a type suze less than 4. I added an assert just in case this is changed in the future. No piglit regressions with that assert in place. Sam > -Jordan > >> 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 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev