1343171Sdim//===-- SparcTargetStreamer.h - Sparc Target Streamer ----------*- C++ -*--===// 2343171Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6343171Sdim// 7343171Sdim//===----------------------------------------------------------------------===// 8343171Sdim 9343171Sdim#ifndef LLVM_LIB_TARGET_SPARC_MCTARGETDESC_SPARCTARGETSTREAMER_H 10343171Sdim#define LLVM_LIB_TARGET_SPARC_MCTARGETDESC_SPARCTARGETSTREAMER_H 11343171Sdim 12343171Sdim#include "llvm/MC/MCELFStreamer.h" 13343171Sdim#include "llvm/MC/MCStreamer.h" 14343171Sdim 15343171Sdimnamespace llvm { 16343171Sdimclass SparcTargetStreamer : public MCTargetStreamer { 17343171Sdim virtual void anchor(); 18343171Sdim 19343171Sdimpublic: 20343171Sdim SparcTargetStreamer(MCStreamer &S); 21343171Sdim /// Emit ".register <reg>, #ignore". 22343171Sdim virtual void emitSparcRegisterIgnore(unsigned reg) = 0; 23343171Sdim /// Emit ".register <reg>, #scratch". 24343171Sdim virtual void emitSparcRegisterScratch(unsigned reg) = 0; 25343171Sdim}; 26343171Sdim 27343171Sdim// This part is for ascii assembly output 28343171Sdimclass SparcTargetAsmStreamer : public SparcTargetStreamer { 29343171Sdim formatted_raw_ostream &OS; 30343171Sdim 31343171Sdimpublic: 32343171Sdim SparcTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS); 33343171Sdim void emitSparcRegisterIgnore(unsigned reg) override; 34343171Sdim void emitSparcRegisterScratch(unsigned reg) override; 35343171Sdim}; 36343171Sdim 37343171Sdim// This part is for ELF object output 38343171Sdimclass SparcTargetELFStreamer : public SparcTargetStreamer { 39343171Sdimpublic: 40343171Sdim SparcTargetELFStreamer(MCStreamer &S); 41343171Sdim MCELFStreamer &getStreamer(); 42343171Sdim void emitSparcRegisterIgnore(unsigned reg) override {} 43343171Sdim void emitSparcRegisterScratch(unsigned reg) override {} 44343171Sdim}; 45343171Sdim} // end namespace llvm 46343171Sdim 47343171Sdim#endif 48