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.
117 Generic, // A processor model named 'generic' if the target backend defines a
118 // public one.
119 // Intel CPUs
121 // Intel GPUs
124
127};
128
129static inline bool IsNVIDIAOffloadArch(OffloadArch A) {
130 return A >= OffloadArch::SM_20 && A < OffloadArch::GFX600;
131}
132
133static inline bool IsAMDOffloadArch(OffloadArch A) {
134 // Generic processor model is for testing only.
135 return A >= OffloadArch::GFX600 && A < OffloadArch::Generic;
136}
137
141
145
149
150const char *OffloadArchToString(OffloadArch A);
151const char *OffloadArchToVirtualArchString(OffloadArch A);
152
153// Convert a string to an OffloadArch enum value. Returns
154// OffloadArch::Unknown if the string is not recognized.
155OffloadArch StringToOffloadArch(llvm::StringRef S);
156
157llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
158 OffloadArch ID);
159
160} // namespace clang
161
162#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:4186
Diagnostic wrappers for TextAPI types for error reporting.
Definition Dominators.h:30