Index: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp =================================================================== --- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// #include "ARMFeatures.h" +#include "InstPrinter/ARMInstPrinter.h" #include "Utils/ARMBaseInfo.h" #include "MCTargetDesc/ARMAddressingModes.h" #include "MCTargetDesc/ARMBaseInfo.h" @@ -3205,17 +3206,26 @@ } // end anonymous namespace. void ARMOperand::print(raw_ostream &OS) const { + auto RegName = [](unsigned Reg) { + if (Reg) + return ARMInstPrinter::getRegisterName(Reg); + else + return "noreg"; + }; + switch (Kind) { case k_CondCode: OS << ""; break; case k_CCOut: - OS << ""; + OS << ""; break; case k_ITCondMask: { static const char *const MaskStr[] = { - "()", "(t)", "(e)", "(tt)", "(et)", "(te)", "(ee)", "(ttt)", "(ett)", - "(tet)", "(eet)", "(tte)", "(ete)", "(tee)", "(eee)" + "(invalid)", "(teee)", "(tee)", "(teet)", + "(te)", "(tete)", "(tet)", "(tett)", + "(t)", "(ttee)", "(tte)", "(ttet)", + "(tt)", "(ttte)", "(ttt)", "(tttt)" }; assert((ITMask.Mask & 0xf) == ITMask.Mask); OS << ""; @@ -3249,13 +3259,25 @@ OS << ""; break; case k_Memory: - OS << ""; break; case k_PostIndexRegister: OS << "post-idx register " << (PostIdxReg.isAdd ? "" : "-") - << PostIdxReg.RegNum; + << RegName(PostIdxReg.RegNum); if (PostIdxReg.ShiftTy != ARM_AM::no_shift) OS << ARM_AM::getShiftOpcStr(PostIdxReg.ShiftTy) << " " << PostIdxReg.ShiftImm; @@ -3271,23 +3293,21 @@ break; } case k_Register: - OS << ""; + OS << ""; break; case k_ShifterImmediate: OS << ""; break; case k_ShiftedRegister: - OS << ""; + OS << ""; break; case k_ShiftedImmediate: - OS << ""; + OS << ""; break; case k_RotateImmediate: OS << ""; @@ -3311,7 +3331,7 @@ const SmallVectorImpl &RegList = getRegList(); for (SmallVectorImpl::const_iterator I = RegList.begin(), E = RegList.end(); I != E; ) { - OS << *I; + OS << RegName(*I); if (++I < E) OS << ", "; } @@ -3320,15 +3340,15 @@ } case k_VectorList: OS << ""; + << RegName(VectorList.RegNum) << ">"; break; case k_VectorListAllLanes: OS << ""; + << RegName(VectorList.RegNum) << ">"; break; case k_VectorListIndexed: OS << ""; + << VectorList.Count << " * " << RegName(VectorList.RegNum) << ">"; break; case k_Token: OS << "'" << getToken() << "'";