diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp index 727801b9d4b..d2255c2cd2b 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp @@ -387,6 +387,12 @@ TargetNVC0::insnCanLoad(const Instruction *i, int s, } } + // only loads can do sub 4 byte addressing + if (sf == FILE_MEMORY_CONST && + (ld->getSrc(0)->reg.data.offset & 0x3) + && i->op != OP_LOAD) + return false; + // not all instructions support full 32 bit immediates if (sf == FILE_IMMEDIATE) { Storage ® = ld->getSrc(0)->asImm()->reg;