summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Lejeune <vljn@ovi.com>2013-03-03 21:35:38 +0100
committerAlex Deucher <alexander.deucher@amd.com>2013-03-05 18:32:53 -0500
commit1dc162d52fab6a7cd5e5e7fd60c9af603a1e541e (patch)
tree1739c8e98d617ab2bd216b1a2bcf9d2b3cbff140
parent9a5f5137739acebfa3408aa8368a5a407ff9ef9c (diff)
r600g: Check comp_mask before merging export instructions
Fixes a llvm uncovered (rare) bug where consecutive exports were merged even if they have incompatible mask. (cherry picked from commit 83e7d111afd8d340ce8fe13ea139271400eb362e)
-rw-r--r--src/gallium/drivers/r600/r600_asm.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 451b07221c2..bda425ce4f8 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -322,6 +322,7 @@ int r600_bytecode_add_output(struct r600_bytecode *bc, const struct r600_bytecod
output->swizzle_y == bc->cf_last->output.swizzle_y &&
output->swizzle_z == bc->cf_last->output.swizzle_z &&
output->swizzle_w == bc->cf_last->output.swizzle_w &&
+ output->comp_mask == bc->cf_last->output.comp_mask &&
(output->burst_count + bc->cf_last->output.burst_count) <= 16) {
if ((output->gpr + output->burst_count) == bc->cf_last->output.gpr &&