Mesa (master): r300/compiler: improve the detection of constants for constant folding

Marek Olšák mareko at kemper.freedesktop.org
Tue Mar 8 05:43:13 UTC 2011


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Tue Mar  8 06:37:50 2011 +0100

r300/compiler: improve the detection of constants for constant folding

Now the expression V==0 generates one instruction instead of two.

---

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

diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
index 5caff91..3915cb4 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
@@ -312,6 +312,13 @@ static void constant_folding(struct radeon_compiler * c, struct rc_instruction *
 		struct rc_src_register newsrc;
 		int have_real_reference;
 
+		if (inst->U.I.SrcReg[src].Swizzle == RC_SWIZZLE_1111 ||
+		    inst->U.I.SrcReg[src].Swizzle == RC_SWIZZLE_0000 ||
+		    inst->U.I.SrcReg[src].Swizzle == RC_SWIZZLE_HHHH) {
+			inst->U.I.SrcReg[src].File = RC_FILE_NONE;
+			continue;
+		}
+
 		if (inst->U.I.SrcReg[src].File != RC_FILE_CONSTANT ||
 		    inst->U.I.SrcReg[src].RelAddr ||
 		    inst->U.I.SrcReg[src].Index >= c->Program.Constants.Count)




More information about the mesa-commit mailing list