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