From 2576a81263954b8669f99d9b684c58409b62db0d Mon Sep 17 00:00:00 2001 From: Ivan Kosarev Date: Mon, 16 Oct 2023 20:47:24 +0100 Subject: [PATCH] [AMDGPU][AsmParser] Eliminate custom predicates for named-bit operands. isGDS() and isTFE() need special treatment, because they may be both named-bit and token operands. Part of #62629. --- llvm/lib/Target/AMDGPU/AMDGPUInstructions.td | 10 ++++++---- llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 11 ++--------- llvm/lib/Target/AMDGPU/SIInstrInfo.td | 2 ++ 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td index 81fc28d293021..23242ad84b0c4 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td +++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td @@ -125,11 +125,11 @@ def InstFlag : OperandWithDefaultOps ; def i1imm_0 : OperandWithDefaultOps; -class CustomOperandClass +class CustomOperandClass : AsmOperandClass { let Name = name; - let PredicateMethod = "is"#name; + let PredicateMethod = predicateMethod; let ParserMethod = parserMethod; let RenderMethod = "addImmOperands"; let IsOptional = optional; @@ -138,6 +138,7 @@ class CustomOperandClass { string ImmTy = "ImmTy"#name; + string PredicateMethod = "is"#name; string ParserMethod = "parse"#name; string DefaultValue = "0"; string DefaultMethod = "[this]() { return "# @@ -145,7 +146,8 @@ class CustomOperandProps { "AMDGPUOperand::"#ImmTy#"); }"; string PrintMethod = "print"#name; AsmOperandClass ParserMatchClass = - CustomOperandClass; + CustomOperandClass; string OperandType = "OPERAND_IMMEDIATE"; } diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp index fa651b9fcb05a..faeaa94f97335 100644 --- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp +++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @@ -356,25 +356,20 @@ class AMDGPUOperand : public MCParsedAsmOperand { return isImm() && Imm.Type == ImmT; } + template bool isImmTy() const { return isImmTy(Ty); } + bool isImmLiteral() const { return isImmTy(ImmTyNone); } bool isImmModifier() const { return isImm() && Imm.Type != ImmTyNone; } - bool isClampSI() const { return isImmTy(ImmTyClampSI); } bool isOModSI() const { return isImmTy(ImmTyOModSI); } bool isDMask() const { return isImmTy(ImmTyDMask); } bool isDim() const { return isImmTy(ImmTyDim); } - bool isUNorm() const { return isImmTy(ImmTyUNorm); } - bool isDA() const { return isImmTy(ImmTyDA); } bool isR128A16() const { return isImmTy(ImmTyR128A16); } - bool isA16() const { return isImmTy(ImmTyA16); } - bool isLWE() const { return isImmTy(ImmTyLWE); } bool isOff() const { return isImmTy(ImmTyOff); } bool isExpTgt() const { return isImmTy(ImmTyExpTgt); } - bool isExpVM() const { return isImmTy(ImmTyExpVM); } - bool isExpCompr() const { return isImmTy(ImmTyExpCompr); } bool isOffen() const { return isImmTy(ImmTyOffen); } bool isIdxen() const { return isImmTy(ImmTyIdxen); } bool isAddr64() const { return isImmTy(ImmTyAddr64); } @@ -387,7 +382,6 @@ class AMDGPUOperand : public MCParsedAsmOperand { bool isLDS() const { return isImmTy(ImmTyLDS); } bool isCPol() const { return isImmTy(ImmTyCPol); } bool isTFE() const { return isImmTy(ImmTyTFE); } - bool isD16() const { return isImmTy(ImmTyD16); } bool isFORMAT() const { return isImmTy(ImmTyFORMAT) && isUInt<7>(getImm()); } bool isDppBankMask() const { return isImmTy(ImmTyDppBankMask); } bool isDppRowMask() const { return isImmTy(ImmTyDppRowMask); } @@ -404,7 +398,6 @@ class AMDGPUOperand : public MCParsedAsmOperand { bool isOpSelHi() const { return isImmTy(ImmTyOpSelHi); } bool isNegLo() const { return isImmTy(ImmTyNegLo); } bool isNegHi() const { return isImmTy(ImmTyNegHi); } - bool isHigh() const { return isImmTy(ImmTyHigh); } bool isRegOrImm() const { return isReg() || isImm(); diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td index f09ca954904fc..b4adb444600c4 100644 --- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td +++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td @@ -1045,6 +1045,7 @@ class NamedIntOperand : CustomOperand { + let PredicateMethod = "isImmTy"; let ParserMethod = "[this](OperandVector &Operands) -> ParseStatus { "# "return parseNamedBit(\""#Id#"\", Operands, AMDGPUOperand::"#ImmTy#"); }"; @@ -1056,6 +1057,7 @@ class NamedBitOperand class DefaultOperand : OperandWithDefaultOps, CustomOperandProps<1, Op.ParserMatchClass.Name> { + let PredicateMethod = Op.ParserMatchClass.PredicateMethod; let ParserMethod = Op.ParserMatchClass.ParserMethod; let PrintMethod = Op.PrintMethod; }