10#include "llvm/Support/NVPTXAddrSpace.h"
16constexpr unsigned NVPTXAddrSpaceMap[] = {
17 llvm::NVPTXAS::ADDRESS_SPACE_GENERIC, llvm::NVPTXAS::ADDRESS_SPACE_GENERIC,
18 llvm::NVPTXAS::ADDRESS_SPACE_SHARED, llvm::NVPTXAS::ADDRESS_SPACE_GLOBAL,
19 llvm::NVPTXAS::ADDRESS_SPACE_CONST, llvm::NVPTXAS::ADDRESS_SPACE_GENERIC,
20 llvm::NVPTXAS::ADDRESS_SPACE_GLOBAL, llvm::NVPTXAS::ADDRESS_SPACE_GLOBAL,
25 unsigned getTargetAddrSpaceFromCIRAddrSpace(
26 cir::LangAddressSpace addrSpace)
const override {
28 auto idx =
static_cast<unsigned>(addrSpace);
29 assert(idx < std::size(NVPTXAddrSpaceMap) &&
30 "Unknown CIR address space for NVPTX target");
31 return NVPTXAddrSpaceMap[idx];
35 convertSyncScope(cir::SyncScopeKind syncScope)
const override {
36 if (syncScope == cir::SyncScopeKind::Workgroup)
37 return cir::SyncScopeKind::Workgroup;
38 return cir::SyncScopeKind::System;
45 return std::make_unique<NVPTXTargetLoweringInfo>();
std::unique_ptr< TargetLoweringInfo > createNVPTXTargetLoweringInfo()