nv50/ir: fix off-by-ones in CSE and nvc0 insnCanLoad
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 14 Apr 2012 02:44:28 +0000 (04:44 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 14 Apr 2012 19:54:04 +0000 (21:54 +0200)
src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp
src/gallium/drivers/nvc0/codegen/nv50_ir_target_nvc0.cpp

index 29704c47f038a6be5a6f772bc9e9d89f9241397e..22a4f5a20a9758f8e4c91de15df9d6f7fe8e26e7 100644 (file)
@@ -2073,7 +2073,7 @@ LocalCSE::visit(BasicBlock *bb)
 
       // will need to know the order of instructions
       int serial = 0;
-      for (ir = bb->getEntry(); ir; ir = ir->next)
+      for (ir = bb->getFirst(); ir; ir = ir->next)
          ir->serial = serial++;
 
       for (ir = bb->getEntry(); ir; ir = next) {
index 8f34cacd81b569e7c78cc42b7008582e6ab821bc..04425623bdba633e45971fc38ff34ee66bb30b81 100644 (file)
@@ -394,7 +394,7 @@ TargetNVC0::insnCanLoad(const Instruction *i, int s,
    if (sf == FILE_IMMEDIATE && ld->getSrc(0)->reg.data.u64 == 0)
       return (!i->asTex() && i->op != OP_EXPORT && i->op != OP_STORE);
 
-   if (s > opInfo[i->op].srcNr)
+   if (s >= opInfo[i->op].srcNr)
       return false;
    if (!(opInfo[i->op].srcFiles[s] & (1 << (int)sf)))
       return false;