From 13814b0103812adbb5aba0dba4664249e8566290 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Sat, 1 Oct 2011 15:21:05 -0700 Subject: r300/compiler: Rewrite source swizzles when using OMOD --- src/gallium/drivers/r300/compiler/radeon_optimize.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gallium/drivers/r300/compiler/radeon_optimize.c b/src/gallium/drivers/r300/compiler/radeon_optimize.c index 7df9681bee7..b7a0e20797c 100644 --- a/src/gallium/drivers/r300/compiler/radeon_optimize.c +++ b/src/gallium/drivers/r300/compiler/radeon_optimize.c @@ -801,8 +801,13 @@ static int peephole_mul_omod( /* Rewrite the instructions */ for (var = writer_list->Item; var; var = var->Friend) { struct rc_variable * writer = writer_list->Item; + unsigned conversion_swizzle = rc_make_conversion_swizzle( + writer->Inst->U.I.DstReg.WriteMask, + inst_mul->U.I.DstReg.WriteMask); writer->Inst->U.I.Omod = omod_op; - writer->Inst->U.I.DstReg = inst_mul->U.I.DstReg; + writer->Inst->U.I.DstReg.File = inst_mul->U.I.DstReg.File; + writer->Inst->U.I.DstReg.Index = inst_mul->U.I.DstReg.Index; + rc_normal_rewrite_writemask(writer->Inst, conversion_swizzle); writer->Inst->U.I.SaturateMode = inst_mul->U.I.SaturateMode; } -- cgit v1.2.3