[Mesa-dev] [PATCH 5/5] r300g/compiler/tests: Add expected output to .test files

Tom Stellard tom at stellard.net
Sun Jan 5 18:51:21 PST 2014


From: Tom Stellard <thomas.stellard at amd.com>

---
 .../r300/compiler/tests/omod_two_writers.test      |  5 +++
 .../tests/radeon_compiler_optimize_tests.c         | 49 +++++++---------------
 .../tests/radeon_compiler_regalloc_tests.c         | 13 +-----
 .../compiler/tests/regalloc_tex_1d_swizzle.test    |  1 +
 4 files changed, 21 insertions(+), 47 deletions(-)

diff --git a/src/gallium/drivers/r300/compiler/tests/omod_two_writers.test b/src/gallium/drivers/r300/compiler/tests/omod_two_writers.test
index fb16bb0..854b53a 100644
--- a/src/gallium/drivers/r300/compiler/tests/omod_two_writers.test
+++ b/src/gallium/drivers/r300/compiler/tests/omod_two_writers.test
@@ -1,5 +1,10 @@
+const[0] = {     2.0000     0.0000     0.0000     0.0000 }
+
 RCP temp[0].x, const[1].x___;
 RCP temp[0].y, const[1]._y__;
 MUL temp[1].xy, const[0].xx__, temp[0].xy__;
 MOV output[0].xy, temp[1].xy;
 =
+RCP temp\[[0-9]\]\.x \* 2, const\[1\]\.x___;
+RCP temp\[[0-9]\]\.y \* 2, const\[1\]\._y__;
+MOV output\[0\]\.xy, temp\[[0-9]\]\.xy__;
diff --git a/src/gallium/drivers/r300/compiler/tests/radeon_compiler_optimize_tests.c b/src/gallium/drivers/r300/compiler/tests/radeon_compiler_optimize_tests.c
index 3244d93..451e30a 100644
--- a/src/gallium/drivers/r300/compiler/tests/radeon_compiler_optimize_tests.c
+++ b/src/gallium/drivers/r300/compiler/tests/radeon_compiler_optimize_tests.c
@@ -30,58 +30,37 @@
 #include "rc_test_helpers.h"
 #include "unit_test.h"
 
-static unsigned test_rc_optimize(
+static void test_rc_optimize(
 	struct test_result * result,
-	struct radeon_compiler * c,
 	const char * filename)
 {
+	struct radeon_compiler c;
 	struct rc_test_file test_file;
+	unsigned pass = 1;
 
+	init_compiler(&c, RC_FRAGMENT_PROGRAM, 1, 0);
 	test_begin(result);
 
-	if (!load_program(c, &test_file, filename)) {
+	if (load_program(&c, &test_file, filename)) {
+		rc_optimize(&c, NULL);
+		pass = check_program(&c, &test_file);
+	} else {
 		fprintf(stderr, "Failed to load program\n");
-		return 0;
-	}
+		pass = 0;
 
-	rc_optimize(c, NULL);
-	return 1;
+	}
+	test_check(result, pass);
 }
 
-static void test_runner_rc_optimize(struct test_result * result)
+static void test_peephole_mul_omod(struct test_result * result)
 {
-	unsigned pass = 1;
-	struct radeon_compiler c;
-	struct rc_instruction *inst;
-	struct rc_instruction *inst_list[3];
-	unsigned inst_count = 0;
-	float const0[4] = {2.0f, 0.0f, 0.0f, 0.0f};
-
-	init_compiler(&c, RC_FRAGMENT_PROGRAM, 1, 0);
-
-	rc_constants_add_immediate_vec4(&c.Program.Constants, const0);
-
-	test_rc_optimize(result, &c, "omod_two_writers.test");
-
-	for(inst = c.Program.Instructions.Next;
-				inst != &c.Program.Instructions;
-				inst = inst->Next, inst_count++) {
-		inst_list[inst_count] = inst;
-	}
-
-	if (inst_list[0]->U.I.Omod != RC_OMOD_MUL_2 ||
-			inst_list[1]->U.I.Omod != RC_OMOD_MUL_2 ||
-			inst_list[2]->U.I.Opcode != RC_OPCODE_MOV) {
-		pass = 0;
-	}
-
-	test_check(result, pass);
+	test_rc_optimize(result, "omod_two_writers.test");
 }
 
 unsigned radeon_compiler_optimize_run_tests()
 {
 	static struct test tests[] = {
-		{"rc_optimize() => peephole_mul_omod()", test_runner_rc_optimize},
+		{"rc_optimize() => peephole_mul_omod()", test_peephole_mul_omod},
 		{NULL, NULL}
 	};
 	return run_tests(tests);
diff --git a/src/gallium/drivers/r300/compiler/tests/radeon_compiler_regalloc_tests.c b/src/gallium/drivers/r300/compiler/tests/radeon_compiler_regalloc_tests.c
index 70ba748..af6335d 100644
--- a/src/gallium/drivers/r300/compiler/tests/radeon_compiler_regalloc_tests.c
+++ b/src/gallium/drivers/r300/compiler/tests/radeon_compiler_regalloc_tests.c
@@ -62,18 +62,7 @@ static void test_runner_rc_regalloc(
 	rc_pair_remove_dead_sources(c, NULL);
 	rc_pair_regalloc(c, &do_full_regalloc);
 
-	for(inst = c->Program.Instructions.Next;
-				inst != &c->Program.Instructions;
-				inst = inst->Next) {
-		if (inst->Type == RC_INSTRUCTION_NORMAL &&
-				inst->U.I.Opcode != RC_OPCODE_BEGIN_TEX) {
-			if (GET_SWZ(inst->U.I.SrcReg[0].Swizzle, 0)
-							!= RC_SWIZZLE_X) {
-				pass = 0;
-			}
-		}
-	}
-
+	pass = check_program(c, &test_file);
 	test_check(result, pass);
 }
 
diff --git a/src/gallium/drivers/r300/compiler/tests/regalloc_tex_1d_swizzle.test b/src/gallium/drivers/r300/compiler/tests/regalloc_tex_1d_swizzle.test
index 8ecfcc1..1f75df2 100644
--- a/src/gallium/drivers/r300/compiler/tests/regalloc_tex_1d_swizzle.test
+++ b/src/gallium/drivers/r300/compiler/tests/regalloc_tex_1d_swizzle.test
@@ -13,3 +13,4 @@ const[0] = {     0.0000     2.0000     1.0000     0.0000 }
  11: MUL temp[21].xyz, temp[17].xyz_, temp[18].xxx_;
  12: MUL output[0].xyz, temp[21].xyz_, temp[20].www_;
 =
+TEX temp\[[0-9]\]\.x, temp\[[0-9]\]\.x___, 2D_ARRAY\[0\]
-- 
1.8.1.5



More information about the mesa-dev mailing list