13#ifndef LLVM_CLANG_LIB_BASIC_TARGETS_NVPTX_H
14#define LLVM_CLANG_LIB_BASIC_TARGETS_NVPTX_H
19#include "llvm/Support/Compiler.h"
20#include "llvm/TargetParser/Triple.h"
64 static const char *
const GCCRegNames[];
67 std::unique_ptr<TargetInfo> HostTarget;
71 unsigned TargetPointerWidth);
81 const std::vector<std::string> &FeaturesVec)
const override {
83 Features[
"ptx" + std::to_string(PTXVersion)] =
true;
84 return TargetInfo::initFeatureMap(Features, Diags, CPU, FeaturesVec);
87 bool hasFeature(StringRef Feature)
const override;
119 return TargetInfo::CharPtrBuiltinVaList;
127 for (
int i =
static_cast<int>(CudaArch::SM_20);
128 i < static_cast<int>(CudaArch::Generic); ++i)
132 bool setCPU(
const std::string &Name)
override {
134 return GPU != CudaArch::UNKNOWN;
138 auto &Opts = getSupportedOpenCLOpts();
139 Opts[
"cl_clang_storage_class_specifiers"] =
true;
140 Opts[
"__cl_clang_function_pointers"] =
true;
141 Opts[
"__cl_clang_variadic_functions"] =
true;
142 Opts[
"__cl_clang_non_portable_kernel_param_types"] =
true;
143 Opts[
"__cl_clang_bitfields"] =
true;
145 Opts[
"cl_khr_fp64"] =
true;
146 Opts[
"__opencl_c_fp64"] =
true;
147 Opts[
"cl_khr_byte_addressable_store"] =
true;
148 Opts[
"cl_khr_global_int32_base_atomics"] =
true;
149 Opts[
"cl_khr_global_int32_extended_atomics"] =
true;
150 Opts[
"cl_khr_local_int32_base_atomics"] =
true;
151 Opts[
"cl_khr_local_int32_extended_atomics"] =
true;
155 return llvm::omp::NVPTXGridValues;
164 std::optional<unsigned>
178 return HostTarget->checkCallingConvention(CC);
static bool hasFeature(StringRef Feature, const LangOptions &LangOpts, const TargetInfo &Target)
Determine whether a translation unit built using the current language options has the given feature.
Defines the clang::TargetOptions class.
Concrete class used by the front-end to report problems and issues.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
Exposes information about the current target.
BuiltinVaListKind
The different kinds of __builtin_va_list types defined by the target implementation.
Options for controlling the target.
bool hasBitIntType() const override
Determine whether the _BitInt type is supported on this target.
BuiltinVaListKind getBuiltinVaListKind() const override
Returns the kind of __builtin_va_list type that should be used with this target.
ArrayRef< TargetInfo::GCCRegAlias > getGCCRegAliases() const override
void fillValidCPUList(SmallVectorImpl< StringRef > &Values) const override
Fill a SmallVectorImpl with the valid values to setCPU.
bool validateAsmConstraint(const char *&Name, TargetInfo::ConstraintInfo &Info) const override
bool hasBFloat16Type() const override
Determine whether the _BFloat16 type is supported on this target.
std::string_view getClobbers() const override
Returns a string of target-specific clobbers, in LLVM format.
std::optional< unsigned > getDWARFAddressSpace(unsigned AddressSpace) const override
const llvm::omp::GV & getGridValue() const override
bool setCPU(const std::string &Name) override
Target the specified CPU.
CallingConvCheckResult checkCallingConvention(CallingConv CC) const override
Determines whether a given calling convention is valid for the target.
bool isValidCPUName(StringRef Name) const override
brief Determine whether this TargetInfo supports the given CPU name.
bool initFeatureMap(llvm::StringMap< bool > &Features, DiagnosticsEngine &Diags, StringRef CPU, const std::vector< std::string > &FeaturesVec) const override
Initialize the map with the default set of target features for the CPU this should include all legal ...
void setSupportedOpenCLOpts() override
Set supported OpenCL extensions and optional core features.
Defines the clang::TargetInfo interface.
static const unsigned NVPTXAddrSpaceMap[]
static const int NVPTXDWARFAddrSpaceMap[]
The DWARF address class.
CudaArch StringToCudaArch(llvm::StringRef S)
CallingConv
CallingConv - Specifies the calling convention that a function uses.
const char * CudaArchToString(CudaArch A)