clang-format X86ATTInstPrinter.{h,cpp} before I make changes to these files.

llvm-svn: 233473
This commit is contained in:
Akira Hatanaka 2015-03-28 04:25:41 +00:00
parent 4757f3210c
commit ba511fdd12
2 changed files with 156 additions and 76 deletions

View File

@ -33,11 +33,8 @@ using namespace llvm;
#define PRINT_ALIAS_INSTR
#include "X86GenAsmWriter.inc"
void X86ATTInstPrinter::printRegName(raw_ostream &OS,
unsigned RegNo) const {
OS << markup("<reg:")
<< '%' << getRegisterName(RegNo)
<< markup(">");
void X86ATTInstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const {
OS << markup("<reg:") << '%' << getRegisterName(RegNo) << markup(">");
}
void X86ATTInstPrinter::printInst(const MCInst *MI, raw_ostream &OS,
@ -76,39 +73,104 @@ void X86ATTInstPrinter::printSSEAVXCC(const MCInst *MI, unsigned Op,
raw_ostream &O) {
int64_t Imm = MI->getOperand(Op).getImm();
switch (Imm) {
default: llvm_unreachable("Invalid ssecc/avxcc argument!");
case 0: O << "eq"; break;
case 1: O << "lt"; break;
case 2: O << "le"; break;
case 3: O << "unord"; break;
case 4: O << "neq"; break;
case 5: O << "nlt"; break;
case 6: O << "nle"; break;
case 7: O << "ord"; break;
case 8: O << "eq_uq"; break;
case 9: O << "nge"; break;
case 0xa: O << "ngt"; break;
case 0xb: O << "false"; break;
case 0xc: O << "neq_oq"; break;
case 0xd: O << "ge"; break;
case 0xe: O << "gt"; break;
case 0xf: O << "true"; break;
case 0x10: O << "eq_os"; break;
case 0x11: O << "lt_oq"; break;
case 0x12: O << "le_oq"; break;
case 0x13: O << "unord_s"; break;
case 0x14: O << "neq_us"; break;
case 0x15: O << "nlt_uq"; break;
case 0x16: O << "nle_uq"; break;
case 0x17: O << "ord_s"; break;
case 0x18: O << "eq_us"; break;
case 0x19: O << "nge_uq"; break;
case 0x1a: O << "ngt_uq"; break;
case 0x1b: O << "false_os"; break;
case 0x1c: O << "neq_os"; break;
case 0x1d: O << "ge_oq"; break;
case 0x1e: O << "gt_oq"; break;
case 0x1f: O << "true_us"; break;
default:
llvm_unreachable("Invalid ssecc/avxcc argument!");
case 0:
O << "eq";
break;
case 1:
O << "lt";
break;
case 2:
O << "le";
break;
case 3:
O << "unord";
break;
case 4:
O << "neq";
break;
case 5:
O << "nlt";
break;
case 6:
O << "nle";
break;
case 7:
O << "ord";
break;
case 8:
O << "eq_uq";
break;
case 9:
O << "nge";
break;
case 0xa:
O << "ngt";
break;
case 0xb:
O << "false";
break;
case 0xc:
O << "neq_oq";
break;
case 0xd:
O << "ge";
break;
case 0xe:
O << "gt";
break;
case 0xf:
O << "true";
break;
case 0x10:
O << "eq_os";
break;
case 0x11:
O << "lt_oq";
break;
case 0x12:
O << "le_oq";
break;
case 0x13:
O << "unord_s";
break;
case 0x14:
O << "neq_us";
break;
case 0x15:
O << "nlt_uq";
break;
case 0x16:
O << "nle_uq";
break;
case 0x17:
O << "ord_s";
break;
case 0x18:
O << "eq_us";
break;
case 0x19:
O << "nge_uq";
break;
case 0x1a:
O << "ngt_uq";
break;
case 0x1b:
O << "false_os";
break;
case 0x1c:
O << "neq_os";
break;
case 0x1d:
O << "ge_oq";
break;
case 0x1e:
O << "gt_oq";
break;
case 0x1f:
O << "true_us";
break;
}
}
@ -116,26 +178,51 @@ void X86ATTInstPrinter::printXOPCC(const MCInst *MI, unsigned Op,
raw_ostream &O) {
int64_t Imm = MI->getOperand(Op).getImm();
switch (Imm) {
default: llvm_unreachable("Invalid xopcc argument!");
case 0: O << "lt"; break;
case 1: O << "le"; break;
case 2: O << "gt"; break;
case 3: O << "ge"; break;
case 4: O << "eq"; break;
case 5: O << "neq"; break;
case 6: O << "false"; break;
case 7: O << "true"; break;
default:
llvm_unreachable("Invalid xopcc argument!");
case 0:
O << "lt";
break;
case 1:
O << "le";
break;
case 2:
O << "gt";
break;
case 3:
O << "ge";
break;
case 4:
O << "eq";
break;
case 5:
O << "neq";
break;
case 6:
O << "false";
break;
case 7:
O << "true";
break;
}
}
void X86ATTInstPrinter::printRoundingControl(const MCInst *MI, unsigned Op,
raw_ostream &O) {
raw_ostream &O) {
int64_t Imm = MI->getOperand(Op).getImm() & 0x3;
switch (Imm) {
case 0: O << "{rn-sae}"; break;
case 1: O << "{rd-sae}"; break;
case 2: O << "{ru-sae}"; break;
case 3: O << "{rz-sae}"; break;
case 0:
O << "{rn-sae}";
break;
case 1:
O << "{rd-sae}";
break;
case 2:
O << "{ru-sae}";
break;
case 3:
O << "{rz-sae}";
break;
}
}
/// printPCRelImm - This is used to print an immediate value that ends up
@ -169,8 +256,7 @@ void X86ATTInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
printRegName(O, Op.getReg());
} else if (Op.isImm()) {
// Print X86 immediates as signed values.
O << markup("<imm:")
<< '$' << formatImm((int64_t)Op.getImm())
O << markup("<imm:") << '$' << formatImm((int64_t)Op.getImm())
<< markup(">");
// If there are no instruction-specific comments, add a comment clarifying
@ -182,24 +268,22 @@ void X86ATTInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
} else {
assert(Op.isExpr() && "unknown operand kind in printOperand");
O << markup("<imm:")
<< '$' << *Op.getExpr()
<< markup(">");
O << markup("<imm:") << '$' << *Op.getExpr() << markup(">");
}
}
void X86ATTInstPrinter::printMemReference(const MCInst *MI, unsigned Op,
raw_ostream &O) {
const MCOperand &BaseReg = MI->getOperand(Op+X86::AddrBaseReg);
const MCOperand &IndexReg = MI->getOperand(Op+X86::AddrIndexReg);
const MCOperand &DispSpec = MI->getOperand(Op+X86::AddrDisp);
const MCOperand &SegReg = MI->getOperand(Op+X86::AddrSegmentReg);
const MCOperand &BaseReg = MI->getOperand(Op + X86::AddrBaseReg);
const MCOperand &IndexReg = MI->getOperand(Op + X86::AddrIndexReg);
const MCOperand &DispSpec = MI->getOperand(Op + X86::AddrDisp);
const MCOperand &SegReg = MI->getOperand(Op + X86::AddrSegmentReg);
O << markup("<mem:");
// If this has a segment register, print it.
if (SegReg.getReg()) {
printOperand(MI, Op+X86::AddrSegmentReg, O);
printOperand(MI, Op + X86::AddrSegmentReg, O);
O << ':';
}
@ -215,16 +299,14 @@ void X86ATTInstPrinter::printMemReference(const MCInst *MI, unsigned Op,
if (IndexReg.getReg() || BaseReg.getReg()) {
O << '(';
if (BaseReg.getReg())
printOperand(MI, Op+X86::AddrBaseReg, O);
printOperand(MI, Op + X86::AddrBaseReg, O);
if (IndexReg.getReg()) {
O << ',';
printOperand(MI, Op+X86::AddrIndexReg, O);
unsigned ScaleVal = MI->getOperand(Op+X86::AddrScaleAmt).getImm();
printOperand(MI, Op + X86::AddrIndexReg, O);
unsigned ScaleVal = MI->getOperand(Op + X86::AddrScaleAmt).getImm();
if (ScaleVal != 1) {
O << ','
<< markup("<imm:")
<< ScaleVal // never printed in hex.
O << ',' << markup("<imm:") << ScaleVal // never printed in hex.
<< markup(">");
}
}
@ -236,13 +318,13 @@ void X86ATTInstPrinter::printMemReference(const MCInst *MI, unsigned Op,
void X86ATTInstPrinter::printSrcIdx(const MCInst *MI, unsigned Op,
raw_ostream &O) {
const MCOperand &SegReg = MI->getOperand(Op+1);
const MCOperand &SegReg = MI->getOperand(Op + 1);
O << markup("<mem:");
// If this has a segment register, print it.
if (SegReg.getReg()) {
printOperand(MI, Op+1, O);
printOperand(MI, Op + 1, O);
O << ':';
}
@ -267,13 +349,13 @@ void X86ATTInstPrinter::printDstIdx(const MCInst *MI, unsigned Op,
void X86ATTInstPrinter::printMemOffset(const MCInst *MI, unsigned Op,
raw_ostream &O) {
const MCOperand &DispSpec = MI->getOperand(Op);
const MCOperand &SegReg = MI->getOperand(Op+1);
const MCOperand &SegReg = MI->getOperand(Op + 1);
O << markup("<mem:");
// If this has a segment register, print it.
if (SegReg.getReg()) {
printOperand(MI, Op+1, O);
printOperand(MI, Op + 1, O);
O << ':';
}
@ -289,7 +371,6 @@ void X86ATTInstPrinter::printMemOffset(const MCInst *MI, unsigned Op,
void X86ATTInstPrinter::printU8Imm(const MCInst *MI, unsigned Op,
raw_ostream &O) {
O << markup("<imm:")
<< '$' << formatImm(MI->getOperand(Op).getImm() & 0xff)
O << markup("<imm:") << '$' << formatImm(MI->getOperand(Op).getImm() & 0xff)
<< markup(">");
}

View File

@ -25,7 +25,7 @@ class X86ATTInstPrinter final : public MCInstPrinter {
public:
X86ATTInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
const MCRegisterInfo &MRI, const MCSubtargetInfo &STI)
: MCInstPrinter(MAI, MII, MRI) {
: MCInstPrinter(MAI, MII, MRI) {
// Initialize the set of available features.
setAvailableFeatures(STI.getFeatureBits());
}
@ -143,7 +143,6 @@ public:
private:
bool HasCustomInstComment;
};
}
#endif