clang 23.0.0git
OffloadArch.h
Go to the documentation of this file.
1//===--- OffloadArch.h - Definition of offloading architectures --- C++ -*-===//
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//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_CLANG_BASIC_OFFLOADARCH_H
10#define LLVM_CLANG_BASIC_OFFLOADARCH_H
11
12namespace llvm {
13class StringRef;
14class Triple;
15} // namespace llvm
16
17namespace clang {
18
19enum class OffloadArch {
22 // TODO: Deprecate and remove GPU architectures older than sm_52.
26 // This has a name conflict with sys/mac.h on AIX, rename it as a workaround.
123 Generic, // A processor model named 'generic' if the target backend defines a
124 // public one.
125 // Intel CPUs
127 // Intel GPUs
130
133};
134
135static inline bool IsNVIDIAOffloadArch(OffloadArch A) {
136 return A >= OffloadArch::SM_20 && A < OffloadArch::GFX600;
137}
138
139static inline bool IsAMDOffloadArch(OffloadArch A) {
140 // Generic processor model is for testing only.
141 return A >= OffloadArch::GFX600 && A < OffloadArch::Generic;
142}
143
147
151
155
156const char *OffloadArchToString(OffloadArch A);
157const char *OffloadArchToVirtualArchString(OffloadArch A);
158
159// Convert a string to an OffloadArch enum value. Returns
160// OffloadArch::Unknown if the string is not recognized.
161OffloadArch StringToOffloadArch(llvm::StringRef S);
162
163llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
164 OffloadArch ID);
165
166} // namespace clang
167
168#endif // LLVM_CLANG_BASIC_OFFLOADARCH_H
The JSON file list parser is used to communicate input to InstallAPI.
static bool IsIntelOffloadArch(OffloadArch Arch)
static bool IsIntelCPUOffloadArch(OffloadArch Arch)
static bool IsAMDOffloadArch(OffloadArch A)
static bool IsNVIDIAOffloadArch(OffloadArch A)
const char * OffloadArchToVirtualArchString(OffloadArch A)
OffloadArch StringToOffloadArch(llvm::StringRef S)
const char * OffloadArchToString(OffloadArch A)
static bool IsIntelGPUOffloadArch(OffloadArch Arch)
llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple, OffloadArch ID)
@ Generic
not a target-specific vector type
Definition TypeBase.h:4198
Diagnostic wrappers for TextAPI types for error reporting.
Definition Dominators.h:30