From 90ff3c350b5188e9f6ca44234ac48d653cb2c38e Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Mon, 8 Nov 2021 15:33:54 +1000 Subject: [PATCH] nv50/ir: fix ALD/AST where address comes from AL2P Signed-off-by: Ben Skeggs Reviewed-by: Karol Herbst Acked-by: Dave Airlie Part-of: --- src/gallium/drivers/nouveau/codegen/nv50_ir.h | 2 ++ src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gv100.cpp | 2 ++ src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 1 + 3 files changed, 5 insertions(+) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir.h b/src/gallium/drivers/nouveau/codegen/nv50_ir.h index b67cb244b5e..8e9d5f85c9a 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir.h +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir.h @@ -284,6 +284,8 @@ enum operation #define NV50_IR_SUBOP_SHF_C (0 << 2) #define NV50_IR_SUBOP_SHF_W (1 << 2) +#define NV50_IR_SUBOP_VFETCH_PHYS 1 + // xmad(src0, src1, 0) << 16 + src2 #define NV50_IR_SUBOP_XMAD_PSL (1 << 0) // (xmad(src0, src1, src2) & 0xffff) | (src1 << 16) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gv100.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gv100.cpp index 8c958d6f1ff..382273c2893 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gv100.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gv100.cpp @@ -843,6 +843,7 @@ CodeEmitterGV100::emitALD() emitField(74, 2, (insn->getDef(0)->reg.size / 4) - 1); emitGPR (32, insn->src(0).getIndirect(1)); emitO (79); + emitField(77, 1, insn->subOp); // .PHYS emitP (76); emitADDR (24, 40, 10, 0, insn->src(0)); emitGPR (16, insn->def(0)); @@ -854,6 +855,7 @@ CodeEmitterGV100::emitAST() emitInsn (0x322); emitField(74, 2, (typeSizeof(insn->dType) / 4) - 1); emitGPR (64, insn->src(0).getIndirect(1)); + emitField(77, 1, insn->subOp); // .PHYS emitP (76); emitADDR (24, 40, 10, 0, insn->src(0)); emitGPR (32, insn->src(1)); diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp index e57c1c46c6e..6f71a901379 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp @@ -3416,6 +3416,7 @@ NVC0LoweringPass::visit(Instruction *i) addr->reg.data.offset = 0; i->setSrc(0, addr); i->setIndirect(0, 0, afetch->getDef(0)); + i->subOp = NV50_IR_SUBOP_VFETCH_PHYS; } return ret;