mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-30 17:21:10 +00:00
[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 <https://github.com/llvm/llvm-project/issues/62629>. Reviewed By: arsenm, foad Differential Revision: https://reviews.llvm.org/D153565
This commit is contained in:
parent
9435942447
commit
5183ca8779
@ -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
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -110,7 +110,6 @@ class MTBUF_Pseudo <string opName, dag outs, dag ins,
|
||||
|
||||
Instruction BaseOpcode = !cast<Instruction>(MTBUFGetBaseOpcode<NAME>.ret);
|
||||
let MTBUF = 1;
|
||||
let AsmMatchConverter = "cvtMtbuf";
|
||||
}
|
||||
|
||||
class MTBUF_Real <MTBUF_Pseudo ps, string real_name = ps.Mnemonic> :
|
||||
|
Loading…
Reference in New Issue
Block a user