diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td --- a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td +++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td @@ -123,21 +123,27 @@ def InstFlag : OperandWithDefaultOps ; -class CustomOperandClass +class CustomOperandClass : AsmOperandClass { let Name = name; let PredicateMethod = "is"#name; let ParserMethod = parserMethod; let RenderMethod = "addImmOperands"; let IsOptional = optional; - let DefaultMethod = "default"#name; + let DefaultMethod = defaultMethod; } class CustomOperandProps { + string ImmTy = "ImmTy"#name; string ParserMethod = "parse"#name; + string DefaultValue = "0"; + string DefaultMethod = "[this]() { return "# + "AMDGPUOperand::CreateImm(this, "#DefaultValue#", SMLoc(), "# + "AMDGPUOperand::"#ImmTy#"); }"; string PrintMethod = "print"#name; AsmOperandClass ParserMatchClass = - CustomOperandClass; + CustomOperandClass; string OperandType = "OPERAND_IMMEDIATE"; } @@ -147,6 +153,7 @@ class ImmOperand : CustomOperand { + let ImmTy = "ImmTyNone"; let ParserMethod = ""; let PrintMethod = printer; } 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 @@ -1754,13 +1754,6 @@ void cvtMubufAtomic(MCInst &Inst, const OperandVector &Operands) { cvtMubufImpl(Inst, Operands, true); } void cvtMtbuf(MCInst &Inst, const OperandVector &Operands); - AMDGPUOperand::Ptr defaultCPol() const; - - AMDGPUOperand::Ptr defaultSMRDOffset8() const; - AMDGPUOperand::Ptr defaultSMEMOffset() const; - AMDGPUOperand::Ptr defaultSMEMOffsetMod() const; - AMDGPUOperand::Ptr defaultFlatOffset() const; - OperandMatchResultTy parseOModSI(OperandVector &Operands); void cvtVOP3(MCInst &Inst, const OperandVector &Operands, @@ -1792,10 +1785,6 @@ bool isSupportedDPPCtrl(StringRef Ctrl, const OperandVector &Operands); int64_t parseDPPCtrlSel(StringRef Ctrl); int64_t parseDPPCtrlPerm(); - AMDGPUOperand::Ptr defaultDppRowMask() const; - AMDGPUOperand::Ptr defaultDppBankMask() const; - AMDGPUOperand::Ptr defaultDppBoundCtrl() const; - AMDGPUOperand::Ptr defaultDppFI() const; void cvtDPP(MCInst &Inst, const OperandVector &Operands, bool IsDPP8 = false); void cvtDPP8(MCInst &Inst, const OperandVector &Operands) { cvtDPP(Inst, Operands, true); @@ -1819,15 +1808,8 @@ bool SkipDstVcc = false, bool SkipSrcVcc = false); - AMDGPUOperand::Ptr defaultBLGP() const; - AMDGPUOperand::Ptr defaultCBSZ() const; - AMDGPUOperand::Ptr defaultABID() const; - OperandMatchResultTy parseEndpgmImm(OperandVector &Operands); - AMDGPUOperand::Ptr defaultEndpgmImm() const; - AMDGPUOperand::Ptr defaultWaitVDST() const; - AMDGPUOperand::Ptr defaultWaitEXP() const; OperandMatchResultTy parseVOPD(OperandVector &Operands); }; @@ -7736,10 +7718,6 @@ // mubuf //===----------------------------------------------------------------------===// -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultCPol() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyCPol); -} - void AMDGPUAsmParser::cvtMubufImpl(MCInst &Inst, const OperandVector &Operands, bool IsAtomic) { @@ -7979,23 +7957,6 @@ return isImmLiteral() && !isUInt<8>(getImm()) && isUInt<32>(getImm()); } -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultSMRDOffset8() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyNone); -} - -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultSMEMOffset() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc()); -} - -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultSMEMOffsetMod() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), - AMDGPUOperand::ImmTySMEMOffsetMod); -} - -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultFlatOffset() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyOffset); -} - //===----------------------------------------------------------------------===// // vop3 //===----------------------------------------------------------------------===// @@ -8709,26 +8670,6 @@ return MatchOperand_Success; } -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultDppRowMask() const { - return AMDGPUOperand::CreateImm(this, 0xf, SMLoc(), AMDGPUOperand::ImmTyDppRowMask); -} - -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultEndpgmImm() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyEndpgmImm); -} - -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultDppBankMask() const { - return AMDGPUOperand::CreateImm(this, 0xf, SMLoc(), AMDGPUOperand::ImmTyDppBankMask); -} - -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultDppBoundCtrl() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyDppBoundCtrl); -} - -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultDppFI() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyDppFI); -} - void AMDGPUAsmParser::cvtVOP3DPP(MCInst &Inst, const OperandVector &Operands, bool IsDPP8) { OptionalImmIndexMap OptionalIdx; @@ -9088,18 +9029,6 @@ // mAI //===----------------------------------------------------------------------===// -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultBLGP() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyBLGP); -} - -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultCBSZ() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyCBSZ); -} - -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultABID() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyABID); -} - /// Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUAsmParser() { RegisterMCAsmParser A(getTheAMDGPUTarget()); @@ -9221,10 +9150,6 @@ // LDSDIR //===----------------------------------------------------------------------===// -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultWaitVDST() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyWaitVDST); -} - bool AMDGPUOperand::isWaitVDST() const { return isImmTy(ImmTyWaitVDST) && isUInt<4>(getImm()); } @@ -9233,10 +9158,6 @@ // VINTERP //===----------------------------------------------------------------------===// -AMDGPUOperand::Ptr AMDGPUAsmParser::defaultWaitEXP() const { - return AMDGPUOperand::CreateImm(this, 0, SMLoc(), AMDGPUOperand::ImmTyWaitEXP); -} - bool AMDGPUOperand::isWaitEXP() const { return isImmTy(ImmTyWaitEXP) && isUInt<3>(getImm()); } diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td --- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td +++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td @@ -1113,19 +1113,17 @@ class NamedIntOperand : CustomOperand { - string ImmTy = "AMDGPUOperand::ImmTy"#Name; let ParserMethod = "[this](OperandVector &Operands) -> OperandMatchResultTy { "# - "return parseIntWithPrefix(\""#Prefix#"\", Operands, "#ImmTy#", "# - ConvertMethod#"); }"; + "return parseIntWithPrefix(\""#Prefix#"\", Operands, "# + "AMDGPUOperand::"#ImmTy#", "#ConvertMethod#"); }"; } class NamedBitOperand : CustomOperand { - string ImmTy = "AMDGPUOperand::ImmTy"#Name; let ParserMethod = "[this](OperandVector &Operands) -> OperandMatchResultTy { "# - "return parseNamedBit(\""#Id#"\", Operands, "#ImmTy#"); }"; + "return parseNamedBit(\""#Id#"\", Operands, AMDGPUOperand::"#ImmTy#"); }"; } class DefaultOperand @@ -1136,21 +1134,21 @@ class SDWAOperand : CustomOperand { - string ImmTy = "AMDGPUOperand::ImmTy"#Name; let ParserMethod = "[this](OperandVector &Operands) -> OperandMatchResultTy { "# - "return parseSDWASel(Operands, \""#Id#"\", "#ImmTy#"); }"; + "return parseSDWASel(Operands, \""#Id#"\", AMDGPUOperand::"#ImmTy#"); }"; } class ArrayOperand0 : OperandWithDefaultOps, CustomOperandProps<1, Name> { - string ImmTy = "AMDGPUOperand::ImmTy"#Name; let ParserMethod = "[this](OperandVector &Operands) -> OperandMatchResultTy { "# - "return parseOperandArrayWithPrefix(\""#Id#"\", Operands, "#ImmTy#"); }"; + "return parseOperandArrayWithPrefix(\""#Id#"\", Operands, "# + "AMDGPUOperand::"#ImmTy#"); }"; } +let ImmTy = "ImmTyOffset" in def flat_offset : CustomOperand; def offset : NamedIntOperand; def offset0 : NamedIntOperand; @@ -1202,8 +1200,10 @@ def dpp8 : CustomOperand; def dpp_ctrl : CustomOperand; +let DefaultValue = "0xf" in { def row_mask : NamedIntOperand; def bank_mask : NamedIntOperand; +} def bound_ctrl : NamedIntOperand bool { return convertDppBoundCtrl(BC); }">; def FI : NamedIntOperand;