//===--- AMDGPUMachineModuleInfo.h ------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // /// \file /// \brief AMDGPU Machine Module Info. /// // //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEMODULEINFO_H #define LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEMODULEINFO_H #include "llvm/CodeGen/MachineModuleInfo.h" #include "llvm/CodeGen/MachineModuleInfoImpls.h" #include "llvm/IR/LLVMContext.h" namespace llvm { class AMDGPUMachineModuleInfo final : public MachineModuleInfoELF { private: // All supported memory/synchronization scopes can be found here: // http://llvm.org/docs/AMDGPUUsage.html#memory-scopes /// \brief Agent synchronization scope ID. SyncScope::ID AgentSSID; /// \brief Workgroup synchronization scope ID. SyncScope::ID WorkgroupSSID; /// \brief Wavefront synchronization scope ID. SyncScope::ID WavefrontSSID; public: AMDGPUMachineModuleInfo(const MachineModuleInfo &MMI); /// \returns Agent synchronization scope ID. SyncScope::ID getAgentSSID() const { return AgentSSID; } /// \returns Workgroup synchronization scope ID. SyncScope::ID getWorkgroupSSID() const { return WorkgroupSSID; } /// \returns Wavefront synchronization scope ID. SyncScope::ID getWavefrontSSID() const { return WavefrontSSID; } }; } // end namespace llvm #endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUMACHINEMODULEINFO_H