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