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};
21
22class NVPTXTargetLoweringInfo : public TargetLoweringInfo {
23public:
24 unsigned getTargetAddrSpaceFromCIRAddrSpace(
25 cir::LangAddressSpace addrSpace) const override {
26
27 auto idx = static_cast<unsigned>(addrSpace);
28 assert(idx < std::size(NVPTXAddrSpaceMap) &&
29 "Unknown CIR address space for NVPTX target");
30 return NVPTXAddrSpaceMap[idx];
31 }
32};
33
34} // namespace
35
36std::unique_ptr<TargetLoweringInfo> createNVPTXTargetLoweringInfo() {
37 return std::make_unique<NVPTXTargetLoweringInfo>();
38}
39} // namespace cir
std::unique_ptr< TargetLoweringInfo > createNVPTXTargetLoweringInfo()
Definition NVPTX.cpp:36