xref: /aosp_15_r20/external/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===-- AMDGPUTargetStreamer.h - AMDGPU Target Streamer --------*- C++ -*--===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker 
10*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUTARGETSTREAMER_H
11*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUTARGETSTREAMER_H
12*9880d681SAndroid Build Coastguard Worker 
13*9880d681SAndroid Build Coastguard Worker #include "AMDKernelCodeT.h"
14*9880d681SAndroid Build Coastguard Worker #include "llvm/MC/MCStreamer.h"
15*9880d681SAndroid Build Coastguard Worker 
16*9880d681SAndroid Build Coastguard Worker namespace llvm {
17*9880d681SAndroid Build Coastguard Worker 
18*9880d681SAndroid Build Coastguard Worker class MCELFStreamer;
19*9880d681SAndroid Build Coastguard Worker class MCSymbol;
20*9880d681SAndroid Build Coastguard Worker 
21*9880d681SAndroid Build Coastguard Worker class AMDGPUTargetStreamer : public MCTargetStreamer {
22*9880d681SAndroid Build Coastguard Worker public:
23*9880d681SAndroid Build Coastguard Worker   AMDGPUTargetStreamer(MCStreamer &S);
24*9880d681SAndroid Build Coastguard Worker   virtual void EmitDirectiveHSACodeObjectVersion(uint32_t Major,
25*9880d681SAndroid Build Coastguard Worker                                                  uint32_t Minor) = 0;
26*9880d681SAndroid Build Coastguard Worker 
27*9880d681SAndroid Build Coastguard Worker   virtual void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor,
28*9880d681SAndroid Build Coastguard Worker                                              uint32_t Stepping,
29*9880d681SAndroid Build Coastguard Worker                                              StringRef VendorName,
30*9880d681SAndroid Build Coastguard Worker                                              StringRef ArchName) = 0;
31*9880d681SAndroid Build Coastguard Worker 
32*9880d681SAndroid Build Coastguard Worker   virtual void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) = 0;
33*9880d681SAndroid Build Coastguard Worker 
34*9880d681SAndroid Build Coastguard Worker   virtual void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) = 0;
35*9880d681SAndroid Build Coastguard Worker 
36*9880d681SAndroid Build Coastguard Worker   virtual void EmitAMDGPUHsaModuleScopeGlobal(StringRef GlobalName) = 0;
37*9880d681SAndroid Build Coastguard Worker 
38*9880d681SAndroid Build Coastguard Worker   virtual void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) = 0;
39*9880d681SAndroid Build Coastguard Worker };
40*9880d681SAndroid Build Coastguard Worker 
41*9880d681SAndroid Build Coastguard Worker class AMDGPUTargetAsmStreamer : public AMDGPUTargetStreamer {
42*9880d681SAndroid Build Coastguard Worker   formatted_raw_ostream &OS;
43*9880d681SAndroid Build Coastguard Worker public:
44*9880d681SAndroid Build Coastguard Worker   AMDGPUTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS);
45*9880d681SAndroid Build Coastguard Worker   void EmitDirectiveHSACodeObjectVersion(uint32_t Major,
46*9880d681SAndroid Build Coastguard Worker                                          uint32_t Minor) override;
47*9880d681SAndroid Build Coastguard Worker 
48*9880d681SAndroid Build Coastguard Worker   void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor,
49*9880d681SAndroid Build Coastguard Worker                                      uint32_t Stepping, StringRef VendorName,
50*9880d681SAndroid Build Coastguard Worker                                      StringRef ArchName) override;
51*9880d681SAndroid Build Coastguard Worker 
52*9880d681SAndroid Build Coastguard Worker   void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
53*9880d681SAndroid Build Coastguard Worker 
54*9880d681SAndroid Build Coastguard Worker   void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override;
55*9880d681SAndroid Build Coastguard Worker 
56*9880d681SAndroid Build Coastguard Worker   void EmitAMDGPUHsaModuleScopeGlobal(StringRef GlobalName) override;
57*9880d681SAndroid Build Coastguard Worker 
58*9880d681SAndroid Build Coastguard Worker   void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) override;
59*9880d681SAndroid Build Coastguard Worker };
60*9880d681SAndroid Build Coastguard Worker 
61*9880d681SAndroid Build Coastguard Worker class AMDGPUTargetELFStreamer : public AMDGPUTargetStreamer {
62*9880d681SAndroid Build Coastguard Worker 
63*9880d681SAndroid Build Coastguard Worker   enum NoteType {
64*9880d681SAndroid Build Coastguard Worker     NT_AMDGPU_HSA_CODE_OBJECT_VERSION = 1,
65*9880d681SAndroid Build Coastguard Worker     NT_AMDGPU_HSA_HSAIL = 2,
66*9880d681SAndroid Build Coastguard Worker     NT_AMDGPU_HSA_ISA = 3,
67*9880d681SAndroid Build Coastguard Worker     NT_AMDGPU_HSA_PRODUCER = 4,
68*9880d681SAndroid Build Coastguard Worker     NT_AMDGPU_HSA_PRODUCER_OPTIONS = 5,
69*9880d681SAndroid Build Coastguard Worker     NT_AMDGPU_HSA_EXTENSION = 6,
70*9880d681SAndroid Build Coastguard Worker     NT_AMDGPU_HSA_HLDEBUG_DEBUG = 101,
71*9880d681SAndroid Build Coastguard Worker     NT_AMDGPU_HSA_HLDEBUG_TARGET = 102
72*9880d681SAndroid Build Coastguard Worker   };
73*9880d681SAndroid Build Coastguard Worker 
74*9880d681SAndroid Build Coastguard Worker   MCStreamer &Streamer;
75*9880d681SAndroid Build Coastguard Worker 
76*9880d681SAndroid Build Coastguard Worker public:
77*9880d681SAndroid Build Coastguard Worker   AMDGPUTargetELFStreamer(MCStreamer &S);
78*9880d681SAndroid Build Coastguard Worker 
79*9880d681SAndroid Build Coastguard Worker   MCELFStreamer &getStreamer();
80*9880d681SAndroid Build Coastguard Worker 
81*9880d681SAndroid Build Coastguard Worker   void EmitDirectiveHSACodeObjectVersion(uint32_t Major,
82*9880d681SAndroid Build Coastguard Worker                                          uint32_t Minor) override;
83*9880d681SAndroid Build Coastguard Worker 
84*9880d681SAndroid Build Coastguard Worker   void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor,
85*9880d681SAndroid Build Coastguard Worker                                      uint32_t Stepping, StringRef VendorName,
86*9880d681SAndroid Build Coastguard Worker                                      StringRef ArchName) override;
87*9880d681SAndroid Build Coastguard Worker 
88*9880d681SAndroid Build Coastguard Worker   void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
89*9880d681SAndroid Build Coastguard Worker 
90*9880d681SAndroid Build Coastguard Worker   void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override;
91*9880d681SAndroid Build Coastguard Worker 
92*9880d681SAndroid Build Coastguard Worker   void EmitAMDGPUHsaModuleScopeGlobal(StringRef GlobalName) override;
93*9880d681SAndroid Build Coastguard Worker 
94*9880d681SAndroid Build Coastguard Worker   void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) override;
95*9880d681SAndroid Build Coastguard Worker };
96*9880d681SAndroid Build Coastguard Worker 
97*9880d681SAndroid Build Coastguard Worker }
98*9880d681SAndroid Build Coastguard Worker #endif
99