Browse Source

nv50/ir/opt: swap VP inputs to first source where possible

tags/i965-primitive-restart-v2
Christoph Bumiller 13 years ago
parent
commit
90b5301cea
1 changed files with 17 additions and 0 deletions
  1. 17
    0
      src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp

+ 17
- 0
src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp View File

@@ -123,6 +123,7 @@ private:

bool isCSpaceLoad(Instruction *);
bool isImmd32Load(Instruction *);
bool isAttribOrSharedLoad(Instruction *);
};

bool
@@ -139,6 +140,16 @@ LoadPropagation::isImmd32Load(Instruction *ld)
return ld->src(0).getFile() == FILE_IMMEDIATE;
}

bool
LoadPropagation::isAttribOrSharedLoad(Instruction *ld)
{
return ld &&
(ld->op == OP_VFETCH ||
(ld->op == OP_LOAD &&
(ld->src(0).getFile() == FILE_SHADER_INPUT ||
ld->src(0).getFile() == FILE_MEMORY_SHARED)));
}

void
LoadPropagation::checkSwapSrc01(Instruction *insn)
{
@@ -162,6 +173,12 @@ LoadPropagation::checkSwapSrc01(Instruction *insn)
insn->swapSources(0, 1);
else
return;
} else
if (isAttribOrSharedLoad(i1)) {
if (!isAttribOrSharedLoad(i0))
insn->swapSources(0, 1);
else
return;
} else {
return;
}

Loading…
Cancel
Save