diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp')
-rw-r--r-- | contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp | 70 |
1 files changed, 60 insertions, 10 deletions
diff --git a/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp b/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp index e259ab47c558..fe3736c07c3c 100644 --- a/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp +++ b/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp @@ -371,6 +371,50 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, const LangOptions &LangOpts, const FrontendOptions &FEOpts, MacroBuilder &Builder) { + if (LangOpts.HLSL) { + Builder.defineMacro("__hlsl_clang"); + // HLSL Version + Builder.defineMacro("__HLSL_VERSION", + Twine((unsigned)LangOpts.getHLSLVersion())); + + if (LangOpts.NativeHalfType) + Builder.defineMacro("__HLSL_ENABLE_16_BIT", + Twine((unsigned)LangOpts.getHLSLVersion())); + + // Shader target information + // "enums" for shader stages + Builder.defineMacro("__SHADER_STAGE_VERTEX", + Twine((uint32_t)ShaderStage::Vertex)); + Builder.defineMacro("__SHADER_STAGE_PIXEL", + Twine((uint32_t)ShaderStage::Pixel)); + Builder.defineMacro("__SHADER_STAGE_GEOMETRY", + Twine((uint32_t)ShaderStage::Geometry)); + Builder.defineMacro("__SHADER_STAGE_HULL", + Twine((uint32_t)ShaderStage::Hull)); + Builder.defineMacro("__SHADER_STAGE_DOMAIN", + Twine((uint32_t)ShaderStage::Domain)); + Builder.defineMacro("__SHADER_STAGE_COMPUTE", + Twine((uint32_t)ShaderStage::Compute)); + Builder.defineMacro("__SHADER_STAGE_AMPLIFICATION", + Twine((uint32_t)ShaderStage::Amplification)); + Builder.defineMacro("__SHADER_STAGE_MESH", + Twine((uint32_t)ShaderStage::Mesh)); + Builder.defineMacro("__SHADER_STAGE_LIBRARY", + Twine((uint32_t)ShaderStage::Library)); + // The current shader stage itself + uint32_t StageInteger = (uint32_t)TI.getTriple().getEnvironment() - + (uint32_t)llvm::Triple::Pixel; + + Builder.defineMacro("__SHADER_TARGET_STAGE", Twine(StageInteger)); + // Add target versions + if (TI.getTriple().getOS() == llvm::Triple::ShaderModel) { + VersionTuple Version = TI.getTriple().getOSVersion(); + Builder.defineMacro("__SHADER_TARGET_MAJOR", Twine(Version.getMajor())); + unsigned Minor = Version.getMinor().value_or(0); + Builder.defineMacro("__SHADER_TARGET_MINOR", Twine(Minor)); + } + return; + } // C++ [cpp.predefined]p1: // The following macro names shall be defined by the implementation: @@ -538,6 +582,9 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, Builder.defineMacro("__HIP_MEMORY_SCOPE_SYSTEM", "5"); if (LangOpts.CUDAIsDevice) Builder.defineMacro("__HIP_DEVICE_COMPILE__"); + if (LangOpts.GPUDefaultStream == + LangOptions::GPUDefaultStreamKind::PerThread) + Builder.defineMacro("HIP_API_PER_THREAD_DEFAULT_STREAM"); } } @@ -558,10 +605,11 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts, Builder.defineMacro("__cpp_unicode_literals", "200710L"); Builder.defineMacro("__cpp_user_defined_literals", "200809L"); Builder.defineMacro("__cpp_lambdas", "200907L"); - Builder.defineMacro("__cpp_constexpr", - LangOpts.CPlusPlus20 ? "201907L" : - LangOpts.CPlusPlus17 ? "201603L" : - LangOpts.CPlusPlus14 ? "201304L" : "200704"); + Builder.defineMacro("__cpp_constexpr", LangOpts.CPlusPlus2b ? "202110L" + : LangOpts.CPlusPlus20 ? "201907L" + : LangOpts.CPlusPlus17 ? "201603L" + : LangOpts.CPlusPlus14 ? "201304L" + : "200704"); Builder.defineMacro("__cpp_constexpr_in_decltype", "201711L"); Builder.defineMacro("__cpp_range_based_for", LangOpts.CPlusPlus17 ? "201603L" : "200907"); @@ -642,6 +690,7 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts, Builder.defineMacro("__cpp_implicit_move", "202011L"); Builder.defineMacro("__cpp_size_t_suffix", "202011L"); Builder.defineMacro("__cpp_if_consteval", "202106L"); + Builder.defineMacro("__cpp_multidimensional_subscript", "202110L"); } if (LangOpts.Char8) Builder.defineMacro("__cpp_char8_t", "201811L"); @@ -773,19 +822,20 @@ static void InitializePredefinedMacros(const TargetInfo &TI, if (version >= VersionTuple(2, 0)) Builder.defineMacro("__OBJC_GNUSTEP_RUNTIME_ABI__", "20"); else - Builder.defineMacro("__OBJC_GNUSTEP_RUNTIME_ABI__", - "1" + Twine(std::min(8U, version.getMinor().getValueOr(0)))); + Builder.defineMacro( + "__OBJC_GNUSTEP_RUNTIME_ABI__", + "1" + Twine(std::min(8U, version.getMinor().value_or(0)))); } if (LangOpts.ObjCRuntime.getKind() == ObjCRuntime::ObjFW) { VersionTuple tuple = LangOpts.ObjCRuntime.getVersion(); unsigned minor = 0; - if (tuple.getMinor().hasValue()) + if (tuple.getMinor()) minor = tuple.getMinor().getValue(); unsigned subminor = 0; - if (tuple.getSubminor().hasValue()) + if (tuple.getSubminor()) subminor = tuple.getSubminor().getValue(); Builder.defineMacro("__OBJFW_RUNTIME_ABI__", @@ -1135,7 +1185,6 @@ static void InitializePredefinedMacros(const TargetInfo &TI, } // Macros to control C99 numerics and <float.h> - Builder.defineMacro("__FLT_EVAL_METHOD__", Twine(TI.getFloatEvalMethod())); Builder.defineMacro("__FLT_RADIX__", "2"); Builder.defineMacro("__DECIMAL_DIG__", "__LDBL_DECIMAL_DIG__"); @@ -1205,6 +1254,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI, case 52: Builder.defineMacro("_OPENMP", "202111"); break; + case 50: default: // Default version is OpenMP 5.0 Builder.defineMacro("_OPENMP", "201811"); @@ -1343,5 +1393,5 @@ void clang::InitializePreprocessor( InitOpts.PrecompiledPreambleBytes.second); // Copy PredefinedBuffer into the Preprocessor. - PP.setPredefines(Predefines.str()); + PP.setPredefines(std::move(PredefineBuffer)); } |