summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Bumiller <[email protected]>2012-05-29 17:00:10 +0200
committerChristoph Bumiller <[email protected]>2012-05-29 17:00:10 +0200
commit79eed0d2246e8e7be505784af0078507c712a02c (patch)
tree5be3e1f932e1b9497c76731f3f0f8748877100c2
parent40c224a573f2b763046001e622aafca90f68c693 (diff)
nvc0/ir: allow 64-bit constant loads on nve4
Looks like only 128-bit access doesn't work.
-rw-r--r--src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp2
-rw-r--r--src/gallium/drivers/nvc0/codegen/nv50_ir_target_nvc0.cpp2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp
index cfbe3ecf784..6f34b1aeb3c 100644
--- a/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp
+++ b/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp
@@ -1939,6 +1939,8 @@ FlatteningPass::visit(BasicBlock *bb)
!isTextureOp(insn->op) && // probably just nve4
insn->op != OP_LINTERP && // probably just nve4
insn->op != OP_PINTERP && // probably just nve4
+ ((insn->op != OP_LOAD && insn->op != OP_STORE) ||
+ typeSizeof(insn->dType) <= 4) &&
!insn->isNop()) {
insn->join = 1;
bb->remove(bb->getExit());
diff --git a/src/gallium/drivers/nvc0/codegen/nv50_ir_target_nvc0.cpp b/src/gallium/drivers/nvc0/codegen/nv50_ir_target_nvc0.cpp
index e4b9dc18311..0674f12704d 100644
--- a/src/gallium/drivers/nvc0/codegen/nv50_ir_target_nvc0.cpp
+++ b/src/gallium/drivers/nvc0/codegen/nv50_ir_target_nvc0.cpp
@@ -448,7 +448,7 @@ TargetNVC0::isAccessSupported(DataFile file, DataType ty) const
if (ty == TYPE_NONE)
return false;
if (file == FILE_MEMORY_CONST && getChipset() >= 0xe0) // wrong encoding ?
- return typeSizeof(ty) <= 4;
+ return typeSizeof(ty) <= 8;
if (ty == TYPE_B96)
return (file == FILE_SHADER_INPUT) || (file == FILE_SHADER_OUTPUT);
return true;