1 //===-- VETargetStreamer.h - VE Target Streamer ----------------*- C++ -*--===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_LIB_TARGET_VE_VETARGETSTREAMER_H 10 #define LLVM_LIB_TARGET_VE_VETARGETSTREAMER_H 11 12 #include "llvm/MC/MCELFStreamer.h" 13 #include "llvm/MC/MCStreamer.h" 14 15 namespace llvm { 16 class VETargetStreamer : public MCTargetStreamer { 17 virtual void anchor(); 18 19 public: 20 VETargetStreamer(MCStreamer &S); 21 /// Emit ".register <reg>, #ignore". 22 virtual void emitVERegisterIgnore(unsigned reg) = 0; 23 /// Emit ".register <reg>, #scratch". 24 virtual void emitVERegisterScratch(unsigned reg) = 0; 25 }; 26 27 // This part is for ascii assembly output 28 class VETargetAsmStreamer : public VETargetStreamer { 29 formatted_raw_ostream &OS; 30 31 public: 32 VETargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS); 33 void emitVERegisterIgnore(unsigned reg) override; 34 void emitVERegisterScratch(unsigned reg) override; 35 }; 36 37 // This part is for ELF object output 38 class VETargetELFStreamer : public VETargetStreamer { 39 public: 40 VETargetELFStreamer(MCStreamer &S); 41 MCELFStreamer &getStreamer(); 42 void emitVERegisterIgnore(unsigned reg) override {} 43 void emitVERegisterScratch(unsigned reg) override {} 44 }; 45 } // namespace llvm 46 47 #endif 48