diff options
author | Christoph Bumiller <[email protected]> | 2011-02-06 13:09:24 +0100 |
---|---|---|
committer | Christoph Bumiller <[email protected]> | 2011-02-09 16:05:00 +0100 |
commit | c485368efea8527da68a476af4ed48541b5ed93e (patch) | |
tree | cc1ca5524c2f1fde0bb82d7c1030e33d527cbabd /src/gallium/drivers/nvc0 | |
parent | 8e240e6153e089d23f646c7b3f2c5edff7ac223c (diff) |
nvc0: do not generate a backwards jump if a loop ends with BRK
Diffstat (limited to 'src/gallium/drivers/nvc0')
-rw-r--r-- | src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c | 6 |
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 8c0967dfa87..8b6cb0e7c76 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 */ |