diff --git a/llvm/lib/Target/AMDGPU/AMDGPUExportClustering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUExportClustering.cpp --- a/llvm/lib/Target/AMDGPU/AMDGPUExportClustering.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUExportClustering.cpp @@ -33,7 +33,7 @@ static bool isPositionExport(const SIInstrInfo *TII, SUnit *SU) { const MachineInstr *MI = SU->getInstr(); int Imm = TII->getNamedOperand(*MI, AMDGPU::OpName::tgt)->getImm(); - return Imm >= 12 && Imm <= 15; + return Imm >= AMDGPU::Exp::ET_POS0 && Imm <= AMDGPU::Exp::ET_POS3; } static void sortChain(const SIInstrInfo *TII, SmallVector &Chain, diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp --- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp +++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @@ -5840,21 +5840,21 @@ OperandMatchResultTy AMDGPUAsmParser::parseExpTgtImpl(StringRef Str, uint8_t &Val) { if (Str == "null") { - Val = 9; + Val = Exp::ET_NULL; return MatchOperand_Success; } if (Str.startswith("mrt")) { Str = Str.drop_front(3); if (Str == "z") { // == mrtz - Val = 8; + Val = Exp::ET_MRTZ; return MatchOperand_Success; } if (Str.getAsInteger(10, Val)) return MatchOperand_ParseFail; - if (Val > 7) + if (Val > Exp::ET_MRT7) return MatchOperand_ParseFail; return MatchOperand_Success; @@ -5865,15 +5865,15 @@ if (Str.getAsInteger(10, Val)) return MatchOperand_ParseFail; - if (Val > 4 || (Val == 4 && !isGFX10())) + if (Val > (isGFX10() ? 4 : 3)) return MatchOperand_ParseFail; - Val += 12; + Val += Exp::ET_POS0; return MatchOperand_Success; } if (isGFX10() && Str == "prim") { - Val = 20; + Val = Exp::ET_PRIM; return MatchOperand_Success; } @@ -5885,7 +5885,7 @@ if (Val >= 32) return MatchOperand_ParseFail; - Val += 32; + Val += Exp::ET_PARAM0; return MatchOperand_Success; } diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp @@ -1016,18 +1016,19 @@ // This is really a 6 bit field. uint32_t Tgt = MI->getOperand(OpNo).getImm() & ((1 << 6) - 1); - if (Tgt <= 7) - O << " mrt" << Tgt; - else if (Tgt == 8) + if (Tgt <= Exp::ET_MRT7) + O << " mrt" << Tgt - Exp::ET_MRT0; + else if (Tgt == Exp::ET_MRTZ) O << " mrtz"; - else if (Tgt == 9) + else if (Tgt == Exp::ET_NULL) O << " null"; - else if ((Tgt >= 12 && Tgt <= 15) || (Tgt == 16 && AMDGPU::isGFX10(STI))) - O << " pos" << Tgt - 12; - else if (AMDGPU::isGFX10(STI) && Tgt == 20) + else if (Tgt >= Exp::ET_POS0 && + Tgt <= (isGFX10(STI) ? Exp::ET_POS4 : Exp::ET_POS3)) + O << " pos" << Tgt - Exp::ET_POS0; + else if (isGFX10(STI) && Tgt == Exp::ET_PRIM) O << " prim"; - else if (Tgt >= 32 && Tgt <= 63) - O << " param" << Tgt - 32; + else if (Tgt >= Exp::ET_PARAM0 && Tgt <= Exp::ET_PARAM31) + O << " param" << Tgt - Exp::ET_PARAM0; else { // Reserved values 10, 11 O << " invalid_target_" << Tgt; diff --git a/llvm/lib/Target/AMDGPU/SIDefines.h b/llvm/lib/Target/AMDGPU/SIDefines.h --- a/llvm/lib/Target/AMDGPU/SIDefines.h +++ b/llvm/lib/Target/AMDGPU/SIDefines.h @@ -688,6 +688,23 @@ }; } // namespace DPP + +namespace Exp { + +enum Target { + ET_MRT0 = 0, + ET_MRT7 = 7, + ET_MRTZ = 8, + ET_NULL = 9, + ET_POS0 = 12, + ET_POS3 = 15, + ET_POS4 = 16, // GFX10+ + ET_PRIM = 20, // GFX10+ + ET_PARAM0 = 32, + ET_PARAM31 = 63, +}; + +} // namespace Exp } // namespace AMDGPU #define R_00B028_SPI_SHADER_PGM_RSRC1_PS 0x00B028 diff --git a/llvm/lib/Target/AMDGPU/SIInsertSkips.cpp b/llvm/lib/Target/AMDGPU/SIInsertSkips.cpp --- a/llvm/lib/Target/AMDGPU/SIInsertSkips.cpp +++ b/llvm/lib/Target/AMDGPU/SIInsertSkips.cpp @@ -170,7 +170,7 @@ const SIInstrInfo *TII) { // Generate "null export; s_endpgm". BuildMI(MBB, I, DL, TII->get(AMDGPU::EXP_DONE)) - .addImm(0x09) // V_008DFC_SQ_EXP_NULL + .addImm(AMDGPU::Exp::ET_NULL) .addReg(AMDGPU::VGPR0, RegState::Undef) .addReg(AMDGPU::VGPR0, RegState::Undef) .addReg(AMDGPU::VGPR0, RegState::Undef) diff --git a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp --- a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp +++ b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp @@ -1325,9 +1325,9 @@ } } else if (SIInstrInfo::isEXP(Inst)) { int Imm = TII->getNamedOperand(Inst, AMDGPU::OpName::tgt)->getImm(); - if (Imm >= 32 && Imm <= 63) + if (Imm >= AMDGPU::Exp::ET_PARAM0 && Imm <= AMDGPU::Exp::ET_PARAM31) ScoreBrackets->updateByEvent(TII, TRI, MRI, EXP_PARAM_ACCESS, Inst); - else if (Imm >= 12 && Imm <= 15) + else if (Imm >= AMDGPU::Exp::ET_POS0 && Imm <= AMDGPU::Exp::ET_POS3) ScoreBrackets->updateByEvent(TII, TRI, MRI, EXP_POS_ACCESS, Inst); else ScoreBrackets->updateByEvent(TII, TRI, MRI, EXP_GPR_LOCK, Inst);