nv50: don't eliminate loads to dedicated values
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 31 Jul 2010 18:56:42 +0000 (20:56 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Wed, 4 Aug 2010 22:50:00 +0000 (00:50 +0200)
src/gallium/drivers/nv50/nv50_pc_optimize.c

index 1f2f1630f4b336319993431f31ce56b0861d29da..324f8bb2da6412574ef1d8417caf822713f16a64 100644 (file)
@@ -639,12 +639,10 @@ nv_pass_reload_elim(struct nv_pass_reld_elim *ctx, struct nv_basic_block *b)
             break;
 
       if (it) {
-#if 1
-         nvcg_replace_value(ctx->pc, ld->def[0], it->value);
-#else
-         ld->opcode = NV_OP_MOV;
-         nv_reference(ctx->pc, &ld->src[0], it->value);
-#endif
+         if (ld->def[0]->reg.id >= 0)
+            it->value = ld->def[0];
+         else
+            nvcg_replace_value(ctx->pc, ld->def[0], it->value);
       } else {
          if (ctx->alloc == LOAD_RECORD_POOL_SIZE)
             continue;