//=- SystemZHLASMInstPrinter.cpp - Convert SystemZ MCInst to HLASM assembly -=// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "SystemZHLASMInstPrinter.h" #include "llvm/MC/MCInst.h" #include "llvm/MC/MCRegister.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; #define DEBUG_TYPE "asm-printer" #include "SystemZGenHLASMAsmWriter.inc" void SystemZHLASMInstPrinter::printFormattedRegName(const MCAsmInfo *MAI, MCRegister Reg, raw_ostream &O) { const char *RegName = getRegisterName(Reg); // Skip register prefix so that only register number is left assert(isalpha(RegName[0]) && isdigit(RegName[1])); markup(O, Markup::Register) << (RegName + 1); } void SystemZHLASMInstPrinter::printInst(const MCInst *MI, uint64_t Address, StringRef Annot, const MCSubtargetInfo &STI, raw_ostream &O) { std::string Str; raw_string_ostream RSO(Str); printInstruction(MI, Address, RSO); // Eat the first tab character and replace it with a space since it is // hardcoded in AsmWriterEmitter::EmitPrintInstruction // TODO: introduce a line prefix member to AsmWriter to avoid this problem if (!Str.empty() && Str.front() == '\t') O << " " << Str.substr(1, Str.length()); else O << Str; printAnnotation(O, Annot); }