This affects GF100:GK110 chipsets, but not GM107+ where the logic is a bit different. The emitters tried to emit sub instead of subr when src0 has a NEG modifier.
This fixes the following piglit tests glsl-fs-loop-nested and glsl-vs-loop-nested. Signed-off-by: Samuel Pitoiset <[email protected]> Cc: "13.0" <[email protected]> --- src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp | 2 +- src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp index ce20ed3..dbba4b1 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp @@ -760,7 +760,7 @@ CodeEmitterGK110::emitISAD(const Instruction *i) void CodeEmitterGK110::emitSHLADD(const Instruction *i) { - uint8_t addOp = (i->src(2).mod.neg() << 1) | i->src(0).mod.neg(); + uint8_t addOp = (i->src(0).mod.neg() << 1) | i->src(2).mod.neg(); const ImmediateValue *imm = i->src(1).get()->asImm(); assert(imm); diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp index 0be9f7a..3d3e1cb 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp @@ -762,7 +762,7 @@ CodeEmitterNVC0::emitIMAD(const Instruction *i) void CodeEmitterNVC0::emitSHLADD(const Instruction *i) { - uint8_t addOp = (i->src(2).mod.neg() << 1) | i->src(0).mod.neg(); + uint8_t addOp = (i->src(0).mod.neg() << 1) | i->src(2).mod.neg(); const ImmediateValue *imm = i->src(1).get()->asImm(); assert(imm); -- 2.10.0 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
