[Mesa-dev] [PATCH v2 11/12] gallium/radeon: always use two-dimensional constant references

Nicolai Hähnle nhaehnle at gmail.com
Mon Aug 28 08:58:19 UTC 2017


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

Acked-by: Roland Scheidegger <sroland at vmware.com>
Tested-by: Dieter Nützel <Dieter at nuetzel-hh.de>
---
 src/gallium/drivers/radeon/r600_query.c | 36 ++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_query.c b/src/gallium/drivers/radeon/r600_query.c
index ca048722672..eaff39c830d 100644
--- a/src/gallium/drivers/radeon/r600_query.c
+++ b/src/gallium/drivers/radeon/r600_query.c
@@ -1452,155 +1452,155 @@ static void r600_create_query_result_shader(struct r600_common_context *rctx)
 	 * TEMP[1].y = current pair index
 	 */
 	static const char text_tmpl[] =
 		"COMP\n"
 		"PROPERTY CS_FIXED_BLOCK_WIDTH 1\n"
 		"PROPERTY CS_FIXED_BLOCK_HEIGHT 1\n"
 		"PROPERTY CS_FIXED_BLOCK_DEPTH 1\n"
 		"DCL BUFFER[0]\n"
 		"DCL BUFFER[1]\n"
 		"DCL BUFFER[2]\n"
-		"DCL CONST[0..1]\n"
+		"DCL CONST[0][0..1]\n"
 		"DCL TEMP[0..5]\n"
 		"IMM[0] UINT32 {0, 31, 2147483647, 4294967295}\n"
 		"IMM[1] UINT32 {1, 2, 4, 8}\n"
 		"IMM[2] UINT32 {16, 32, 64, 128}\n"
 		"IMM[3] UINT32 {1000000, 0, %u, 0}\n" /* for timestamp conversion */
 		"IMM[4] UINT32 {256, 0, 0, 0}\n"
 
-		"AND TEMP[5], CONST[0].wwww, IMM[2].xxxx\n"
+		"AND TEMP[5], CONST[0][0].wwww, IMM[2].xxxx\n"
 		"UIF TEMP[5]\n"
 			/* Check result availability. */
-			"LOAD TEMP[1].x, BUFFER[0], CONST[1].xxxx\n"
+			"LOAD TEMP[1].x, BUFFER[0], CONST[0][1].xxxx\n"
 			"ISHR TEMP[0].z, TEMP[1].xxxx, IMM[0].yyyy\n"
 			"MOV TEMP[1], TEMP[0].zzzz\n"
 			"NOT TEMP[0].z, TEMP[0].zzzz\n"
 
 			/* Load result if available. */
 			"UIF TEMP[1]\n"
 				"LOAD TEMP[0].xy, BUFFER[0], IMM[0].xxxx\n"
 			"ENDIF\n"
 		"ELSE\n"
 			/* Load previously accumulated result if requested. */
 			"MOV TEMP[0], IMM[0].xxxx\n"
-			"AND TEMP[4], CONST[0].wwww, IMM[1].xxxx\n"
+			"AND TEMP[4], CONST[0][0].wwww, IMM[1].xxxx\n"
 			"UIF TEMP[4]\n"
 				"LOAD TEMP[0].xyz, BUFFER[1], IMM[0].xxxx\n"
 			"ENDIF\n"
 
 			"MOV TEMP[1].x, IMM[0].xxxx\n"
 			"BGNLOOP\n"
 				/* Break if accumulated result so far is not available. */
 				"UIF TEMP[0].zzzz\n"
 					"BRK\n"
 				"ENDIF\n"
 
 				/* Break if result_index >= result_count. */
-				"USGE TEMP[5], TEMP[1].xxxx, CONST[0].zzzz\n"
+				"USGE TEMP[5], TEMP[1].xxxx, CONST[0][0].zzzz\n"
 				"UIF TEMP[5]\n"
 					"BRK\n"
 				"ENDIF\n"
 
 				/* Load fence and check result availability */
-				"UMAD TEMP[5].x, TEMP[1].xxxx, CONST[0].yyyy, CONST[1].xxxx\n"
+				"UMAD TEMP[5].x, TEMP[1].xxxx, CONST[0][0].yyyy, CONST[0][1].xxxx\n"
 				"LOAD TEMP[5].x, BUFFER[0], TEMP[5].xxxx\n"
 				"ISHR TEMP[0].z, TEMP[5].xxxx, IMM[0].yyyy\n"
 				"NOT TEMP[0].z, TEMP[0].zzzz\n"
 				"UIF TEMP[0].zzzz\n"
 					"BRK\n"
 				"ENDIF\n"
 
 				"MOV TEMP[1].y, IMM[0].xxxx\n"
 				"BGNLOOP\n"
 					/* Load start and end. */
-					"UMUL TEMP[5].x, TEMP[1].xxxx, CONST[0].yyyy\n"
-					"UMAD TEMP[5].x, TEMP[1].yyyy, CONST[1].yyyy, TEMP[5].xxxx\n"
+					"UMUL TEMP[5].x, TEMP[1].xxxx, CONST[0][0].yyyy\n"
+					"UMAD TEMP[5].x, TEMP[1].yyyy, CONST[0][1].yyyy, TEMP[5].xxxx\n"
 					"LOAD TEMP[2].xy, BUFFER[0], TEMP[5].xxxx\n"
 
-					"UADD TEMP[5].y, TEMP[5].xxxx, CONST[0].xxxx\n"
+					"UADD TEMP[5].y, TEMP[5].xxxx, CONST[0][0].xxxx\n"
 					"LOAD TEMP[3].xy, BUFFER[0], TEMP[5].yyyy\n"
 
 					"U64ADD TEMP[4].xy, TEMP[3], -TEMP[2]\n"
 
-					"AND TEMP[5].z, CONST[0].wwww, IMM[4].xxxx\n"
+					"AND TEMP[5].z, CONST[0][0].wwww, IMM[4].xxxx\n"
 					"UIF TEMP[5].zzzz\n"
 						/* Load second start/end half-pair and
 						 * take the difference
 						 */
 						"UADD TEMP[5].xy, TEMP[5], IMM[1].wwww\n"
 						"LOAD TEMP[2].xy, BUFFER[0], TEMP[5].xxxx\n"
 						"LOAD TEMP[3].xy, BUFFER[0], TEMP[5].yyyy\n"
 
 						"U64ADD TEMP[3].xy, TEMP[3], -TEMP[2]\n"
 						"U64ADD TEMP[4].xy, TEMP[4], -TEMP[3]\n"
 					"ENDIF\n"
 
 					"U64ADD TEMP[0].xy, TEMP[0], TEMP[4]\n"
 
 					/* Increment pair index */
 					"UADD TEMP[1].y, TEMP[1].yyyy, IMM[1].xxxx\n"
-					"USGE TEMP[5], TEMP[1].yyyy, CONST[1].zzzz\n"
+					"USGE TEMP[5], TEMP[1].yyyy, CONST[0][1].zzzz\n"
 					"UIF TEMP[5]\n"
 						"BRK\n"
 					"ENDIF\n"
 				"ENDLOOP\n"
 
 				/* Increment result index */
 				"UADD TEMP[1].x, TEMP[1].xxxx, IMM[1].xxxx\n"
 			"ENDLOOP\n"
 		"ENDIF\n"
 
-		"AND TEMP[4], CONST[0].wwww, IMM[1].yyyy\n"
+		"AND TEMP[4], CONST[0][0].wwww, IMM[1].yyyy\n"
 		"UIF TEMP[4]\n"
 			/* Store accumulated data for chaining. */
 			"STORE BUFFER[2].xyz, IMM[0].xxxx, TEMP[0]\n"
 		"ELSE\n"
-			"AND TEMP[4], CONST[0].wwww, IMM[1].zzzz\n"
+			"AND TEMP[4], CONST[0][0].wwww, IMM[1].zzzz\n"
 			"UIF TEMP[4]\n"
 				/* Store result availability. */
 				"NOT TEMP[0].z, TEMP[0]\n"
 				"AND TEMP[0].z, TEMP[0].zzzz, IMM[1].xxxx\n"
 				"STORE BUFFER[2].x, IMM[0].xxxx, TEMP[0].zzzz\n"
 
-				"AND TEMP[4], CONST[0].wwww, IMM[2].zzzz\n"
+				"AND TEMP[4], CONST[0][0].wwww, IMM[2].zzzz\n"
 				"UIF TEMP[4]\n"
 					"STORE BUFFER[2].y, IMM[0].xxxx, IMM[0].xxxx\n"
 				"ENDIF\n"
 			"ELSE\n"
 				/* Store result if it is available. */
 				"NOT TEMP[4], TEMP[0].zzzz\n"
 				"UIF TEMP[4]\n"
 					/* Apply timestamp conversion */
-					"AND TEMP[4], CONST[0].wwww, IMM[2].yyyy\n"
+					"AND TEMP[4], CONST[0][0].wwww, IMM[2].yyyy\n"
 					"UIF TEMP[4]\n"
 						"U64MUL TEMP[0].xy, TEMP[0], IMM[3].xyxy\n"
 						"U64DIV TEMP[0].xy, TEMP[0], IMM[3].zwzw\n"
 					"ENDIF\n"
 
 					/* Convert to boolean */
-					"AND TEMP[4], CONST[0].wwww, IMM[1].wwww\n"
+					"AND TEMP[4], CONST[0][0].wwww, IMM[1].wwww\n"
 					"UIF TEMP[4]\n"
 						"U64SNE TEMP[0].x, TEMP[0].xyxy, IMM[4].zwzw\n"
 						"AND TEMP[0].x, TEMP[0].xxxx, IMM[1].xxxx\n"
 						"MOV TEMP[0].y, IMM[0].xxxx\n"
 					"ENDIF\n"
 
-					"AND TEMP[4], CONST[0].wwww, IMM[2].zzzz\n"
+					"AND TEMP[4], CONST[0][0].wwww, IMM[2].zzzz\n"
 					"UIF TEMP[4]\n"
 						"STORE BUFFER[2].xy, IMM[0].xxxx, TEMP[0].xyxy\n"
 					"ELSE\n"
 						/* Clamping */
 						"UIF TEMP[0].yyyy\n"
 							"MOV TEMP[0].x, IMM[0].wwww\n"
 						"ENDIF\n"
 
-						"AND TEMP[4], CONST[0].wwww, IMM[2].wwww\n"
+						"AND TEMP[4], CONST[0][0].wwww, IMM[2].wwww\n"
 						"UIF TEMP[4]\n"
 							"UMIN TEMP[0].x, TEMP[0].xxxx, IMM[0].zzzz\n"
 						"ENDIF\n"
 
 						"STORE BUFFER[2].x, IMM[0].xxxx, TEMP[0].xxxx\n"
 					"ENDIF\n"
 				"ENDIF\n"
 			"ENDIF\n"
 		"ENDIF\n"
 
-- 
2.11.0



More information about the mesa-dev mailing list