clang 23.0.0git
NVPTX.cpp
Go to the documentation of this file.
1//===- NVPTX.cpp ----------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
10#include "llvm/Support/NVPTXAddrSpace.h"
11
12namespace cir {
13
14namespace {
15
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,
21};
22
23class NVPTXTargetLoweringInfo : public TargetLoweringInfo {
24public:
25 unsigned getTargetAddrSpaceFromCIRAddrSpace(
26 cir::LangAddressSpace addrSpace) const override {
27
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];
32 }
33};
34
35} // namespace
36
37std::unique_ptr<TargetLoweringInfo> createNVPTXTargetLoweringInfo() {
38 return std::make_unique<NVPTXTargetLoweringInfo>();
39}
40} // namespace cir
std::unique_ptr< TargetLoweringInfo > createNVPTXTargetLoweringInfo()
Definition NVPTX.cpp:37