From 5183ca877982a6a5cbe84c9e73f99e1d289e50be Mon Sep 17 00:00:00 2001 From: Ivan Kosarev Date: Fri, 23 Jun 2023 12:43:39 +0100 Subject: [PATCH] [AMDGPU][AsmParser] Eliminate cvtMtbuf(). Now that we have proper support for optional operands, the standard LLVM machinery can take care of converting parsed instructions to MCInsts. There are likely more cases where the conversion can be done automatically, probably with some additional treatment. The plan is to address them separately. Part of . Reviewed By: arsenm, foad Differential Revision: https://reviews.llvm.org/D153565 --- .../Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 37 ---------------------- llvm/lib/Target/AMDGPU/BUFInstructions.td | 1 - 2 files changed, 38 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp index 168beba..ba69bb3 100644 --- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp +++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @@ -1752,7 +1752,6 @@ public: void cvtMubuf(MCInst &Inst, const OperandVector &Operands) { cvtMubufImpl(Inst, Operands, false); } void cvtMubufAtomic(MCInst &Inst, const OperandVector &Operands) { cvtMubufImpl(Inst, Operands, true); } - void cvtMtbuf(MCInst &Inst, const OperandVector &Operands); OperandMatchResultTy parseOModSI(OperandVector &Operands); @@ -7780,42 +7779,6 @@ void AMDGPUAsmParser::cvtMubufImpl(MCInst &Inst, addOptionalImmOperand(Inst, Operands, OptionalIdx, AMDGPUOperand::ImmTySWZ); } -void AMDGPUAsmParser::cvtMtbuf(MCInst &Inst, const OperandVector &Operands) { - OptionalImmIndexMap OptionalIdx; - - for (unsigned i = 1, e = Operands.size(); i != e; ++i) { - AMDGPUOperand &Op = ((AMDGPUOperand &)*Operands[i]); - - // Add the register arguments - if (Op.isReg()) { - Op.addRegOperands(Inst, 1); - continue; - } - - // Handle the case where soffset is an immediate - if (Op.isImm() && Op.getImmTy() == AMDGPUOperand::ImmTyNone) { - Op.addImmOperands(Inst, 1); - continue; - } - - // Handle tokens like 'offen' which are sometimes hard-coded into the - // asm string. There are no MCInst operands for these. - if (Op.isToken()) { - continue; - } - assert(Op.isImm()); - - // Handle optional arguments - OptionalIdx[Op.getImmTy()] = i; - } - - addOptionalImmOperand(Inst, Operands, OptionalIdx, - AMDGPUOperand::ImmTyOffset); - addOptionalImmOperand(Inst, Operands, OptionalIdx, AMDGPUOperand::ImmTyFORMAT); - addOptionalImmOperand(Inst, Operands, OptionalIdx, AMDGPUOperand::ImmTyCPol, 0); - addOptionalImmOperand(Inst, Operands, OptionalIdx, AMDGPUOperand::ImmTySWZ); -} - //===----------------------------------------------------------------------===// // mimg //===----------------------------------------------------------------------===// diff --git a/llvm/lib/Target/AMDGPU/BUFInstructions.td b/llvm/lib/Target/AMDGPU/BUFInstructions.td index c9809cc..cfca2c3 100644 --- a/llvm/lib/Target/AMDGPU/BUFInstructions.td +++ b/llvm/lib/Target/AMDGPU/BUFInstructions.td @@ -110,7 +110,6 @@ class MTBUF_Pseudo (MTBUFGetBaseOpcode.ret); let MTBUF = 1; - let AsmMatchConverter = "cvtMtbuf"; } class MTBUF_Real : -- 2.7.4