10b57cec5SDimitry Andric //===-- SparcTargetStreamer.cpp - Sparc Target Streamer Methods -----------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric // 90b57cec5SDimitry Andric // This file provides Sparc specific target streamer methods. 100b57cec5SDimitry Andric // 110b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric #include "SparcTargetStreamer.h" 140b57cec5SDimitry Andric #include "SparcInstPrinter.h" 15*bdd1243dSDimitry Andric #include "llvm/MC/MCRegister.h" 160b57cec5SDimitry Andric #include "llvm/Support/FormattedStream.h" 170b57cec5SDimitry Andric 180b57cec5SDimitry Andric using namespace llvm; 190b57cec5SDimitry Andric 200b57cec5SDimitry Andric // pin vtable to this file SparcTargetStreamer(MCStreamer & S)210b57cec5SDimitry AndricSparcTargetStreamer::SparcTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {} 220b57cec5SDimitry Andric anchor()230b57cec5SDimitry Andricvoid SparcTargetStreamer::anchor() {} 240b57cec5SDimitry Andric SparcTargetAsmStreamer(MCStreamer & S,formatted_raw_ostream & OS)250b57cec5SDimitry AndricSparcTargetAsmStreamer::SparcTargetAsmStreamer(MCStreamer &S, 260b57cec5SDimitry Andric formatted_raw_ostream &OS) 270b57cec5SDimitry Andric : SparcTargetStreamer(S), OS(OS) {} 280b57cec5SDimitry Andric emitSparcRegisterIgnore(unsigned reg)290b57cec5SDimitry Andricvoid SparcTargetAsmStreamer::emitSparcRegisterIgnore(unsigned reg) { 300b57cec5SDimitry Andric OS << "\t.register " 310b57cec5SDimitry Andric << "%" << StringRef(SparcInstPrinter::getRegisterName(reg)).lower() 320b57cec5SDimitry Andric << ", #ignore\n"; 330b57cec5SDimitry Andric } 340b57cec5SDimitry Andric emitSparcRegisterScratch(unsigned reg)350b57cec5SDimitry Andricvoid SparcTargetAsmStreamer::emitSparcRegisterScratch(unsigned reg) { 360b57cec5SDimitry Andric OS << "\t.register " 370b57cec5SDimitry Andric << "%" << StringRef(SparcInstPrinter::getRegisterName(reg)).lower() 380b57cec5SDimitry Andric << ", #scratch\n"; 390b57cec5SDimitry Andric } 400b57cec5SDimitry Andric SparcTargetELFStreamer(MCStreamer & S)410b57cec5SDimitry AndricSparcTargetELFStreamer::SparcTargetELFStreamer(MCStreamer &S) 420b57cec5SDimitry Andric : SparcTargetStreamer(S) {} 430b57cec5SDimitry Andric getStreamer()440b57cec5SDimitry AndricMCELFStreamer &SparcTargetELFStreamer::getStreamer() { 450b57cec5SDimitry Andric return static_cast<MCELFStreamer &>(Streamer); 460b57cec5SDimitry Andric } 47