xref: /NextBSD/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.h (revision 84d351007654069f9643c8e4b4802a7f5f08ee42)
1 //===-- AMDGPUTargetStreamer.h - AMDGPU Target Streamer --------*- C++ -*--===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "AMDKernelCodeT.h"
11 #include "llvm/MC/MCStreamer.h"
12 #include "llvm/MC/MCSymbol.h"
13 #include "llvm/Support/Debug.h"
14 namespace llvm {
15 
16 class MCELFStreamer;
17 
18 class AMDGPUTargetStreamer : public MCTargetStreamer {
19 public:
20   AMDGPUTargetStreamer(MCStreamer &S);
21   virtual void EmitDirectiveHSACodeObjectVersion(uint32_t Major,
22                                                  uint32_t Minor) = 0;
23 
24   virtual void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor,
25                                              uint32_t Stepping,
26                                              StringRef VendorName,
27                                              StringRef ArchName) = 0;
28 
29   virtual void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) = 0;
30 };
31 
32 class AMDGPUTargetAsmStreamer : public AMDGPUTargetStreamer {
33   formatted_raw_ostream &OS;
34 public:
35   AMDGPUTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS);
36   void EmitDirectiveHSACodeObjectVersion(uint32_t Major,
37                                          uint32_t Minor) override;
38 
39   void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor,
40                                      uint32_t Stepping, StringRef VendorName,
41                                      StringRef ArchName) override;
42 
43   void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
44 };
45 
46 class AMDGPUTargetELFStreamer : public AMDGPUTargetStreamer {
47 
48   enum NoteType {
49     NT_AMDGPU_HSA_CODE_OBJECT_VERSION = 1,
50     NT_AMDGPU_HSA_HSAIL = 2,
51     NT_AMDGPU_HSA_ISA = 3,
52     NT_AMDGPU_HSA_PRODUCER = 4,
53     NT_AMDGPU_HSA_PRODUCER_OPTIONS = 5,
54     NT_AMDGPU_HSA_EXTENSION = 6,
55     NT_AMDGPU_HSA_HLDEBUG_DEBUG = 101,
56     NT_AMDGPU_HSA_HLDEBUG_TARGET = 102
57   };
58 
59   MCStreamer &Streamer;
60 
61 public:
62   AMDGPUTargetELFStreamer(MCStreamer &S);
63 
64   MCELFStreamer &getStreamer();
65 
66   void EmitDirectiveHSACodeObjectVersion(uint32_t Major,
67                                          uint32_t Minor) override;
68 
69   void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor,
70                                      uint32_t Stepping, StringRef VendorName,
71                                      StringRef ArchName) override;
72 
73   void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
74 
75 };
76 
77 }
78