blob: d37677c6b86388539c85788bdbd826a2159dd739 [file] [log] [blame]
Tom Stellard347ac792015-06-26 21:15:07 +00001//===-- 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
Tom Stellardff7416b2015-06-26 21:58:31 +000010#include "AMDKernelCodeT.h"
Tom Stellard347ac792015-06-26 21:15:07 +000011#include "llvm/MC/MCStreamer.h"
Tom Stellard347ac792015-06-26 21:15:07 +000012#include "llvm/MC/MCSymbol.h"
13#include "llvm/Support/Debug.h"
14namespace llvm {
15
16class MCELFStreamer;
17
18class AMDGPUTargetStreamer : public MCTargetStreamer {
19public:
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;
Tom Stellardff7416b2015-06-26 21:58:31 +000028
29 virtual void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) = 0;
Tom Stellard347ac792015-06-26 21:15:07 +000030};
31
32class AMDGPUTargetAsmStreamer : public AMDGPUTargetStreamer {
33 formatted_raw_ostream &OS;
34public:
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;
Tom Stellardff7416b2015-06-26 21:58:31 +000042
43 void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
Tom Stellard347ac792015-06-26 21:15:07 +000044};
45
46class 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
61public:
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;
Tom Stellardff7416b2015-06-26 21:58:31 +000072
73 void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
74
Tom Stellard347ac792015-06-26 21:15:07 +000075};
76
77}