forked from OSchip/llvm-project
[AArch64InstPrinter] Add some `<reg:...>` for llvm-mc --mdis output
This commit is contained in:
parent
f0c50447f6
commit
1b726f0a4c
|
@ -60,8 +60,7 @@ bool AArch64InstPrinter::applyTargetSpecificCLOption(StringRef Opt) {
|
|||
}
|
||||
|
||||
void AArch64InstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const {
|
||||
// This is for .cfi directives.
|
||||
OS << getRegisterName(RegNo);
|
||||
OS << markup("<reg:") << getRegisterName(RegNo) << markup(">");
|
||||
}
|
||||
|
||||
void AArch64InstPrinter::printInst(const MCInst *MI, uint64_t Address,
|
||||
|
@ -149,9 +148,11 @@ void AArch64InstPrinter::printInst(const MCInst *MI, uint64_t Address,
|
|||
shift = immr;
|
||||
}
|
||||
if (AsmMnemonic) {
|
||||
O << '\t' << AsmMnemonic << '\t' << getRegisterName(Op0.getReg())
|
||||
<< ", " << getRegisterName(Op1.getReg()) << ", " << markup("<imm:")
|
||||
<< "#" << shift << markup(">");
|
||||
O << '\t' << AsmMnemonic << '\t';
|
||||
printRegName(O, Op0.getReg());
|
||||
O << ", ";
|
||||
printRegName(O, Op1.getReg());
|
||||
O << ", " << markup("<imm:") << "#" << shift << markup(">");
|
||||
printAnnotation(O, Annot);
|
||||
return;
|
||||
}
|
||||
|
@ -902,7 +903,7 @@ void AArch64InstPrinter::printMatrix(const MCInst *MI, unsigned OpNum,
|
|||
const MCOperand &RegOp = MI->getOperand(OpNum);
|
||||
assert(RegOp.isReg() && "Unexpected operand type!");
|
||||
|
||||
O << getRegisterName(RegOp.getReg());
|
||||
printRegName(O, RegOp.getReg());
|
||||
switch (EltSize) {
|
||||
case 0:
|
||||
break;
|
||||
|
@ -945,7 +946,7 @@ void AArch64InstPrinter::printMatrixTile(const MCInst *MI, unsigned OpNum,
|
|||
raw_ostream &O) {
|
||||
const MCOperand &RegOp = MI->getOperand(OpNum);
|
||||
assert(RegOp.isReg() && "Unexpected operand type!");
|
||||
O << getRegisterName(RegOp.getReg());
|
||||
printRegName(O, RegOp.getReg());
|
||||
}
|
||||
|
||||
void AArch64InstPrinter::printSVCROp(const MCInst *MI, unsigned OpNum,
|
||||
|
@ -965,7 +966,7 @@ void AArch64InstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
|
|||
const MCOperand &Op = MI->getOperand(OpNo);
|
||||
if (Op.isReg()) {
|
||||
unsigned Reg = Op.getReg();
|
||||
O << getRegisterName(Reg);
|
||||
printRegName(O, Reg);
|
||||
} else if (Op.isImm()) {
|
||||
printImm(MI, OpNo, STI, O);
|
||||
} else {
|
||||
|
@ -1011,7 +1012,7 @@ void AArch64InstPrinter::printPostIncOperand(const MCInst *MI, unsigned OpNo,
|
|||
if (Reg == AArch64::XZR)
|
||||
O << markup("<imm:") << "#" << Imm << markup(">");
|
||||
else
|
||||
O << getRegisterName(Reg);
|
||||
printRegName(O, Reg);
|
||||
} else
|
||||
llvm_unreachable("unknown operand kind in printPostIncOperand64");
|
||||
}
|
||||
|
@ -1081,14 +1082,14 @@ void AArch64InstPrinter::printShifter(const MCInst *MI, unsigned OpNum,
|
|||
void AArch64InstPrinter::printShiftedRegister(const MCInst *MI, unsigned OpNum,
|
||||
const MCSubtargetInfo &STI,
|
||||
raw_ostream &O) {
|
||||
O << getRegisterName(MI->getOperand(OpNum).getReg());
|
||||
printRegName(O, MI->getOperand(OpNum).getReg());
|
||||
printShifter(MI, OpNum + 1, STI, O);
|
||||
}
|
||||
|
||||
void AArch64InstPrinter::printExtendedRegister(const MCInst *MI, unsigned OpNum,
|
||||
const MCSubtargetInfo &STI,
|
||||
raw_ostream &O) {
|
||||
O << getRegisterName(MI->getOperand(OpNum).getReg());
|
||||
printRegName(O, MI->getOperand(OpNum).getReg());
|
||||
printArithExtend(MI, OpNum + 1, STI, O);
|
||||
}
|
||||
|
||||
|
@ -1385,7 +1386,7 @@ void AArch64InstPrinter::printMatrixTileList(const MCInst *MI, unsigned OpNum,
|
|||
unsigned Reg = RegMask & (1 << I);
|
||||
if (Reg == 0)
|
||||
continue;
|
||||
O << getRegisterName(AArch64::ZAD0 + I);
|
||||
printRegName(O, AArch64::ZAD0 + I);
|
||||
if (Printed + 1 != NumRegs)
|
||||
O << ", ";
|
||||
++Printed;
|
||||
|
@ -1702,7 +1703,7 @@ void AArch64InstPrinter::printSVERegOp(const MCInst *MI, unsigned OpNum,
|
|||
}
|
||||
|
||||
unsigned Reg = MI->getOperand(OpNum).getReg();
|
||||
O << getRegisterName(Reg);
|
||||
printRegName(O, Reg);
|
||||
if (suffix != 0)
|
||||
O << '.' << suffix;
|
||||
}
|
||||
|
@ -1784,7 +1785,7 @@ void AArch64InstPrinter::printZPRasFPR(const MCInst *MI, unsigned OpNum,
|
|||
llvm_unreachable("Unsupported width");
|
||||
}
|
||||
unsigned Reg = MI->getOperand(OpNum).getReg();
|
||||
O << getRegisterName(Reg - AArch64::Z0 + Base);
|
||||
printRegName(O, Reg - AArch64::Z0 + Base);
|
||||
}
|
||||
|
||||
template <unsigned ImmIs0, unsigned ImmIs1>
|
||||
|
@ -1802,12 +1803,12 @@ void AArch64InstPrinter::printGPR64as32(const MCInst *MI, unsigned OpNum,
|
|||
const MCSubtargetInfo &STI,
|
||||
raw_ostream &O) {
|
||||
unsigned Reg = MI->getOperand(OpNum).getReg();
|
||||
O << getRegisterName(getWRegFromXReg(Reg));
|
||||
printRegName(O, getWRegFromXReg(Reg));
|
||||
}
|
||||
|
||||
void AArch64InstPrinter::printGPR64x8(const MCInst *MI, unsigned OpNum,
|
||||
const MCSubtargetInfo &STI,
|
||||
raw_ostream &O) {
|
||||
unsigned Reg = MI->getOperand(OpNum).getReg();
|
||||
O << getRegisterName(MRI.getSubReg(Reg, AArch64::x8sub_0));
|
||||
printRegName(O, MRI.getSubReg(Reg, AArch64::x8sub_0));
|
||||
}
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
# RUN: llvm-mc -triple=aarch64 --mdis %s | FileCheck %s
|
||||
# RUN: llvm-mc -triple=aarch64 -mattr=+all --mdis %s | FileCheck %s
|
||||
|
||||
# CHECK: b.ne <imm:#20>
|
||||
# CHECK: b.ne <imm:#20>
|
||||
0xa1 0x00 0x00 0x54
|
||||
# CHECK: asr w0, w0, <imm:#0>
|
||||
# CHECK-NEXT: asr <reg:w0>, <reg:w0>, <imm:#0>
|
||||
0x00 0x7c 0x00 0x13
|
||||
# CHECK: subs x12, x13, x14, asr <imm:#39>
|
||||
# CHECK-NEXT: subs <reg:x12>, <reg:x13>, <reg:x14>, asr <imm:#39>
|
||||
0xac 0x9d 0x8e 0xeb
|
||||
# CHECK: ldp w3, w2, [x15, <imm:#16>]!
|
||||
# CHECK-NEXT: ldp <reg:w3>, <reg:w2>, [<reg:x15>, <imm:#16>]!
|
||||
0xe3 0x09 0xc2 0x29
|
||||
|
||||
## ls64
|
||||
# CHECK-NEXT: st64b <reg:x2>, [<reg:x1>]
|
||||
0x22 0x90 0x3f 0xf8
|
||||
|
|
Loading…
Reference in New Issue