1 //===--- AMDGPUMachineModuleInfo.h ------------------------------*- 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 /// \file 11 /// \brief AMDGPU Machine Module Info. 12 /// 13 // 14 //===----------------------------------------------------------------------===// 15 16 #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEMODULEINFO_H 17 #define LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEMODULEINFO_H 18 19 #include "llvm/CodeGen/MachineModuleInfo.h" 20 #include "llvm/CodeGen/MachineModuleInfoImpls.h" 21 #include "llvm/IR/LLVMContext.h" 22 23 namespace llvm { 24 25 class AMDGPUMachineModuleInfo final : public MachineModuleInfoELF { 26 private: 27 28 // All supported memory/synchronization scopes can be found here: 29 // http://llvm.org/docs/AMDGPUUsage.html#memory-scopes 30 31 /// \brief Agent synchronization scope ID. 32 SyncScope::ID AgentSSID; 33 /// \brief Workgroup synchronization scope ID. 34 SyncScope::ID WorkgroupSSID; 35 /// \brief Wavefront synchronization scope ID. 36 SyncScope::ID WavefrontSSID; 37 38 public: 39 AMDGPUMachineModuleInfo(const MachineModuleInfo &MMI); 40 41 /// \returns Agent synchronization scope ID. 42 SyncScope::ID getAgentSSID() const { 43 return AgentSSID; 44 } 45 /// \returns Workgroup synchronization scope ID. 46 SyncScope::ID getWorkgroupSSID() const { 47 return WorkgroupSSID; 48 } 49 /// \returns Wavefront synchronization scope ID. 50 SyncScope::ID getWavefrontSSID() const { 51 return WavefrontSSID; 52 } 53 }; 54 55 } // end namespace llvm 56 57 #endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEMODULEINFO_H 58