I wanted to flip things over and use smxx notation... On Apr 10, 2017 6:20 PM, "Samuel Pitoiset" <samuel.pitoi...@gmail.com> wrote:
> Not sure why you get confused here. The chipset names are globally > consistent inside the codegen part and we never use SMxx. Maybe add a > comment like: > > #define NVISA_GK104_CHIPSET 0xe0 /* SM30 */ > > If you really need this? > > On 04/10/2017 11:41 PM, Matthew Mondazzi wrote: > >> Define references to chipset did not actually use chipset, leading to >> confusion. More relevant ISA constants put in place of chipset compares. >> >> Signed-off-by: Matthew Mondazzi <msmonda...@gmail.com> >> --- >> .../drivers/nouveau/codegen/nv50_ir_driver.h | 7 ++-- >> .../drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp | 24 +++++------ >> .../nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 46 >> +++++++++++----------- >> .../nouveau/codegen/nv50_ir_target_nvc0.cpp | 6 +-- >> 4 files changed, 42 insertions(+), 41 deletions(-) >> >> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h >> b/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h >> index e7d840d..76c815e 100644 >> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h >> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h >> @@ -75,9 +75,10 @@ struct nv50_ir_prog_symbol >> uint32_t offset; >> }; >> -#define NVISA_GK104_CHIPSET 0xe0 >> -#define NVISA_GK20A_CHIPSET 0xea >> -#define NVISA_GM107_CHIPSET 0x110 >> +#define NVISA_SM30 0xe0 >> +#define NVISA_SM35 0xea >> +#define NVISA_SM50 0x110 >> + >> struct nv50_ir_prog_info >> { >> 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 5467447..ed29661 100644 >> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp >> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp >> @@ -806,7 +806,7 @@ CodeEmitterNVC0::emitSHLADD(const Instruction *i) >> void >> CodeEmitterNVC0::emitMADSP(const Instruction *i) >> { >> - assert(targ->getChipset() >= NVISA_GK104_CHIPSET); >> + assert(targ->getChipset() >= NVISA_SM30); >> emitForm_A(i, HEX64(00000000, 00000003)); >> @@ -1852,7 +1852,7 @@ CodeEmitterNVC0::emitSTORE(const Instruction *i) >> case FILE_MEMORY_LOCAL: opc = 0xc8000000; break; >> case FILE_MEMORY_SHARED: >> if (i->subOp == NV50_IR_SUBOP_STORE_UNLOCKED) { >> - if (targ->getChipset() >= NVISA_GK104_CHIPSET) >> + if (targ->getChipset() >= NVISA_SM30) >> opc = 0xb8000000; >> else >> opc = 0xcc000000; >> @@ -1868,7 +1868,7 @@ CodeEmitterNVC0::emitSTORE(const Instruction *i) >> code[0] = 0x00000005; >> code[1] = opc; >> - if (targ->getChipset() >= NVISA_GK104_CHIPSET) { >> + if (targ->getChipset() >= NVISA_SM30) { >> // Unlocked store on shared memory can fail. >> if (i->src(0).getFile() == FILE_MEMORY_SHARED && >> i->subOp == NV50_IR_SUBOP_STORE_UNLOCKED) { >> @@ -1901,7 +1901,7 @@ CodeEmitterNVC0::emitLOAD(const Instruction *i) >> case FILE_MEMORY_LOCAL: opc = 0xc0000000; break; >> case FILE_MEMORY_SHARED: >> if (i->subOp == NV50_IR_SUBOP_LOAD_LOCKED) { >> - if (targ->getChipset() >= NVISA_GK104_CHIPSET) >> + if (targ->getChipset() >= NVISA_SM30) >> opc = 0xa8000000; >> else >> opc = 0xc4000000; >> @@ -1944,7 +1944,7 @@ CodeEmitterNVC0::emitLOAD(const Instruction *i) >> code[0] |= 63 << 14; >> if (p >= 0) { >> - if (targ->getChipset() >= NVISA_GK104_CHIPSET) >> + if (targ->getChipset() >= NVISA_SM30) >> defId(i->def(p), 8); >> else >> defId(i->def(p), 32 + 18); >> @@ -2362,7 +2362,7 @@ CodeEmitterNVC0::emitSUSTGx(const TexInstruction >> *i) >> void >> CodeEmitterNVC0::emitSUAddr(const TexInstruction *i) >> { >> - assert(targ->getChipset() < NVISA_GK104_CHIPSET); >> + assert(targ->getChipset() < NVISA_SM30); >> if (i->tex.rIndirectSrc < 0) { >> code[1] |= 0x00004000; >> @@ -2375,7 +2375,7 @@ CodeEmitterNVC0::emitSUAddr(const TexInstruction >> *i) >> void >> CodeEmitterNVC0::emitSUDim(const TexInstruction *i) >> { >> - assert(targ->getChipset() < NVISA_GK104_CHIPSET); >> + assert(targ->getChipset() < NVISA_SM30); >> code[1] |= (i->tex.target.getDim() - 1) << 12; >> if (i->tex.target.isArray() || i->tex.target.isCube() || >> @@ -2390,7 +2390,7 @@ CodeEmitterNVC0::emitSUDim(const TexInstruction *i) >> void >> CodeEmitterNVC0::emitSULEA(const TexInstruction *i) >> { >> - assert(targ->getChipset() < NVISA_GK104_CHIPSET); >> + assert(targ->getChipset() < NVISA_SM30); >> code[0] = 0x5; >> code[1] = 0xf0000000; >> @@ -2413,7 +2413,7 @@ CodeEmitterNVC0::emitSULEA(const TexInstruction *i) >> void >> CodeEmitterNVC0::emitSULDB(const TexInstruction *i) >> { >> - assert(targ->getChipset() < NVISA_GK104_CHIPSET); >> + assert(targ->getChipset() < NVISA_SM30); >> code[0] = 0x5; >> code[1] = 0xd4000000 | (i->subOp << 15); >> @@ -2431,7 +2431,7 @@ CodeEmitterNVC0::emitSULDB(const TexInstruction *i) >> void >> CodeEmitterNVC0::emitSUSTx(const TexInstruction *i) >> { >> - assert(targ->getChipset() < NVISA_GK104_CHIPSET); >> + assert(targ->getChipset() < NVISA_SM30); >> code[0] = 0x5; >> code[1] = 0xdc000000 | (i->subOp << 15); >> @@ -2751,14 +2751,14 @@ CodeEmitterNVC0::emitInstruction(Instruction >> *insn) >> emitMADSP(insn); >> break; >> case OP_SULDB: >> - if (targ->getChipset() >= NVISA_GK104_CHIPSET) >> + if (targ->getChipset() >= NVISA_SM30) >> emitSULDGB(insn->asTex()); >> else >> emitSULDB(insn->asTex()); >> break; >> case OP_SUSTB: >> case OP_SUSTP: >> - if (targ->getChipset() >= NVISA_GK104_CHIPSET) >> + if (targ->getChipset() >= NVISA_SM30) >> emitSUSTGx(insn->asTex()); >> else >> emitSUSTx(insn->asTex()); >> 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 732e1a9..a887436 100644 >> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp >> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp >> @@ -129,11 +129,11 @@ NVC0LegalizeSSA::handleTEXLOD(TexInstruction *i) >> // SM30+ stores the indirect handle as a separate arg, which comes >> before >> // the LOD. >> - if (prog->getTarget()->getChipset() >= NVISA_GK104_CHIPSET && >> + if (prog->getTarget()->getChipset() >= NVISA_SM30 && >> i->tex.rIndirectSrc >= 0) >> arg++; >> // SM20 stores indirect handle combined with array coordinate >> - if (prog->getTarget()->getChipset() < NVISA_GK104_CHIPSET && >> + if (prog->getTarget()->getChipset() < NVISA_SM30 && >> !i->tex.target.isArray() && >> i->tex.rIndirectSrc >= 0) >> arg++; >> @@ -162,7 +162,7 @@ NVC0LegalizeSSA::handleShift(Instruction *lo) >> // SM30 and prior don't have the fancy new SHF.L/R ops. So the logic >> has to >> // be completely emulated. For SM35+, we can use the more directed >> SHF >> // operations. >> - if (prog->getTarget()->getChipset() < NVISA_GK20A_CHIPSET) { >> + if (prog->getTarget()->getChipset() < NVISA_SM35) { >> // The strategy here is to handle shifts >= 32 and less than 32 as >> // separate parts. >> // >> @@ -629,7 +629,7 @@ NVC0LegalizePostRA::visit(Function *fn) >> pOne = new_LValue(fn, FILE_PREDICATE); >> carry = new_LValue(fn, FILE_FLAGS); >> - rZero->reg.data.id = (prog->getTarget()->getChipset() >= >> NVISA_GK20A_CHIPSET) ? 255 : 63; >> + rZero->reg.data.id = (prog->getTarget()->getChipset() >= NVISA_SM35) >> ? 255 : 63; >> carry->reg.data.id = 0; >> pOne->reg.data.id = 7; >> @@ -860,7 +860,7 @@ NVC0LoweringPass::handleTEX(TexInstruction *i) >> // array + offsets >> // derivatives >> - if (chipset >= NVISA_GK104_CHIPSET) { >> + if (chipset >= NVISA_SM30) { >> if (i->tex.rIndirectSrc >= 0 || i->tex.sIndirectSrc >= 0) { >> // XXX this ignores tsc, and assumes a 1:1 mapping >> assert(i->tex.rIndirectSrc >= 0); >> @@ -976,14 +976,14 @@ NVC0LoweringPass::handleTEX(TexInstruction *i) >> // does. Right now we don't know how to pass both in, and this case >> can't >> // happen with OpenGL. On nve0, the sample id is part of the texture >> // coordinate argument. >> - assert(chipset >= NVISA_GK104_CHIPSET || >> + assert(chipset >= NVISA_SM30 || >> !i->tex.useOffsets || !i->tex.target.isMS()); >> // offset is between lod and dc >> if (i->tex.useOffsets) { >> int n, c; >> int s = i->srcCount(0xff, true); >> - if (i->op != OP_TXD || chipset < NVISA_GK104_CHIPSET) { >> + if (i->op != OP_TXD || chipset < NVISA_SM30) { >> if (i->tex.target.isShadow()) >> s--; >> if (i->srcExists(s)) // move potential predicate out of the way >> @@ -1020,7 +1020,7 @@ NVC0LoweringPass::handleTEX(TexInstruction *i) >> assert(!"non-immediate offset passed to non-TXG"); >> imm |= (val.reg.data.u32 & 0xf) << (c * 4); >> } >> - if (i->op == OP_TXD && chipset >= NVISA_GK104_CHIPSET) { >> + if (i->op == OP_TXD && chipset >= NVISA_SM30) { >> // The offset goes into the upper 16 bits of the array >> index. So >> // create it if it's not already there, and INSBF it if it >> already >> // is. >> @@ -1041,7 +1041,7 @@ NVC0LoweringPass::handleTEX(TexInstruction *i) >> } >> } >> - if (chipset >= NVISA_GK104_CHIPSET) { >> + if (chipset >= NVISA_SM30) { >> // >> // If TEX requires more than 4 sources, the 2nd register tuple >> must be >> // aligned to 4, even if it consists of just a single 4-byte >> register. >> @@ -1083,7 +1083,7 @@ NVC0LoweringPass::handleManualTXD(TexInstruction >> *i) >> // indirect are separate (and both precede the coordinates). Maxwell >> is >> // handled in a separate function. >> unsigned array; >> - if (targ->getChipset() < NVISA_GK104_CHIPSET) >> + if (targ->getChipset() < NVISA_SM30) >> array = i->tex.target.isArray() || i->tex.rIndirectSrc >= 0; >> else >> array = i->tex.target.isArray() + (i->tex.rIndirectSrc >= 0); >> @@ -1152,7 +1152,7 @@ NVC0LoweringPass::handleTXD(TexInstruction *txd) >> unsigned expected_args = arg; >> const int chipset = prog->getTarget()->getChipset(); >> - if (chipset >= NVISA_GK104_CHIPSET) { >> + if (chipset >= NVISA_SM30) { >> if (!txd->tex.target.isArray() && txd->tex.useOffsets) >> expected_args++; >> if (txd->tex.rIndirectSrc >= 0 || txd->tex.sIndirectSrc >= 0) >> @@ -1189,7 +1189,7 @@ NVC0LoweringPass::handleTXD(TexInstruction *txd) >> // In this case we have fewer than 4 "real" arguments, which means >> that >> // handleTEX didn't apply any padding. However we have to make sure >> that >> // the second "group" of arguments still gets padded up to 4. >> - if (chipset >= NVISA_GK104_CHIPSET) { >> + if (chipset >= NVISA_SM30) { >> int s = arg + 2 * dim; >> if (s >= 4 && s < 7) { >> if (txd->srcExists(s)) // move potential predicate out of the >> way >> @@ -1206,7 +1206,7 @@ bool >> NVC0LoweringPass::handleTXQ(TexInstruction *txq) >> { >> const int chipset = prog->getTarget()->getChipset(); >> - if (chipset >= NVISA_GK104_CHIPSET && txq->tex.rIndirectSrc < 0) >> + if (chipset >= NVISA_SM30 && txq->tex.rIndirectSrc < 0) >> txq->tex.r += prog->driver->io.texBindBase / 4; >> if (txq->tex.rIndirectSrc < 0) >> @@ -1219,7 +1219,7 @@ NVC0LoweringPass::handleTXQ(TexInstruction *txq) >> assert(ticRel); >> - if (chipset < NVISA_GK104_CHIPSET) { >> + if (chipset < NVISA_SM30) { >> LValue *src = new_LValue(func, FILE_GPR); // 0xttxsaaaa >> txq->setSrc(txq->tex.rIndirectSrc, NULL); >> @@ -1501,9 +1501,9 @@ NVC0LoweringPass::handleATOM(Instruction *atom) >> case FILE_MEMORY_SHARED: >> // For Fermi/Kepler, we have to use ld lock/st unlock to perform >> atomic >> // operations on shared memory. For Maxwell, ATOMS is enough. >> - if (targ->getChipset() < NVISA_GK104_CHIPSET) >> + if (targ->getChipset() < NVISA_SM30) >> handleSharedATOM(atom); >> - else if (targ->getChipset() < NVISA_GM107_CHIPSET) >> + else if (targ->getChipset() < NVISA_SM50) >> handleSharedATOMNVE4(atom); >> return true; >> default: >> @@ -1552,7 +1552,7 @@ NVC0LoweringPass::handleATOM(Instruction *atom) >> bool >> NVC0LoweringPass::handleCasExch(Instruction *cas, bool needCctl) >> { >> - if (targ->getChipset() < NVISA_GM107_CHIPSET) { >> + if (targ->getChipset() < NVISA_SM50) { >> if (cas->src(0).getFile() == FILE_MEMORY_SHARED) { >> // ATOM_CAS and ATOM_EXCH are handled in handleSharedATOM(). >> return false; >> @@ -2391,7 +2391,7 @@ NVC0LoweringPass::handleLDST(Instruction *i) >> assert(prog->getType() != Program::TYPE_FRAGMENT); // INTERP >> } >> } else if (i->src(0).getFile() == FILE_MEMORY_CONST) { >> - if (targ->getChipset() >= NVISA_GK104_CHIPSET && >> + if (targ->getChipset() >= NVISA_SM30 && >> prog->getType() == Program::TYPE_COMPUTE) { >> // The launch descriptor only allows to set up 8 CBs, but >> OpenGL >> // requires at least 12 UBOs. To bypass this limitation, we >> store the >> @@ -2568,7 +2568,7 @@ NVC0LoweringPass::handleRDSV(Instruction *i) >> case SV_NTID: >> case SV_NCTAID: >> case SV_GRIDID: >> - assert(targ->getChipset() >= NVISA_GK104_CHIPSET); // mov $sreg >> otherwise >> + assert(targ->getChipset() >= NVISA_SM30); // mov $sreg otherwise >> if (sym->reg.data.sv.index == 3) { >> i->op = OP_MOV; >> i->setSrc(0, bld.mkImm(sv == SV_GRIDID ? 0 : 1)); >> @@ -2845,9 +2845,9 @@ NVC0LoweringPass::visit(Instruction *i) >> case OP_SUSTP: >> case OP_SUREDB: >> case OP_SUREDP: >> - if (targ->getChipset() >= NVISA_GM107_CHIPSET) >> + if (targ->getChipset() >= NVISA_SM50) >> handleSurfaceOpGM107(i->asTex()); >> - else if (targ->getChipset() >= NVISA_GK104_CHIPSET) >> + else if (targ->getChipset() >= NVISA_SM30) >> handleSurfaceOpNVE4(i->asTex()); >> else >> handleSurfaceOpNVC0(i->asTex()); >> @@ -2869,13 +2869,13 @@ NVC0LoweringPass::visit(Instruction *i) >> * interpolation ops in frag shaders. >> */ >> bool doAfetch = false; >> - if (targ->getChipset() >= NVISA_GK104_CHIPSET && >> + if (targ->getChipset() >= NVISA_SM30 && >> !i->perPatch && >> (i->op == OP_VFETCH || i->op == OP_EXPORT) && >> i->src(0).isIndirect(0)) { >> doAfetch = true; >> } >> - if (targ->getChipset() >= NVISA_GM107_CHIPSET && >> + if (targ->getChipset() >= NVISA_SM50 && >> (i->op == OP_LINTERP || i->op == OP_PINTERP) && >> i->src(0).isIndirect(0)) { >> doAfetch = true; >> 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 0df528f..62c3740 100644 >> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp >> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp >> @@ -279,7 +279,7 @@ TargetNVC0::getSVAddress(DataFile shaderFile, const >> Symbol *sym) const >> const SVSemantic sv = sym->reg.data.sv.sv; >> const bool isInput = shaderFile == FILE_SHADER_INPUT; >> - const bool kepler = getChipset() >= NVISA_GK104_CHIPSET; >> + const bool kepler = getChipset() >= NVISA_SM30; >> switch (sv) { >> case SV_POSITION: return 0x070 + idx * 4; >> @@ -407,10 +407,10 @@ TargetNVC0::isAccessSupported(DataFile file, >> DataType ty) const >> if (ty == TYPE_NONE) >> return false; >> if (file == FILE_MEMORY_CONST) { >> - if (getChipset() >= NVISA_GM107_CHIPSET) >> + if (getChipset() >= NVISA_SM50) >> return typeSizeof(ty) <= 4; >> else >> - if (getChipset() >= NVISA_GK104_CHIPSET) // wrong encoding ? >> + if (getChipset() >= NVISA_SM30) // wrong encoding ? >> return typeSizeof(ty) <= 8; >> } >> if (ty == TYPE_B96) >> >> _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev