Mesa (master): r300/compiler: Rewrite source swizzles when using OMOD

Tom Stellard tstellar at kemper.freedesktop.org
Sun Oct 2 15:47:49 PDT 2011


Module: Mesa
Branch: master
Commit: 13814b0103812adbb5aba0dba4664249e8566290
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=13814b0103812adbb5aba0dba4664249e8566290

Author: Tom Stellard <tstellar at gmail.com>
Date:   Sat Oct  1 15:21:05 2011 -0700

r300/compiler: Rewrite source swizzles when using OMOD

---

 .../drivers/r300/compiler/radeon_optimize.c        |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/r300/compiler/radeon_optimize.c b/src/gallium/drivers/r300/compiler/radeon_optimize.c
index 7df9681..b7a0e20 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;
 	}
 



More information about the mesa-commit mailing list