r300g: Fix bug in OMOD optimization

https://bugs.freedesktop.org/show_bug.cgi?id=60503

NOTE: This is a candidate for the stable branches.
(cherry picked from commit c6a86fb563)
This commit is contained in:
Tom Stellard 2013-03-19 22:39:31 -04:00
parent 4f44146226
commit f0440493c2

View file

@ -708,6 +708,7 @@ static int peephole_mul_omod(
struct rc_list * writer_list;
struct rc_variable * var;
struct peephole_mul_cb_data cb_data;
unsigned writemask_sum;
for (i = 0; i < 2; i++) {
unsigned int j;
@ -815,10 +816,11 @@ static int peephole_mul_omod(
}
/* Rewrite the instructions */
writemask_sum = rc_variable_writemask_sum(writer_list->Item);
for (var = writer_list->Item; var; var = var->Friend) {
struct rc_variable * writer = var;
unsigned conversion_swizzle = rc_make_conversion_swizzle(
writer->Inst->U.I.DstReg.WriteMask,
writemask_sum,
inst_mul->U.I.DstReg.WriteMask);
writer->Inst->U.I.Omod = omod_op;
writer->Inst->U.I.DstReg.File = inst_mul->U.I.DstReg.File;