Skip to content

Commit eeb3165

Browse files
author
Greg Roth
committed
Enable matrix types in select HLSL standards
Instead of adding an HLSL component to the checks for matrix types, this just enables them whenever an HLSL version that has that explicitly set is chosen
1 parent ae1a58b commit eeb3165

File tree

4 files changed

+16
-10
lines changed

4 files changed

+16
-10
lines changed

clang/include/clang/Basic/LangStandard.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ enum LangFeatures {
6464
GNUMode = (1 << 14),
6565
HexFloat = (1 << 15),
6666
OpenCL = (1 << 16),
67-
HLSL = (1 << 17)
67+
HLSL = (1 << 17),
68+
MatrixTypes = (1 << 18)
6869
};
6970

7071
/// LangStandard - Information about the properties of a particular language
@@ -150,6 +151,9 @@ struct LangStandard {
150151
/// isOpenCL - Language is a OpenCL variant.
151152
bool isOpenCL() const { return Flags & OpenCL; }
152153

154+
/// hasMatrixTypes - Language supports matrix types.
155+
bool hasMatrixTypes() const { return Flags & MatrixTypes; }
156+
153157
static Kind getLangKind(StringRef Name);
154158
static Kind getHLSLLangKind(StringRef Name);
155159
static const LangStandard &getLangStandardForKind(Kind K);

clang/include/clang/Basic/LangStandards.def

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -230,35 +230,35 @@ LANGSTANDARD_ALIAS_DEPR(openclcpp2021, "CLC++2021")
230230
// HLSL
231231
LANGSTANDARD(hlsl, "hlsl",
232232
HLSL, "High Level Shader Language",
233-
LineComment | HLSL | CPlusPlus | CPlusPlus11)
233+
LineComment | MatrixTypes | HLSL | CPlusPlus | CPlusPlus11)
234234

235235
LANGSTANDARD(hlsl2015, "hlsl2015",
236236
HLSL, "High Level Shader Language 2015",
237-
LineComment | HLSL | CPlusPlus | CPlusPlus11)
237+
LineComment | MatrixTypes | HLSL | CPlusPlus | CPlusPlus11)
238238

239239
LANGSTANDARD(hlsl2016, "hlsl2016",
240240
HLSL, "High Level Shader Language 2016",
241-
LineComment | HLSL | CPlusPlus | CPlusPlus11)
241+
LineComment | MatrixTypes | HLSL | CPlusPlus | CPlusPlus11)
242242

243243
LANGSTANDARD(hlsl2017, "hlsl2017",
244244
HLSL, "High Level Shader Language 2017",
245-
LineComment | HLSL | CPlusPlus | CPlusPlus11)
245+
LineComment | MatrixTypes | HLSL | CPlusPlus | CPlusPlus11)
246246

247247
LANGSTANDARD(hlsl2018, "hlsl2018",
248248
HLSL, "High Level Shader Language 2018",
249-
LineComment | HLSL | CPlusPlus | CPlusPlus11)
249+
LineComment | MatrixTypes | HLSL | CPlusPlus | CPlusPlus11)
250250

251251
LANGSTANDARD(hlsl2021, "hlsl2021",
252252
HLSL, "High Level Shader Language 2021",
253-
LineComment | HLSL | CPlusPlus | CPlusPlus11)
253+
LineComment | MatrixTypes | HLSL | CPlusPlus | CPlusPlus11)
254254

255255
LANGSTANDARD(hlsl202x, "hlsl202x",
256256
HLSL, "High Level Shader Language 202x",
257-
LineComment | HLSL | CPlusPlus | CPlusPlus11)
257+
LineComment | MatrixTypes | HLSL | CPlusPlus | CPlusPlus11)
258258

259259
LANGSTANDARD(hlsl202y, "hlsl202y",
260260
HLSL, "High Level Shader Language 202y",
261-
LineComment | HLSL | CPlusPlus | CPlusPlus11)
261+
LineComment | MatrixTypes | HLSL | CPlusPlus | CPlusPlus11)
262262

263263

264264
#undef LANGSTANDARD

clang/include/clang/Driver/Options.td

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,7 @@ defvar hip = LangOpts<"HIP">;
632632
defvar gnu_mode = LangOpts<"GNUMode">;
633633
defvar asm_preprocessor = LangOpts<"AsmPreprocessor">;
634634
defvar hlsl = LangOpts<"HLSL">;
635+
defvar matrixtypes = LangOpts<"MatrixTypes">;
635636

636637
defvar std = !strconcat("LangStandard::getLangStandardForKind(", lang_std.KeyPath, ")");
637638

@@ -4334,7 +4335,7 @@ defm ptrauth_init_fini_address_discrimination : OptInCC1FFlag<"ptrauth-init-fini
43344335
def fenable_matrix : Flag<["-"], "fenable-matrix">, Group<f_Group>,
43354336
Visibility<[ClangOption, CC1Option]>,
43364337
HelpText<"Enable matrix data type and related builtin functions">,
4337-
MarshallingInfoFlag<LangOpts<"MatrixTypes">, hlsl.KeyPath>;
4338+
MarshallingInfoFlag<LangOpts<"MatrixTypes">, matrixtypes.KeyPath>;
43384339

43394340
defm raw_string_literals : BoolFOption<"raw-string-literals",
43404341
LangOpts<"RawStringLiterals">, Default<std#".hasRawStringLiterals()">,

clang/lib/Basic/LangOptions.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ void LangOptions::setLangDefaults(LangOptions &Opts, Language Lang,
126126
Opts.WChar = Std.isCPlusPlus();
127127
Opts.Digraphs = Std.hasDigraphs();
128128
Opts.RawStringLiterals = Std.hasRawStringLiterals();
129+
Opts.MatrixTypes = Std.hasMatrixTypes();
129130

130131
Opts.HLSL = Lang == Language::HLSL;
131132
if (Opts.HLSL && Opts.IncludeDefaultHeader)

0 commit comments

Comments
 (0)