summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>2011-02-06 13:09:24 +0100
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>2011-02-09 16:05:00 +0100
commitc485368efea8527da68a476af4ed48541b5ed93e (patch)
treecc1ca5524c2f1fde0bb82d7c1030e33d527cbabd /src
parent8e240e6153e089d23f646c7b3f2c5edff7ac223c (diff)
nvc0: do not generate a backwards jump if a loop ends with BRK
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c b/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c
index 8c0967dfa8..8b6cb0e7c7 100644
--- a/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c
+++ b/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c
@@ -1693,9 +1693,11 @@ bld_instruction(struct bld_context *bld,
{
struct nv_basic_block *bb = bld->loop_bb[bld->loop_lvl - 1];
- bld_flow(bld, NV_OP_BRA, NULL, bb, FALSE);
+ if (bld->out_kind != CFG_EDGE_FAKE) { /* else we already had BRK/CONT */
+ bld_flow(bld, NV_OP_BRA, NULL, bb, FALSE);
- nvc0_bblock_attach(bld->pc->current_block, bb, CFG_EDGE_BACK);
+ nvc0_bblock_attach(bld->pc->current_block, bb, CFG_EDGE_BACK);
+ }
bld_loop_end(bld, bb); /* replace loop-side operand of the phis */