1356843Sdim//===-- VETargetStreamer.h - VE Target Streamer ----------------*- C++ -*--===// 2356843Sdim// 3356843Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4356843Sdim// See https://llvm.org/LICENSE.txt for license information. 5356843Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6356843Sdim// 7356843Sdim//===----------------------------------------------------------------------===// 8356843Sdim 9356843Sdim#ifndef LLVM_LIB_TARGET_VE_VETARGETSTREAMER_H 10356843Sdim#define LLVM_LIB_TARGET_VE_VETARGETSTREAMER_H 11356843Sdim 12356843Sdim#include "llvm/MC/MCELFStreamer.h" 13356843Sdim#include "llvm/MC/MCStreamer.h" 14356843Sdim 15356843Sdimnamespace llvm { 16356843Sdimclass VETargetStreamer : public MCTargetStreamer { 17356843Sdim virtual void anchor(); 18356843Sdim 19356843Sdimpublic: 20356843Sdim VETargetStreamer(MCStreamer &S); 21356843Sdim /// Emit ".register <reg>, #ignore". 22356843Sdim virtual void emitVERegisterIgnore(unsigned reg) = 0; 23356843Sdim /// Emit ".register <reg>, #scratch". 24356843Sdim virtual void emitVERegisterScratch(unsigned reg) = 0; 25356843Sdim}; 26356843Sdim 27356843Sdim// This part is for ascii assembly output 28356843Sdimclass VETargetAsmStreamer : public VETargetStreamer { 29356843Sdim formatted_raw_ostream &OS; 30356843Sdim 31356843Sdimpublic: 32356843Sdim VETargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS); 33356843Sdim void emitVERegisterIgnore(unsigned reg) override; 34356843Sdim void emitVERegisterScratch(unsigned reg) override; 35356843Sdim}; 36356843Sdim 37356843Sdim// This part is for ELF object output 38356843Sdimclass VETargetELFStreamer : public VETargetStreamer { 39356843Sdimpublic: 40356843Sdim VETargetELFStreamer(MCStreamer &S); 41356843Sdim MCELFStreamer &getStreamer(); 42356843Sdim void emitVERegisterIgnore(unsigned reg) override {} 43356843Sdim void emitVERegisterScratch(unsigned reg) override {} 44356843Sdim}; 45356843Sdim} // namespace llvm 46356843Sdim 47356843Sdim#endif 48