[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 closed https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 01/14] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 02/14] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 01/13] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 02/13] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 01/12] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 02/12] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 01/11] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 02/11] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -753,6 +753,7 @@ def err_drv_hlsl_bad_shader_required_in_target : Error< def err_drv_hlsl_bad_shader_unsupported : Error< "%select{shader model|Vulkan environment|shader stage}0 '%1' in target '%2' is invalid for HLSL code generation">; + llvm-beanz wrote: nit: leftover whitespace change. ```suggestion ``` https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/llvm-beanz edited https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/llvm-beanz approved this pull request. Two small nits with suggestions. Otherwise LGTM. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,13 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + Values<"2016, 2017, 2018, 2021, 202x">, + NormalizedValuesScope<"LangStandard">, + NormalizedValues<["hlsl2016", "hlsl2017", "hlsl2018", "hlsl2021", "hlsl202x"]>; llvm-beanz wrote: nit: Do we need these? The `-help` spew should be driven by the `Values` entry right? ```suggestion ``` https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 01/10] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 02/10] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,11 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + NormalizedValues<["2016", "2017", "2018", "2021", "202x"]>; bob80905 wrote: Populating the help spew seems helpful! I can remove the marshalling part, but it seems helpful to leave the rest as is. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -753,6 +753,9 @@ def err_drv_hlsl_bad_shader_required_in_target : Error< def err_drv_hlsl_bad_shader_unsupported : Error< "%select{shader model|Vulkan environment|shader stage}0 '%1' in target '%2' is invalid for HLSL code generation">; +def err_drv_hlsl_dxc_bad_argument_value : Error< llvm-beanz wrote: Can we use `err_drv_invalid_value` instead? I don't think there is any reason the error needs to say `dxc` in the text. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,11 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + NormalizedValues<["2016", "2017", "2018", "2021", "202x"]>; llvm-beanz wrote: In the current state of this patch I don't think this does anything. I don't think the `Values` or `NormalizedValues` stuff really do anything (other than maybe populating the help spew) if you're not using the marshalling infrastructure (https://clang.llvm.org/docs/InternalsManual.html#option-marshalling-infrastructure). We don't currently have a `DriverOptions` construct, so driver-only options can't use the marshalling stuff, which is unfortunate. I think for the purposes of this change we should probably go with the direction in this PR and revisit marshalling later. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/llvm-beanz commented: Minor suggestion about the diagnostic. @MaskRay do you have any thoughts about a follow-up change to add a `DriverOptions` structure so that we could use argument marshalling for driver options? https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/llvm-beanz edited https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 1/7] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 2/7] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -0,0 +1,18 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck -check-prefix=2017 %s +// RUN: %clang_dxc -T lib_6_4 /HV 2018 %s 2>&1 -### | FileCheck -check-prefix=2018 %s +// RUN: %clang_dxc -T lib_6_4 /HV 2021 %s 2>&1 -### | FileCheck -check-prefix=2021 %s +// RUN: %clang_dxc -T lib_6_4 /HV 202x %s 2>&1 -### | FileCheck -check-prefix=202x %s +// RUN: not %clang_dxc -T lib_6_4 /HV gibberish -### %s 2>&1 | FileCheck -check-prefix=CHECK-ERR %s + +// 2016: "-std=hlsl2016" +// 2017: "-std=hlsl2017" +// 2018: "-std=hlsl2018" +// 2021: "-std=hlsl2021" +// 202x: "-std=hlsl202x" +// CHECK-ERR: error: 'HV' dxc argument has invalid value 'gibberish' llvm-beanz wrote: We should be able to test that the `-std` flag is set for each possible value (as you do), and that if you don't pass `/HV` we don't pass through a `-std` flag. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -226,6 +226,7 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } + llvm-beanz wrote: Unnecessary whitespace change. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -139,6 +139,7 @@ struct LangStandard { bool isOpenCL() const { return Flags & OpenCL; } static Kind getLangKind(StringRef Name); + static Kind getHLSLLangKind(StringRef Name); llvm-beanz wrote: This either. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -753,6 +753,9 @@ def err_drv_hlsl_bad_shader_required_in_target : Error< def err_drv_hlsl_bad_shader_unsupported : Error< "%select{shader model|Vulkan environment|shader stage}0 '%1' in target '%2' is invalid for HLSL code generation">; +def err_drv_hlsl_dxc_bad_argument_value : Error< + "'%0' dxc argument has invalid value '%1'">; + llvm-beanz wrote: This doesn't seem to be used anymore. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8549,7 +8549,10 @@ def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">, - NormalizedValues<["2016", "2017", "2018", "2021", "202x"]>; + Values<"2016, 2017, 2018, 2021, 202x">, + NormalizedValues<["lang_hlsl2016", "lang_hlsl2017", "lang_hlsl2018", "lang_hlsl2021", "lang_hlsl202x"]>, + NormalizedValuesScope<"LangStandard">, + MarshallingInfoEnum, "lang_hlsl2021">; llvm-beanz wrote: Do we need a default value for this? The default language version is set elsewhere to HLSL 2021, having a default here will make it so that we need to set the default in two places instead of one when we change it. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 1/8] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 2/8] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -69,6 +69,16 @@ LangStandard::Kind LangStandard::getLangKind(StringRef Name) { .Default(lang_unspecified); } +LangStandard::Kind LangStandard::getHLSLLangKind(StringRef Name) { + return llvm::StringSwitch(Name) + .Case("2016", LangStandard::lang_hlsl2016) + .Case("2017", LangStandard::lang_hlsl2017) + .Case("2018", LangStandard::lang_hlsl2018) + .Case("2021", LangStandard::lang_hlsl2021) + .Case("202x", LangStandard::lang_hlsl202x) + .Default(LangStandard::lang_unspecified); +} llvm-beanz wrote: This function isn't needed if you use the Options Enum marshalling that I suggested. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 1/7] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 2/7] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,11 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + Values<"2016, 2017, 2018, 2021, 202x">; bob80905 wrote: I've decided to use NormalizedValues instead of values, but I no longer need access to valid values thanks to Xiang's suggestion. So I think I should just leave the values there for documentation's sake, but the values won't actually be read by option translation. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,11 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + Values<"2016, 2017, 2018, 2021, 202x">; llvm-beanz wrote: Oh! Also look at some of the other options. You can use a combination of `Values`, `NormalizedValues` and `MarshallingInfoEnum`, to have the parser generated to parse directly to the `HLSLLangStd` enumeration. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,11 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + Values<"2016, 2017, 2018, 2021, 202x">; llvm-beanz wrote: I think the problem is that you're using `Values` wrong. That should be taking a list of possible values not a string. Look at how the `target_profile` flag is implemented for an example. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/python3kgae approved this pull request. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -69,6 +69,21 @@ LangStandard::Kind LangStandard::getLangKind(StringRef Name) { .Default(lang_unspecified); } +LangStandard::Kind LangStandard::getHLSLLangKind(StringRef Name) { + if (Name == "2016") python3kgae wrote: Maybe a StringSwitch here. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -226,6 +226,47 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { + // Translate -HV into -std for llvm + // depending on the value given + llvm::StringRef value(A->getValue()); + llvm::StringRef acceptedValues( + Opts.getOptionValues(options::OPT_dxc_hlsl_version)); + llvm::SmallVector validValues; + acceptedValues.split(validValues, ", "); + if (value == validValues[0]) { bob80905 wrote: I've added your recommended function, hopefully it is what you envisioned? https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 1/6] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 2/6] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -226,6 +226,47 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { + // Translate -HV into -std for llvm + // depending on the value given + llvm::StringRef value(A->getValue()); + llvm::StringRef acceptedValues( + Opts.getOptionValues(options::OPT_dxc_hlsl_version)); + llvm::SmallVector validValues; + acceptedValues.split(validValues, ", "); + if (value == validValues[0]) { python3kgae wrote: We can do something like https://github.com/llvm/llvm-project/blob/main/clang/lib/Frontend/CompilerInvocation.cpp#L3689 where the OPT_std_EQ is checked with the LangStandard::getLangKind at https://github.com/llvm/llvm-project/blob/main/clang/lib/Basic/LangStandards.cpp#L64 Maybe add LangStandard::getHLSLLangKind ? https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -226,6 +226,47 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { + // Translate -HV into -std for llvm + // depending on the value given + llvm::StringRef value(A->getValue()); + llvm::StringRef acceptedValues( + Opts.getOptionValues(options::OPT_dxc_hlsl_version)); + llvm::SmallVector validValues; + acceptedValues.split(validValues, ", "); + if (value == validValues[0]) { bob80905 wrote: The idea to use getOptionValues was an idea inspired by @llvm-beanz 's feedback, to prevent littering direct string comparisons into the code and unify string handling. Originally, I did have the direct "2016" comparison. I'm not sure if the LLVM community would want access to these option values, but it seems like the most convenient way to get around direct string comparisons. I do remember string comparisons were a pain point in the DXC codebase and want to try and avoid that. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -226,6 +226,47 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { + // Translate -HV into -std for llvm + // depending on the value given + llvm::StringRef value(A->getValue()); + llvm::StringRef acceptedValues( + Opts.getOptionValues(options::OPT_dxc_hlsl_version)); + llvm::SmallVector validValues; + acceptedValues.split(validValues, ", "); + if (value == validValues[0]) { python3kgae wrote: Why not just check value == "2016" here so we don't need to getOptionValues? And the code will be easier to understand. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,11 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + Values<"2016, 2017, 2018, 2021, 202x">; bob80905 wrote: No, I need the change in OptTable.h to have access to the set of valid values to the argument. With it, I can then loop through the valid values and determine which transformation to apply. And, if there are 0 matches, I know that the given value is invalid, so I emit a diagnostic. I need some place to store all valid values, and I figured that the option object would be the most convenient. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,11 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + Values<"2016, 2017, 2018, 2021, 202x">; python3kgae wrote: Will you remove the change in OptTable.h then? https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,11 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + Values<"2016, 2017, 2018, 2021, 202x">; bob80905 wrote: No, I added that logic myself. I've manually checked all the valid values and emit an error if there are no matches in HLSL.cpp:263. Regardless, I wouldn't need that logic, because I need to perform a unique transformation exhaustively in every valid case, and if there are no matching valid cases, then I emit an error with `else`. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -8545,6 +8545,11 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">, + Values<"2016, 2017, 2018, 2021, 202x">; python3kgae wrote: Does the Values already make sure error be reported when give input not in the Values? https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 1/5] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 2/5] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
github-actions[bot] wrote: :warning: C/C++ code formatter, clang-format found issues in your code. :warning: You can test this locally with the following command: ``bash git-clang-format --diff 6325dd57318bc4640dded8f59cadd315aa8185ae 79f5172bc97fb2c8591d46198e8eee7beaa66786 -- clang/lib/Driver/ToolChains/HLSL.cpp llvm/include/llvm/Option/OptTable.h `` View the diff from clang-format here. ``diff diff --git a/llvm/include/llvm/Option/OptTable.h b/llvm/include/llvm/Option/OptTable.h index a310637454..5f82536525 100644 --- a/llvm/include/llvm/Option/OptTable.h +++ b/llvm/include/llvm/Option/OptTable.h @@ -154,7 +154,7 @@ public: return getInfo(id).MetaVar; } - /// Get the meta-variable name to use when describing + /// Get the meta-variable name to use when describing /// this options values in the help text. const char *getOptionValues(OptSpecifier id) const { return getInfo(id).Values; `` https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
@@ -226,6 +226,28 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { + // Translate -HV into -std for llvm + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } bob80905 wrote: Added a case for 202x and for unrecognized values. I notice 2015 used to be an accepted value, but I'm not sure how we want to treat that option, since DXC seems to treat it as a special option and has extra conditions for accepting it. https://github.com/llvm/llvm-project/pull/83938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [HLSL] Add -HV option translation to clang-dxc.exe (PR #83938)
https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/83938 >From 7453ffdea39c624221c9696394bbd47be7eec662 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 13:42:02 -0800 Subject: [PATCH 1/4] first try --- clang/include/clang/Driver/Options.td | 4 clang/lib/Driver/ToolChains/HLSL.cpp | 8 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index bef38738fde82e..6fe3dea1655b24 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,6 +8545,10 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; +def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, + Group, + Visibility<[DXCOption]>, + HelpText<"HLSL Version">; def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index c6ad862b229420..0ffc15155e4db3 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,6 +226,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } +if (A->getOption().getID() == options::OPT_HLSL_Version) { + // Translate -HV into -std for llvm + DAL->AddSeparateArg(nullptr, + Opts.getOption(options::OPT_stdlibxx_isystem), + A->getValue()); + A->claim(); + continue; +} DAL->append(A); } >From 69953d737b842f2144ebe0519d810c57b5c031b9 Mon Sep 17 00:00:00 2001 From: Joshua Batista Date: Mon, 4 Mar 2024 17:11:37 -0800 Subject: [PATCH 2/4] add HV option, and translation test --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/HLSL.cpp | 22 ++ clang/test/Options/HV.hlsl| 13 + 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 clang/test/Options/HV.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6fe3dea1655b24..c4caf232887b56 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8545,7 +8545,7 @@ def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"Entry point name">; -def dxc_HlslVersion : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, +def dxc_hlsl_version : Option<["--", "/", "-"], "HV", KIND_JOINED_OR_SEPARATE>, Group, Visibility<[DXCOption]>, HelpText<"HLSL Version">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 0ffc15155e4db3..fe258919dedf3e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -226,11 +226,25 @@ HLSLToolChain::TranslateArgs(const DerivedArgList , StringRef BoundArch, A->claim(); continue; } -if (A->getOption().getID() == options::OPT_HLSL_Version) { +if (A->getOption().getID() == options::OPT_dxc_hlsl_version) { // Translate -HV into -std for llvm - DAL->AddSeparateArg(nullptr, - Opts.getOption(options::OPT_stdlibxx_isystem), - A->getValue()); + // depending on the value given, assign std to: + // c++14,c++17,c++20,c++latest,c11,c17 + const char *value = A->getValue(); + if (strcmp(value, "2016") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2016"); + } else if (strcmp(value, "2017") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2017"); + } else if (strcmp(value, "2018") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2018"); + } else if (strcmp(value, "2021") == 0) { +DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_std_EQ), +"hlsl2021"); + } + A->claim(); continue; } diff --git a/clang/test/Options/HV.hlsl b/clang/test/Options/HV.hlsl new file mode 100644 index 00..59158ff2f001ed --- /dev/null +++ b/clang/test/Options/HV.hlsl @@ -0,0 +1,13 @@ +// RUN: %clang_dxc -T lib_6_4 -HV 2016 %s 2>&1 -### | FileCheck -check-prefix=2016 %s +// RUN: %clang_dxc -T lib_6_4 -HV 2017 %s 2>&1 -### | FileCheck