Skip to content

Get Upstream Stuff #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 90 commits into from
Apr 18, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
5304402
[SM6.9] Allow native vectors longer than 4
Nov 21, 2024
e010223
Produce errors for long vectors in invalid contexts
Dec 5, 2024
cd72abe
fix assert for tesselation patch template args
Feb 18, 2025
4d5c2a2
Merge remote-tracking branch 'refs/remotes/origin/main' into longvec_…
Mar 3, 2025
1f12a3f
Refactor builtin type detection with attributes
Mar 3, 2025
de6ac33
Respond to feedback
Feb 21, 2025
76dde0d
Reaname and consolidate longvecs tests
Mar 3, 2025
765ab1c
Refactor, clarify, and expand testing
Mar 3, 2025
fb6538e
clang-format
Mar 3, 2025
19633b2
Handle subclasses and templates of longvector structs
Feb 25, 2025
466bb14
chore: autopublish 2025-03-05T20:50:11Z
github-actions[bot] Mar 5, 2025
66bb772
Identify matrices and vectors by attributes
Mar 6, 2025
20c2609
Use constant vector limit value for cached types
Mar 4, 2025
1b3ad42
Use definitiondata bits to determine long vector presence
Mar 3, 2025
d3fec83
Test for incomplete types in a number of builtin template-like objects
Mar 6, 2025
f7f1e3d
[Metal] Add experimental Metal support (#6805)
llvm-beanz Mar 7, 2025
4d3a2f5
[NFC] Improve time tracing data (#7146)
llvm-beanz Mar 7, 2025
50d1af5
Respond to feedback
Mar 10, 2025
eedab25
clang-format
Mar 10, 2025
e9cf3d2
Respond to feedback from a different PR
Mar 10, 2025
cc0ddc2
Rename long vector check func again
Mar 10, 2025
66e7d23
Respond to feedback
Mar 10, 2025
0102b3c
Use select indices instead of strings as parameters to longvec error
Mar 10, 2025
88479cf
fix formatting induced build break
Mar 10, 2025
7c8005a
[SM6.9] Allow native vectors longer than 4 (#7143)
Mar 11, 2025
a2979e7
Resolve some default error warnings (#7191)
bob80905 Mar 11, 2025
3d69171
Shorten bool conversion, remove unneeded change (#7197)
bob80905 Mar 12, 2025
ec5324d
NFC: Update HLSL_INTRINSIC struct for Flags and MinShaderModel fields…
tex3d Mar 13, 2025
24dedfd
[OMM] Implement front end diagnostics for OMM, including on TraceRayI…
bob80905 Mar 14, 2025
ebc8c5c
[NFC][Doc] Update HLSL to SPIR-V document (#7204)
lumina37 Mar 17, 2025
909c552
Create new raw buffer load lowering function (#7144)
Mar 17, 2025
9ba9689
[SPIR-V] Set RValue for the result of bitfield extract emulation (#7200)
Mar 18, 2025
503ef3c
Switch from tj-actions/changed-files to step-security/changed-files (…
llvm-beanz Mar 18, 2025
3ddf29b
Disallow swizzling on long vectors (#7215)
alsepkow Mar 18, 2025
6475f98
Actually fix the changed-files workflow (#7226)
llvm-beanz Mar 18, 2025
454bbf4
Fix typo in SPIR-V.rst (#7224)
s-perron Mar 19, 2025
6701eed
[SPIRV] Handle a cast to void (#7227)
s-perron Mar 19, 2025
0958e06
[SPIRV] Don't assume entry points are at the start of the worklist. (…
s-perron Mar 19, 2025
b2bcf21
Revert "[SPIRV] Use copy-in/copy-out for non-declaration (#7127)" (#7…
s-perron Mar 19, 2025
a0932fa
Add /bigobj compile option to MSVC build (#7228)
bob80905 Mar 19, 2025
eb02343
NFC: Make hlsl::IntrinsicOp enum values stable (#7231)
tex3d Mar 20, 2025
9e8a698
Lower RayQuery constructor to allocateRayQuery2 (#7205)
bob80905 Mar 20, 2025
8b3fae2
Use Wide String variants explicitly for Windows API calls (#7235)
bob80905 Mar 20, 2025
60e6c76
Add constraint to test that requires spirv support (#7241)
bob80905 Mar 21, 2025
b646ad3
[SPIRV] Update submodules and fix test (#7243)
s-perron Mar 21, 2025
94596e1
[SPIRV] Allow sampled type to be half for universal (#7252)
s-perron Mar 24, 2025
9a06f4d
Consolidate buffer store translation (#7251)
Mar 24, 2025
c5f62d9
[SER] Patch 1: HitObject type lowering and SM 6.9 enablement (#7097)
simoll Mar 25, 2025
7269298
[SER] HitObject_MakeNop|Miss DXIL opcodes and verification tests (#7201)
simoll Mar 25, 2025
33bc44a
Update github actions versions to enable coverage (#7183)
Mar 25, 2025
1eb83c7
Allow native vectors for LLVM operations (#7155)
Mar 26, 2025
d8aad78
Add support for KHR_compute_shader_derivatives (#7249)
iagoCL Mar 26, 2025
31a2f58
[SPIR-V] Fix usage of indices in subfunctions (#7242)
Keenuts Mar 27, 2025
0fa207a
Update DXIL.rst (#7254)
alsepkow Mar 27, 2025
b7b532b
[SPIR-V] Update submodules (#7269)
cassiebeckley Mar 27, 2025
eb16959
Update print statements to be compatible with Python 3 (#7268)
raoanag Mar 27, 2025
5ff9cbc
[Sema] Add and test new Subobject Attribute (#7258)
bob80905 Mar 27, 2025
206b775
[OMM] Add D3D Flag RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS, …
bob80905 Mar 28, 2025
3035d31
Require CMake 3.17, remove CMP0051 (#7287)
llvm-beanz Apr 1, 2025
30bfd82
NFC: Infrastructure changes for DXIL op vector and multi-dim overload…
tex3d Apr 1, 2025
a13938d
PIX: Check for existing PIX UAV in roots sigs before adding it again …
jeffnn Apr 1, 2025
2f357a9
Fix assert due to unreachable discard (#7289)
amaiorano Apr 2, 2025
572aef5
Disable code owners in main (#7298)
llvm-beanz Apr 2, 2025
9eb7119
[SPIRV] Implements vk::BufferPointer proposal (#7163)
danbrown-amd Apr 2, 2025
2b1c2e6
Fix typo in exec tests comment (#7299)
alsepkow Apr 2, 2025
3b1a29b
[OMM] Add DXR Entry point test, non-library target test, conforming t…
bob80905 Apr 2, 2025
6556410
[SPIR-V] Implement QuadAny and QuadAll (#7266)
cassiebeckley Apr 3, 2025
9010244
Add UUID compiler extension check on Clang (#7286)
urshanselmann Apr 3, 2025
6a73640
Update DXC's CONTRIBUTING file (#7265)
llvm-beanz Apr 3, 2025
c9170e5
Update SPIRV-Tools (#7303)
s-perron Apr 3, 2025
85f3432
Fixes non-SPIR-V build, broken by PR #7163 ([SPIRV] Implements vk::Bu…
danbrown-amd Apr 3, 2025
e50f599
[NFC] Standardize DxilValidation variable capitalization (#7307)
Apr 4, 2025
0ffd60a
[SM6.9] Native vector load/store lowering (#7292)
Apr 4, 2025
9e91844
[NFC] containsLongVector -> ContainsLongVector (#7255)
llvm-beanz Apr 7, 2025
dc4a2b6
[PIX] Add a pass for PIX to log missing NonUniformResourceIndex usage…
nopandbrk Apr 7, 2025
c940161
Bump cryptography from 43.0.1 to 44.0.1 in /utils/git (#7220)
dependabot[bot] Apr 8, 2025
5d2fa92
[SM6.9] Enable trivial native vector Dxil Operations plus a few (#7324)
llvm-beanz Apr 9, 2025
90bfb66
[SER] 'reordercoherent' HLSL attribute and DXIL encoding (#7250)
simoll Apr 10, 2025
bc9044a
[SER] REORDER_SCOPE Barrier semantic flag (#7263)
simoll Apr 10, 2025
0168df1
[SER] HitObject_FromRayQuery[WithAttrs] DXIL opcodes and check-pass t…
simoll Apr 12, 2025
94f9275
[SER] HitObject accessors DXIL opcodes and check-pass tests (#7276)
simoll Apr 13, 2025
8280d0f
[SER] HitObject_Invoke|TraceRay DXIL opcodes and check-pass test (#7278)
simoll Apr 14, 2025
b5a9cd5
[SER] MaybeReorderThread DXIL opcode and validation (#7256)
simoll Apr 14, 2025
47e11af
[spirv] Handles rvalue as implicit object argument of vk::BufferPoint…
danbrown-amd Apr 14, 2025
30a7579
[spirv] Fixes vk::BufferPointer constructor expression construction. …
danbrown-amd Apr 15, 2025
ea3d846
[SER] Declare all SER HLSL intrinsics (#7347)
simoll Apr 15, 2025
5f18e2b
Add HctGen of DXIL.rst back to build without LLVM_BUILD_DOCS required…
tex3d Apr 15, 2025
10bff13
Fix field names in long vector DICompositeType (#7332)
simoll Apr 16, 2025
0a470b5
[SPIRV] Remove patch decoration from gl_TessCoord (#7187) (#7349)
SteveUrquhart Apr 16, 2025
0beaa76
[SER] MaybeReorderThread + Make(Nop|Miss) HLSL -> DXIL lowering and t…
simoll Apr 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Respond to feedback
Add setting for max vec size.

Determine long vector presence using DefinitionData bit?
OR
Rename testing for long vecs function?

Add attribute for geometry streams, produce and test errors for long vectors there.

Add and test errors for > 1024 element vectors.

Add vector size to error messages

good test changes
  • Loading branch information
Greg Roth committed Mar 3, 2025
commit de6ac33353314da64d9f56154d7a428fcd2f320e
2 changes: 2 additions & 0 deletions include/dxc/DXIL/DxilConstants.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ const unsigned kMaxMSTotalSigRows = 32;
const unsigned kMaxMSSMSize = 1024 * 28;
const unsigned kMinWaveSize = 4;
const unsigned kMaxWaveSize = 128;
const unsigned kDefaultMaxVectorLength = 4;
const unsigned kSM69MaxVectorLength = 1024;

const float kMaxMipLodBias = 15.99f;
const float kMinMipLodBias = -16.0f;
Expand Down
8 changes: 5 additions & 3 deletions tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
Original file line number Diff line number Diff line change
Expand Up @@ -7519,8 +7519,8 @@ def err_hlsl_half_load_store: Error<
"LoadHalf and StoreHalf are not supported for min precision mode">;
def err_hlsl_interfaces_cannot_inherit: Error<
"interfaces cannot inherit from other types">;
def err_hlsl_invalid_range_1_4: Error<
"invalid value, valid range is between 1 and 4 inclusive">;
def err_hlsl_invalid_range_1_plus: Error<
"invalid value, valid range is between 1 and %0 inclusive">;
def err_hlsl_matrix_member_bad_format: Error<
"invalid format for matrix subscript '%0'">;
def err_hlsl_matrix_member_empty: Error<
Expand Down Expand Up @@ -7852,7 +7852,9 @@ def err_hlsl_load_from_mesh_out_arrays: Error<
def err_hlsl_out_indices_array_incorrect_access: Error<
"a vector in out indices array must be accessed as a whole">;
def err_hlsl_unsupported_long_vector: Error<
"Vectors of over 4 elements in %0 are not supported">;
"Vectors of over %0 elements in %1 are not supported">;
def err_hlsl_vector_too_long: Error<
"Vectors of over %0 elements in are not supported">;
def err_hlsl_logical_binop_scalar : Error<
"operands for short-circuiting logical binary operator must be scalar, for non-scalar types use '%select{and|or}0'">;
def err_hlsl_ternary_scalar : Error<
Expand Down
3 changes: 2 additions & 1 deletion tools/clang/include/clang/Basic/LangOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#ifndef LLVM_CLANG_BASIC_LANGOPTIONS_H
#define LLVM_CLANG_BASIC_LANGOPTIONS_H

#include "dxc/DXIL/DxilConstants.h" // For DXIL::DefaultLinkage
#include "dxc/DXIL/DxilConstants.h" // For DXIL:: default values.
#include "dxc/Support/HLSLVersion.h"
#include "clang/Basic/CommentOptions.h"
#include "clang/Basic/LLVM.h"
Expand Down Expand Up @@ -168,6 +168,7 @@ class LangOptions : public LangOptionsBase {
hlsl::DXIL::DefaultLinkage::Default;
/// Whether use row major as default matrix major.
bool HLSLDefaultRowMajor = false;
unsigned MaxHLSLVectorLength = hlsl::DXIL::kDefaultMaxVectorLength;
// HLSL Change Ends

bool SPIRV = false; // SPIRV Change
Expand Down
2 changes: 1 addition & 1 deletion tools/clang/include/clang/Sema/SemaHLSL.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ unsigned CaculateInitListArraySizeForHLSL(clang::Sema *sema,
const clang::InitListExpr *InitList,
const clang::QualType EltTy);

bool HasLongVecs(const clang::QualType &qt);
bool ContainsVectorLongerThan(const clang::QualType &qt, unsigned length);

bool IsConversionToLessOrEqualElements(clang::Sema *self,
const clang::ExprResult &sourceExpr,
Expand Down
5 changes: 3 additions & 2 deletions tools/clang/lib/Sema/SemaDXR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -810,9 +810,10 @@ void DiagnoseTraceCall(Sema &S, const VarDecl *Payload,
return;
}

if (hlsl::HasLongVecs(Payload->getType())) {
if (hlsl::ContainsVectorLongerThan(Payload->getType(),
DXIL::kDefaultMaxVectorLength)) {
S.Diag(Payload->getLocation(), diag::err_hlsl_unsupported_long_vector)
<< "payload parameters";
<< DXIL::kDefaultMaxVectorLength << "payload parameters";
return;
}

Expand Down
65 changes: 34 additions & 31 deletions tools/clang/lib/Sema/SemaHLSL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5207,12 +5207,13 @@ class HLSLExternalSource : public ExternalSemaSource {
SourceLocation Loc);

bool CheckRangedTemplateArgument(SourceLocation diagLoc,
llvm::APSInt &sintValue) {
const auto *SM =
hlsl::ShaderModel::GetByName(m_sema->getLangOpts().HLSLProfile.c_str());
llvm::APSInt &sintValue, bool IsVector) {
unsigned MaxLength = DXIL::kDefaultMaxVectorLength;
if (IsVector)
MaxLength = m_sema->getLangOpts().MaxHLSLVectorLength;
if (!sintValue.isStrictlyPositive() ||
(sintValue.getLimitedValue() > 4 && !SM->IsSM69Plus())) {
m_sema->Diag(diagLoc, diag::err_hlsl_invalid_range_1_4);
sintValue.getLimitedValue() > MaxLength) {
m_sema->Diag(diagLoc, diag::err_hlsl_invalid_range_1_plus) << MaxLength;
return true;
}

Expand Down Expand Up @@ -5252,9 +5253,9 @@ class HLSLExternalSource : public ExternalSemaSource {
<< argType;
return true;
}
if (HasLongVecs(argType)) {
if (ContainsVectorLongerThan(argType, DXIL::kDefaultMaxVectorLength)) {
m_sema->Diag(argSrcLoc, diag::err_hlsl_unsupported_long_vector)
<< "cbuffers";
<< DXIL::kDefaultMaxVectorLength << "cbuffers";
return true;
}

Expand Down Expand Up @@ -5349,10 +5350,10 @@ class HLSLExternalSource : public ExternalSemaSource {
DXASSERT(arg.getKind() == TemplateArgument::ArgKind::Type,
"Tessellation patch requires type template arg 0");
QualType argType = arg.getAsType();
if (HasLongVecs(argType)) {
if (ContainsVectorLongerThan(argType, DXIL::kDefaultMaxVectorLength)) {
m_sema->Diag(argLoc.getLocation(),
diag::err_hlsl_unsupported_long_vector)
<< "tessellation patches";
<< DXIL::kDefaultMaxVectorLength << "tessellation patches";
return true;
}
} else if (Template->getTemplatedDecl()->hasAttr<HLSLStreamOutputAttr>()) {
Expand All @@ -5363,10 +5364,10 @@ class HLSLExternalSource : public ExternalSemaSource {
DXASSERT(arg.getKind() == TemplateArgument::ArgKind::Type,
"Geometry stream requires type template arg 0");
QualType argType = arg.getAsType();
if (HasLongVecs(argType)) {
if (ContainsVectorLongerThan(argType, DXIL::kDefaultMaxVectorLength)) {
m_sema->Diag(argLoc.getLocation(),
diag::err_hlsl_unsupported_long_vector)
<< "geometry streams";
<< DXIL::kDefaultMaxVectorLength << "geometry streams";
return true;
}
}
Expand Down Expand Up @@ -5419,17 +5420,16 @@ class HLSLExternalSource : public ExternalSemaSource {
llvm::APSInt constantResult;
if (expr != nullptr &&
expr->isIntegerConstantExpr(constantResult, *m_context)) {
if (CheckRangedTemplateArgument(argSrcLoc, constantResult)) {
if (CheckRangedTemplateArgument(argSrcLoc, constantResult,
isVector))
return true;
}
}
}
} else if (arg.getKind() == TemplateArgument::ArgKind::Integral) {
if (isMatrix || isVector) {
llvm::APSInt Val = arg.getAsIntegral();
if (CheckRangedTemplateArgument(argSrcLoc, Val)) {
if (CheckRangedTemplateArgument(argSrcLoc, Val, isVector))
return true;
}
}
}
}
Expand Down Expand Up @@ -11633,9 +11633,9 @@ bool hlsl::DiagnoseNodeStructArgument(Sema *self, TemplateArgumentLoc ArgLoc,
ArTypeObjectKind shapeKind = source->GetTypeObjectKind(ArgTy);
switch (shapeKind) {
case AR_TOBJ_VECTOR:
if (GetHLSLVecSize(ArgTy) > 4) {
if (GetHLSLVecSize(ArgTy) > DXIL::kDefaultMaxVectorLength) {
self->Diag(ArgLoc.getLocation(), diag::err_hlsl_unsupported_long_vector)
<< "node records";
<< DXIL::kDefaultMaxVectorLength << "node records";
Empty = false;
return false;
}
Expand Down Expand Up @@ -12104,17 +12104,16 @@ bool hlsl::ShouldSkipNRVO(clang::Sema &sema, clang::QualType returnType,
return false;
}

bool hlsl::HasLongVecs(const QualType &qt) {
if (qt.isNull()) {
bool hlsl::ContainsVectorLongerThan(const QualType &qt, unsigned length) {
if (qt.isNull())
return false;
}

if (IsHLSLVecType(qt)) {
if (GetHLSLVecSize(qt) > 4)
if (GetHLSLVecSize(qt) > length)
return true;
} else if (qt->isArrayType()) {
const ArrayType *arrayType = qt->getAsArrayTypeUnsafe();
return HasLongVecs(arrayType->getElementType());
return ContainsVectorLongerThan(arrayType->getElementType(), length);
} else if (qt->isStructureOrClassType()) {
const RecordType *recordType = qt->getAs<RecordType>();
const RecordDecl *recordDecl = recordType->getDecl();
Expand All @@ -12124,7 +12123,7 @@ bool hlsl::HasLongVecs(const QualType &qt) {
RecordDecl::field_iterator end = recordDecl->field_end();
for (; begin != end; begin++) {
const FieldDecl *fieldDecl = *begin;
if (HasLongVecs(fieldDecl->getType()))
if (ContainsVectorLongerThan(fieldDecl->getType(), length))
return true;
}
}
Expand Down Expand Up @@ -14760,8 +14759,10 @@ bool Sema::DiagnoseHLSLDecl(Declarator &D, DeclContext *DC, Expr *BitWidth,
}

// Disallow long vecs from cbuffers.
if (isGlobal && !isStatic && !isGroupShared && HasLongVecs(qt)) {
Diag(D.getLocStart(), diag::err_hlsl_unsupported_long_vector) << "cbuffers";
if (isGlobal && !isStatic && !isGroupShared &&
ContainsVectorLongerThan(qt, DXIL::kDefaultMaxVectorLength)) {
Diag(D.getLocStart(), diag::err_hlsl_unsupported_long_vector)
<< DXIL::kDefaultMaxVectorLength << "cbuffers";
result = false;
}

Expand Down Expand Up @@ -15655,9 +15656,9 @@ static bool isRelatedDeclMarkedNointerpolation(Expr *E) {

// Verify that user-defined intrinsic struct args contain no long vectors
static bool CheckUDTIntrinsicArg(Sema *S, Expr *Arg) {
if (HasLongVecs(Arg->getType())) {
if (ContainsVectorLongerThan(Arg->getType(), DXIL::kDefaultMaxVectorLength)) {
S->Diag(Arg->getExprLoc(), diag::err_hlsl_unsupported_long_vector)
<< "user-defined struct parameter";
<< DXIL::kDefaultMaxVectorLength << "user-defined struct parameter";
return true;
}
return false;
Expand Down Expand Up @@ -16396,13 +16397,15 @@ void DiagnoseEntry(Sema &S, FunctionDecl *FD) {
// Check general parameter characteristics
// Would be nice to check for resources here as they crash the compiler now.
for (const auto *param : FD->params())
if (HasLongVecs(param->getType()))
if (ContainsVectorLongerThan(param->getType(),
DXIL::kDefaultMaxVectorLength))
S.Diag(param->getLocation(), diag::err_hlsl_unsupported_long_vector)
<< "entry function parameters";
<< DXIL::kDefaultMaxVectorLength << "entry function parameters";

if (HasLongVecs(FD->getReturnType()))
if (ContainsVectorLongerThan(FD->getReturnType(),
DXIL::kDefaultMaxVectorLength))
S.Diag(FD->getLocation(), diag::err_hlsl_unsupported_long_vector)
<< "entry function return type";
<< DXIL::kDefaultMaxVectorLength << "entry function return type";

DXIL::ShaderKind Stage =
ShaderModel::KindFromFullName(shaderAttr->getStage());
Expand Down
7 changes: 5 additions & 2 deletions tools/clang/lib/Sema/SemaHLSLDiagnoseTU.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -521,14 +521,17 @@ void hlsl::DiagnoseTranslationUnit(clang::Sema *self) {
}
}
for (const auto *param : pPatchFnDecl->params())
if (HasLongVecs(param->getType()))
if (ContainsVectorLongerThan(param->getType(),
DXIL::kDefaultMaxVectorLength))
self->Diag(param->getLocation(),
diag::err_hlsl_unsupported_long_vector)
<< DXIL::kDefaultMaxVectorLength
<< "patch constant function parameters";

if (HasLongVecs(pPatchFnDecl->getReturnType()))
if (ContainsVectorLongerThan(pPatchFnDecl->getReturnType(), 4))
self->Diag(pPatchFnDecl->getLocation(),
diag::err_hlsl_unsupported_long_vector)
<< DXIL::kDefaultMaxVectorLength
<< "patch constant function return type";
}

Expand Down
7 changes: 7 additions & 0 deletions tools/clang/tools/dxcompiler/dxcompilerobj.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1440,6 +1440,13 @@ class DxcCompiler : public IDxcCompiler3,
Opts.EnablePayloadQualifiers;
compiler.getLangOpts().HLSLProfile = compiler.getCodeGenOpts().HLSLProfile =
Opts.TargetProfile;
const ShaderModel *SM = hlsl::ShaderModel::GetByName(
compiler.getLangOpts().HLSLProfile.c_str());
if (SM->IsSM69Plus())
compiler.getLangOpts().MaxHLSLVectorLength = DXIL::kSM69MaxVectorLength;
else
compiler.getLangOpts().MaxHLSLVectorLength =
DXIL::kDefaultMaxVectorLength;

// Enable dumping implicit top level decls either if it was specifically
// requested or if we are not dumping the ast from the command line. That
Expand Down