xref: /freebsd-src/contrib/llvm-project/llvm/lib/Target/Sparc/MCTargetDesc/SparcTargetStreamer.cpp (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
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 Andric SparcTargetStreamer::SparcTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {}
220b57cec5SDimitry Andric 
anchor()230b57cec5SDimitry Andric void SparcTargetStreamer::anchor() {}
240b57cec5SDimitry Andric 
SparcTargetAsmStreamer(MCStreamer & S,formatted_raw_ostream & OS)250b57cec5SDimitry Andric SparcTargetAsmStreamer::SparcTargetAsmStreamer(MCStreamer &S,
260b57cec5SDimitry Andric                                                formatted_raw_ostream &OS)
270b57cec5SDimitry Andric     : SparcTargetStreamer(S), OS(OS) {}
280b57cec5SDimitry Andric 
emitSparcRegisterIgnore(unsigned reg)290b57cec5SDimitry Andric void 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 Andric void 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 Andric SparcTargetELFStreamer::SparcTargetELFStreamer(MCStreamer &S)
420b57cec5SDimitry Andric     : SparcTargetStreamer(S) {}
430b57cec5SDimitry Andric 
getStreamer()440b57cec5SDimitry Andric MCELFStreamer &SparcTargetELFStreamer::getStreamer() {
450b57cec5SDimitry Andric   return static_cast<MCELFStreamer &>(Streamer);
460b57cec5SDimitry Andric }
47