Mesa (master): nvc0: store only one value per basic block for TGSI regs

Christoph Bumiller chrisbmr at kemper.freedesktop.org
Wed Feb 9 15:05:53 UTC 2011


Module: Mesa
Branch: master
Commit: 8e240e6153e089d23f646c7b3f2c5edff7ac223c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e240e6153e089d23f646c7b3f2c5edff7ac223c

Author: Christoph Bumiller <e0425955 at student.tuwien.ac.at>
Date:   Mon Feb  7 19:05:55 2011 +0100

nvc0: store only one value per basic block for TGSI regs

---

 src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c b/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c
index f53af6c..8c0967d 100644
--- a/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c
+++ b/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c
@@ -63,7 +63,13 @@ bld_register_access(struct bld_register *reg, unsigned i)
 static INLINE void
 bld_register_add_val(struct bld_register *reg, struct nv_value *val)
 {
-   util_dynarray_append(&reg->vals, struct nv_value *, val);
+   struct nv_basic_block *bb = val->insn->bb;
+
+   if (reg->vals.size &&
+       (util_dynarray_top(&reg->vals, struct nv_value *))->insn->bb == bb)
+      *(util_dynarray_top_ptr(&reg->vals, struct nv_value *)) = val;
+   else
+      util_dynarray_append(&reg->vals, struct nv_value *, val);
 }
 
 static INLINE boolean




More information about the mesa-commit mailing list