diff options
author | Chris Bieneman <chris.bieneman@me.com> | 2022-03-28 15:01:41 -0500 |
---|---|---|
committer | Chris Bieneman <chris.bieneman@me.com> | 2022-03-28 16:16:17 -0500 |
commit | d394f9f8970d758cb39151328dd3040ba7f414ae (patch) | |
tree | c5f740d80e33f85ddfe1ff4d431ec372b2ebda10 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 577827cbbf1033612d6ce15169f33ee5709abbfc (diff) | |
download | llvm-d394f9f8970d758cb39151328dd3040ba7f414ae.zip llvm-d394f9f8970d758cb39151328dd3040ba7f414ae.tar.gz llvm-d394f9f8970d758cb39151328dd3040ba7f414ae.tar.bz2 |
Add HLSL Language Option and Preprocessor
Bringing in HLSL as a language as well as language options for each of
the HLSL language standards.
While the HLSL language is unimplemented, this patch adds the
HLSL-specific preprocessor defines which enables testing of the command
line options through the driver.
Reviewed By: pete, rnk
Differential Revision: https://reviews.llvm.org/D122087
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index b2221198..f8fd3a29 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -2623,6 +2623,9 @@ static void GenerateFrontendArgs(const FrontendOptions &Opts, case Language::LLVM_IR: Lang = "ir"; break; + case Language::HLSL: + Lang = "hlsl"; + break; } GenerateArg(Args, OPT_x, @@ -2809,6 +2812,7 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, .Case("objective-c", Language::ObjC) .Case("objective-c++", Language::ObjCXX) .Case("renderscript", Language::RenderScript) + .Case("hlsl", Language::HLSL) .Default(Language::Unknown); // "objc[++]-cpp-output" is an acceptable synonym for @@ -3220,6 +3224,9 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK, case Language::HIP: LangStd = LangStandard::lang_hip; break; + case Language::HLSL: + LangStd = LangStandard::lang_hlsl2021; + break; } } @@ -3241,6 +3248,8 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK, Opts.HexFloats = Std.hasHexFloats(); Opts.ImplicitInt = Std.hasImplicitInt(); + Opts.HLSL = IK.getLanguage() == Language::HLSL; + // Set OpenCL Version. Opts.OpenCL = Std.isOpenCL(); if (LangStd == LangStandard::lang_opencl10) @@ -3257,6 +3266,18 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK, Opts.OpenCLCPlusPlusVersion = 100; else if (LangStd == LangStandard::lang_openclcpp2021) Opts.OpenCLCPlusPlusVersion = 202100; + else if (LangStd == LangStandard::lang_hlsl2015) + Opts.HLSLVersion = (unsigned)LangOptions::HLSL_2015; + else if (LangStd == LangStandard::lang_hlsl2016) + Opts.HLSLVersion = (unsigned)LangOptions::HLSL_2016; + else if (LangStd == LangStandard::lang_hlsl2017) + Opts.HLSLVersion = (unsigned)LangOptions::HLSL_2017; + else if (LangStd == LangStandard::lang_hlsl2018) + Opts.HLSLVersion = (unsigned)LangOptions::HLSL_2018; + else if (LangStd == LangStandard::lang_hlsl2021) + Opts.HLSLVersion = (unsigned)LangOptions::HLSL_2021; + else if (LangStd == LangStandard::lang_hlsl202x) + Opts.HLSLVersion = (unsigned)LangOptions::HLSL_202x; // OpenCL has some additional defaults. if (Opts.OpenCL) { @@ -3341,6 +3362,9 @@ static bool IsInputCompatibleWithStandard(InputKind IK, // FIXME: The -std= value is not ignored; it affects the tokenization // and preprocessing rules if we're preprocessing this asm input. return true; + + case Language::HLSL: + return S.getLanguage() == Language::HLSL; } llvm_unreachable("unexpected input language"); @@ -3373,6 +3397,9 @@ static StringRef GetInputKindName(InputKind IK) { case Language::LLVM_IR: return "LLVM IR"; + case Language::HLSL: + return "HLSL"; + case Language::Unknown: break; } |