From 2353eff6b7c7ac5b37a6f367c6b7234c025142a1 Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Wed, 2 Sep 2026 17:12:40 -0600 Subject: [PATCH 1/3] [SM6.10] Track LinAlg shader feature usage Set ShaderFeatureInfo_LinearAlgebra whenever a shader uses LinAlg operations and update validation tests with the required feature metadata. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- include/dxc/DXIL/DxilConstants.h | 3 +++ include/dxc/DXIL/DxilOperations.h | 1 + include/dxc/DXIL/DxilShaderFlags.h | 11 ++++++++++- include/dxc/DxilContainer/RDAT_LibraryTypes.inl | 1 + lib/DXIL/DxilOperations.cpp | 16 ++++++++++++---- lib/DXIL/DxilShaderFlags.cpp | 8 +++++++- lib/HLSL/DxilPreparePasses.cpp | 2 +- .../LinAlgMatrix/linalgmatrix-convert.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-copyconvert.ll | 2 +- .../linalgmatrix-groupshared-vector-memory.ll | 2 +- .../linalgmatrix-illegal-component-type.ll | 2 +- .../linalgmatrix-matrixaccumulate.ll | 2 +- .../linalgmatrix-matrixaccumulatetodescriptor.ll | 3 +-- .../linalgmatrix-matrixaccumulatetomemory.ll | 3 +-- .../linalgmatrix-matrixloadfromdescriptor.ll | 3 +-- .../linalgmatrix-matrixloadfrommemory.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-matrixmultiply.ll | 3 +-- .../linalgmatrix-matrixmultiplyaccumulate.ll | 3 +-- .../linalgmatrix-matrixstoretodescriptor.ll | 3 +-- .../linalgmatrix-matrixstoretomemory.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-matvecmul.ll | 2 +- .../LinAlgMatrix/linalgmatrix-matvecmuladd.ll | 2 +- .../LinAlgMatrix/linalgmatrix-max-k-dim.ll | 2 +- .../LinAlgMatrix/linalgmatrix-non-thread-ops.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-outerproduct.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-anyhit.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-as.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-callable.ll | 3 +-- .../linalgmatrix-stage-closesthit.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-cs.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-ds.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-gs.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-hs.ll | 3 +-- .../linalgmatrix-stage-intersection.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-miss.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-ms.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-node.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-ps.ll | 3 +-- .../linalgmatrix-stage-raygeneration.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-stage-vs.ll | 3 +-- .../LinAlgMatrix/linalgmatrix-undef-param.ll | 2 +- .../linalgmatrix-vectoraccumulatetodescriptor.ll | 3 +-- 42 files changed, 70 insertions(+), 69 deletions(-) diff --git a/include/dxc/DXIL/DxilConstants.h b/include/dxc/DXIL/DxilConstants.h index 7d7d7d74e5..d9226d8d0b 100644 --- a/include/dxc/DXIL/DxilConstants.h +++ b/include/dxc/DXIL/DxilConstants.h @@ -2370,6 +2370,9 @@ const uint64_t ShaderFeatureInfo_ExtendedCommandInfo = 0x100000000; // Experimental SM 6.9+ - Reserved, not yet supported. const uint64_t ShaderFeatureInfo_Reserved = 0x8000000; +// SM 6.10+ +const uint64_t ShaderFeatureInfo_LinearAlgebra = 0x200000000; + // Maximum count without rolling over into another 64-bit field is 40, // so the last flag we can use for a feature requirement is: 0x8000000000 // This is because of the following set of flags, considered optional diff --git a/include/dxc/DXIL/DxilOperations.h b/include/dxc/DXIL/DxilOperations.h index 210d9c6593..a119e735cc 100644 --- a/include/dxc/DXIL/DxilOperations.h +++ b/include/dxc/DXIL/DxilOperations.h @@ -147,6 +147,7 @@ class OP { static bool IsDxilOpFuncName(llvm::StringRef name); static bool IsDxilOpFunc(const llvm::Function *F); static bool IsDxilOpLinAlgFuncName(llvm::StringRef Name); + static bool IsDxilOpLinAlgFunc(const llvm::Function *F); static bool IsDxilOpFuncCallInst(const llvm::Instruction *I); static bool IsDxilOpFuncCallInst(const llvm::Instruction *I, OpCode opcode); static bool IsDxilOpWave(OpCode C); diff --git a/include/dxc/DXIL/DxilShaderFlags.h b/include/dxc/DXIL/DxilShaderFlags.h index 7b065c63fa..0458d3280d 100644 --- a/include/dxc/DXIL/DxilShaderFlags.h +++ b/include/dxc/DXIL/DxilShaderFlags.h @@ -219,6 +219,10 @@ class ShaderFlags { void SetRequiresGroup(bool flag) { m_bRequiresGroup = flag; } bool GetRequiresGroup() const { return m_bRequiresGroup; } + // SM 6.10+ + void SetLinearAlgebra(bool flag) { m_bLinearAlgebra = flag; } + bool GetLinearAlgebra() const { return m_bLinearAlgebra; } + private: // Bit: 0 unsigned @@ -359,7 +363,12 @@ class ShaderFlags { unsigned m_bRequiresGroup : 1; // SHADER_FEATURE_OPT_REQUIRES_GROUP // (OptFeatureInfo_RequiresGroup) - uint32_t m_align1 : 23; // align to 64 bit. + // SM 6.10+ + // m_bLinearAlgebra indicates the shader uses LinearAlgebra features. + // Bit: 41 + unsigned m_bLinearAlgebra : 1; // SHADER_FEATURE_LINEAR_ALGEBRA + + uint32_t m_align1 : 22; // align to 64 bit. }; } // namespace hlsl diff --git a/include/dxc/DxilContainer/RDAT_LibraryTypes.inl b/include/dxc/DxilContainer/RDAT_LibraryTypes.inl index dd5c8e5f69..5fbad24785 100644 --- a/include/dxc/DxilContainer/RDAT_LibraryTypes.inl +++ b/include/dxc/DxilContainer/RDAT_LibraryTypes.inl @@ -83,6 +83,7 @@ RDAT_ENUM_END() // High 32-bits of ShaderFeatureInfo from DFCC_FeatureInfo RDAT_ENUM_START(DxilFeatureInfo2, uint32_t) RDAT_ENUM_VALUE(ExtendedCommandInfo, 0x1) + RDAT_ENUM_VALUE(LinearAlgebra, 0x2) // OptFeatureInfo flags RDAT_ENUM_VALUE(Opt_UsesDerivatives, 0x100) RDAT_ENUM_VALUE(Opt_RequiresGroup, 0x200) diff --git a/lib/DXIL/DxilOperations.cpp b/lib/DXIL/DxilOperations.cpp index 8dd92ce0fd..5fa649ace2 100644 --- a/lib/DXIL/DxilOperations.cpp +++ b/lib/DXIL/DxilOperations.cpp @@ -3316,10 +3316,6 @@ bool OP::IsDxilOpFuncName(StringRef name) { return name.startswith(OP::m_NamePrefix); } -bool OP::IsDxilOpLinAlgFuncName(StringRef Name) { - return Name.startswith(OP::m_LinAlgNamePrefix); -} - bool OP::IsDxilOpFunc(const llvm::Function *F) { // Test for null to allow IsDxilOpFunc(Call.getCalledFunc()) to be resilient // to indirect calls @@ -3328,6 +3324,18 @@ bool OP::IsDxilOpFunc(const llvm::Function *F) { return IsDxilOpFuncName(F->getName()); } +bool OP::IsDxilOpLinAlgFuncName(StringRef Name) { + return Name.startswith(OP::m_LinAlgNamePrefix); +} + +bool OP::IsDxilOpLinAlgFunc(const llvm::Function *F) { + // Test for null to allow IsDxilOpLinAlgFunc(Call.getCalledFunc()) to be + // resilient to indirect calls + if (F == nullptr || !F->hasName()) + return false; + return IsDxilOpLinAlgFuncName(F->getName()); +} + bool OP::IsDxilOpFuncCallInst(const llvm::Instruction *I) { const CallInst *CI = dyn_cast(I); if (CI == nullptr) diff --git a/lib/DXIL/DxilShaderFlags.cpp b/lib/DXIL/DxilShaderFlags.cpp index 90b7d033b5..b3f2e36f06 100644 --- a/lib/DXIL/DxilShaderFlags.cpp +++ b/lib/DXIL/DxilShaderFlags.cpp @@ -47,7 +47,7 @@ ShaderFlags::ShaderFlags() m_bAdvancedTextureOps(false), m_bWriteableMSAATextures(false), m_bReserved(false), m_bSampleCmpGradientOrBias(false), m_bExtendedCommandInfo(false), m_bUsesDerivatives(false), - m_bRequiresGroup(false), m_align1(0) { + m_bRequiresGroup(false), m_bLinearAlgebra(false), m_align1(0) { // Silence unused field warnings (void)m_align1; } @@ -132,6 +132,7 @@ uint64_t ShaderFlags::GetFeatureInfo() const { Flags |= m_bExtendedCommandInfo ? hlsl::DXIL::ShaderFeatureInfo_ExtendedCommandInfo : 0; + Flags |= m_bLinearAlgebra ? hlsl::DXIL::ShaderFeatureInfo_LinearAlgebra : 0; // Per-function flags Flags |= m_bUsesDerivatives ? hlsl::DXIL::OptFeatureInfo_UsesDerivatives : 0; @@ -198,6 +199,7 @@ uint64_t ShaderFlags::GetShaderFlagsRawForCollection() { Flags.SetWriteableMSAATextures(true); Flags.SetSampleCmpGradientOrBias(true); Flags.SetExtendedCommandInfo(true); + Flags.SetLinearAlgebra(true); Flags.SetUsesDerivatives(true); Flags.SetRequiresGroup(true); return Flags.GetShaderFlagsRaw(); @@ -445,6 +447,7 @@ ShaderFlags ShaderFlags::CollectShaderFlags(const Function *F, bool hasSampleCmpGradientOrBias = false; bool hasExtendedCommandInfo = false; + bool hasLinearAlgebra = false; // UsesDerivatives is used to indicate any derivative use per-function, before // flags are combined from called functions. Later, the flags are adjusted for @@ -584,6 +587,8 @@ ShaderFlags ShaderFlags::CollectShaderFlags(const Function *F, DXIL::OpCode dxilOp = hlsl::OP::getOpCode(CI); if (dxilOp == DXIL::OpCode::NumOpCodes) continue; + if (hlsl::OP::IsDxilOpLinAlgFunc(CI->getCalledFunction())) + hasLinearAlgebra = true; if (hlsl::OP::IsDxilOpWave(dxilOp)) hasWaveOps = true; if (hlsl::OP::IsDxilOpFeedback(dxilOp)) @@ -861,6 +866,7 @@ ShaderFlags ShaderFlags::CollectShaderFlags(const Function *F, !M->GetResMayAlias()); flag.SetSampleCmpGradientOrBias(hasSampleCmpGradientOrBias); flag.SetExtendedCommandInfo(hasExtendedCommandInfo); + flag.SetLinearAlgebra(hasLinearAlgebra); flag.SetUsesDerivatives(hasDerivatives); flag.SetRequiresGroup(requiresGroup); diff --git a/lib/HLSL/DxilPreparePasses.cpp b/lib/HLSL/DxilPreparePasses.cpp index 81b9dff4ca..eb7d5b7124 100644 --- a/lib/HLSL/DxilPreparePasses.cpp +++ b/lib/HLSL/DxilPreparePasses.cpp @@ -1717,7 +1717,7 @@ class DxilTrimTargetTypes : public ModulePass { continue; // Currently only LinAlgMatrix ops use target types. - if (!OP::IsDxilOpLinAlgFuncName(F.getName())) + if (!OP::IsDxilOpLinAlgFunc(&F)) continue; llvm::Type *RetTy = F.getReturnType(); diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-convert.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-convert.ll index 4b27272467..cbe8533b27 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-convert.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-convert.ll @@ -98,6 +98,5 @@ attributes #2 = { nounwind readnone } !4 = !{!5} !5 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !6 = !{void ()* @main, !"main", null, !3, !7} -!7 = !{i32 0, i64 8388624, i32 4, !8} +!7 = !{i32 0, i64 2199031644176, i32 4, !8} !8 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-copyconvert.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-copyconvert.ll index e0d493b1df..6c97599c32 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-copyconvert.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-copyconvert.ll @@ -96,7 +96,7 @@ attributes #1 = { nounwind readnone } !7 = !{i32 1, i32 10} !8 = !{!"cs", i32 6, i32 10} !9 = !{void ()* @main, !"main", null, null, !10} -!10 = !{i32 4, !11} +!10 = !{i32 0, i64 2199023255552, i32 4, !11} !11 = !{i32 1, i32 1, i32 1} !12 = !{!13, null, null, null} !13 = !{!14} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory.ll index 9d52399b6c..f9c8596c55 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory.ll @@ -49,5 +49,5 @@ attributes #0 = { nounwind } !3 = !{i32 1, i32 10} !4 = !{!"cs", i32 6, i32 10} !5 = !{void ()* @main, !"main", null, null, !6} -!6 = !{i32 4, !7} +!6 = !{i32 0, i64 2199023255552, i32 4, !7} !7 = !{i32 4, i32 4, i32 4} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-illegal-component-type.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-illegal-component-type.ll index 58d9db2a55..481d4a1aa3 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-illegal-component-type.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-illegal-component-type.ll @@ -51,5 +51,5 @@ attributes #1 = { nounwind readnone } !5 = !{!6} !6 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !7 = !{void ()* @main, !"main", null, !4, !8} -!8 = !{i32 0, i64 8388624, i32 4, !9} +!8 = !{i32 0, i64 2199031644176, i32 4, !9} !9 = !{i32 1, i32 1, i32 1} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulate.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulate.ll index 7c8b7a136e..14a13b9c97 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulate.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulate.ll @@ -104,5 +104,5 @@ attributes #0 = { nounwind } !7 = !{i32 1, i32 10} !8 = !{!"cs", i32 6, i32 10} !9 = !{void ()* @main, !"main", null, null, !10} -!10 = !{i32 4, !11} +!10 = !{i32 0, i64 2199023255552, i32 4, !11} !11 = !{i32 1, i32 1, i32 1} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetodescriptor.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetodescriptor.ll index 8258e8b183..52c84411ed 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetodescriptor.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetodescriptor.ll @@ -132,6 +132,5 @@ attributes #2 = { nounwind readnone } !9 = !{!10} !10 = !{i32 0, %struct.RWByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i1 false, i1 false, i1 false, null} !11 = !{void ()* @main, !"main", null, !6, !12} -!12 = !{i32 0, i64 8598323216, i32 4, !13} +!12 = !{i32 0, i64 2207621578768, i32 4, !13} !13 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll index 4b5ccad482..a0b88153c5 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll @@ -198,6 +198,5 @@ attributes #2 = { nounwind readnone } !11 = !{!12} !12 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !13 = !{void ()* @main, !"main", null, !10, !14} -!14 = !{i32 0, i64 8388624, i32 4, !15} +!14 = !{i32 0, i64 2199023255568, i32 4, !15} !15 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixloadfromdescriptor.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixloadfromdescriptor.ll index 0050904d9b..b6e6d5a199 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixloadfromdescriptor.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixloadfromdescriptor.ll @@ -159,6 +159,5 @@ attributes #2 = { nounwind readnone } !17 = !{!18} !18 = !{i32 0, %struct.RWByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i1 false, i1 false, i1 false, null} !19 = !{void ()* @main, !"main", null, !12, !20} -!20 = !{i32 0, i64 8598323216, i32 4, !21} +!20 = !{i32 0, i64 2207621578768, i32 4, !21} !21 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixloadfrommemory.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixloadfrommemory.ll index 136417e2b4..1fe5b6c384 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixloadfrommemory.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixloadfrommemory.ll @@ -112,6 +112,5 @@ attributes #0 = { nounwind } !7 = !{i32 1, i32 10} !8 = !{!"cs", i32 6, i32 10} !9 = !{void ()* @main, !"main", null, null, !10} -!10 = !{i32 0, i64 8388608, i32 4, !11} +!10 = !{i32 0, i64 2199031644160, i32 4, !11} !11 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixmultiply.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixmultiply.ll index 4300f84262..ed196e08f8 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixmultiply.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixmultiply.ll @@ -145,6 +145,5 @@ attributes #1 = { nounwind readnone } !12 = !{!13} !13 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !14 = !{void ()* @main, !"main", null, !11, !15} -!15 = !{i32 0, i64 8388624, i32 4, !16} +!15 = !{i32 0, i64 2199031644176, i32 4, !16} !16 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixmultiplyaccumulate.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixmultiplyaccumulate.ll index bb34e8273a..9687c516a0 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixmultiplyaccumulate.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixmultiplyaccumulate.ll @@ -191,6 +191,5 @@ attributes #1 = { nounwind readnone } !12 = !{!13} !13 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !14 = !{void ()* @main, !"main", null, !11, !15} -!15 = !{i32 0, i64 8388624, i32 4, !16} +!15 = !{i32 0, i64 2199031644176, i32 4, !16} !16 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretodescriptor.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretodescriptor.ll index 624b615baa..8ceb71d624 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretodescriptor.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretodescriptor.ll @@ -107,6 +107,5 @@ attributes #2 = { nounwind readnone } !8 = !{!9} !9 = !{i32 0, %struct.RWByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i1 false, i1 false, i1 false, null} !10 = !{void ()* @main, !"main", null, !5, !11} -!11 = !{i32 0, i64 8598323216, i32 4, !12} +!11 = !{i32 0, i64 2207621578768, i32 4, !12} !12 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretomemory.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretomemory.ll index 1018580d64..6a13b387e2 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretomemory.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretomemory.ll @@ -159,6 +159,5 @@ attributes #1 = { nounwind readnone } !10 = !{!11} !11 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !12 = !{void ()* @main, !"main", null, !9, !13} -!13 = !{i32 0, i64 8388624, i32 4, !14} +!13 = !{i32 0, i64 2199023255568, i32 4, !14} !14 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matvecmul.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matvecmul.ll index f1b5716523..b15c166055 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matvecmul.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matvecmul.ll @@ -124,5 +124,5 @@ attributes #1 = { nounwind readnone } !9 = !{!10} !10 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !11 = !{void ()* @main, !"main", null, !8, !12} -!12 = !{i32 0, i64 8388624, i32 4, !13} +!12 = !{i32 0, i64 2199031644176, i32 4, !13} !13 = !{i32 1, i32 1, i32 1} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matvecmuladd.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matvecmuladd.ll index c05f76ff00..be9a35c4f6 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matvecmuladd.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matvecmuladd.ll @@ -132,5 +132,5 @@ attributes #1 = { nounwind readnone } !9 = !{!10} !10 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !11 = !{void ()* @main, !"main", null, !8, !12} -!12 = !{i32 0, i64 8388624, i32 4, !13} +!12 = !{i32 0, i64 2199031644176, i32 4, !13} !13 = !{i32 1, i32 1, i32 1} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-max-k-dim.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-max-k-dim.ll index cc88c770cc..74e04d9d80 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-max-k-dim.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-max-k-dim.ll @@ -252,5 +252,5 @@ attributes #1 = { nounwind readnone } !26 = !{!27} !27 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !28 = !{void ()* @main, !"main", null, !25, !29} -!29 = !{i32 0, i64 8388624, i32 4, !30} +!29 = !{i32 0, i64 2199031644176, i32 4, !30} !30 = !{i32 1, i32 1, i32 1} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-non-thread-ops.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-non-thread-ops.ll index 2a8aeefb31..952080c89d 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-non-thread-ops.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-non-thread-ops.ll @@ -62,6 +62,5 @@ attributes #0 = { nounwind } !2 = !{i32 1, i32 10} !3 = !{!"cs", i32 6, i32 10} !4 = !{void ()* @main, !"main", null, null, !5} -!5 = !{i32 0, i64 8388608, i32 4, !6} +!5 = !{i32 0, i64 2199031644160, i32 4, !6} !6 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-outerproduct.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-outerproduct.ll index a0b304eb6e..61fcfe36cc 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-outerproduct.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-outerproduct.ll @@ -87,6 +87,5 @@ attributes #0 = { nounwind } !7 = !{i32 1, i32 10} !8 = !{!"cs", i32 6, i32 10} !9 = !{void ()* @main, !"main", null, null, !10} -!10 = !{i32 0, i64 8388608, i32 4, !11} +!10 = !{i32 0, i64 2199031644160, i32 4, !11} !11 = !{i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-anyhit.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-anyhit.ll index d8127fe017..dfc03ef812 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-anyhit.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-anyhit.ll @@ -207,11 +207,10 @@ attributes #2 = { nounwind readonly } !14 = !{!15} !15 = !{i32 0, i32 13107} !16 = !{null, !"", null, !8, !17} -!17 = !{i32 0, i64 8598323248} +!17 = !{i32 0, i64 2207621578800} !18 = !{void (%struct.RayPayload*, %struct.Attribs*)* @"\01?mainAH@@YAXURayPayload@@UAttribs@@@Z", !"\01?mainAH@@YAXURayPayload@@UAttribs@@@Z", null, null, !19} !19 = !{i32 8, i32 9, i32 6, i32 4, i32 7, i32 8, i32 5, !20} !20 = !{i32 0} !21 = !{!22} !22 = distinct !{!22, !23, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z: %agg.result"} !23 = distinct !{!23, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z"} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-as.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-as.ll index cb6e8f4a46..b751af5aa1 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-as.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-as.ll @@ -208,7 +208,6 @@ attributes #1 = { nounwind readnone } !11 = !{!12} !12 = !{i32 0, %struct.RWByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i1 false, i1 false, i1 false, null} !13 = !{void ()* @mainAS, !"mainAS", null, !8, !14} -!14 = !{i32 0, i64 8598323248, i32 10, !15} +!14 = !{i32 0, i64 2207621578800, i32 10, !15} !15 = !{!16, i32 8} !16 = !{i32 8, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-callable.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-callable.ll index 81352dda0d..99a261cd7f 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-callable.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-callable.ll @@ -202,11 +202,10 @@ attributes #2 = { nounwind readonly } !11 = !{!12} !12 = !{i32 0, %struct.RWByteAddressBuffer* bitcast (%dx.types.Handle* @"\01?OutBuf@@3URWByteAddressBuffer@@A" to %struct.RWByteAddressBuffer*), !"OutBuf", i32 -1, i32 -1, i32 1, i32 11, i1 false, i1 false, i1 false, null} !13 = !{null, !"", null, !8, !14} -!14 = !{i32 0, i64 8598323248} +!14 = !{i32 0, i64 2207621578800} !15 = !{void (%struct.Attribs*)* @"\01?mainCALL@@YAXUAttribs@@@Z", !"\01?mainCALL@@YAXUAttribs@@@Z", null, null, !16} !16 = !{i32 8, i32 12, i32 6, i32 8, i32 5, !17} !17 = !{i32 0} !18 = !{!19} !19 = distinct !{!19, !20, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z: %agg.result"} !20 = distinct !{!20, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z"} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-closesthit.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-closesthit.ll index 8ffe4cdb5c..cec8efc268 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-closesthit.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-closesthit.ll @@ -207,11 +207,10 @@ attributes #2 = { nounwind readonly } !14 = !{!15} !15 = !{i32 0, i32 13107} !16 = !{null, !"", null, !8, !17} -!17 = !{i32 0, i64 8598323248} +!17 = !{i32 0, i64 2207621578800} !18 = !{void (%struct.RayPayload*, %struct.Attribs*)* @"\01?mainCH@@YAXURayPayload@@UAttribs@@@Z", !"\01?mainCH@@YAXURayPayload@@UAttribs@@@Z", null, null, !19} !19 = !{i32 8, i32 10, i32 6, i32 4, i32 7, i32 8, i32 5, !20} !20 = !{i32 0} !21 = !{!22} !22 = distinct !{!22, !23, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z: %agg.result"} !23 = distinct !{!23, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z"} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-cs.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-cs.ll index 6c90ead9ca..7d7f60eacb 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-cs.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-cs.ll @@ -159,6 +159,5 @@ attributes #1 = { nounwind readnone } !11 = !{!12} !12 = !{i32 0, %struct.RWByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i1 false, i1 false, i1 false, null} !13 = !{void ()* @mainCS, !"mainCS", null, !8, !14} -!14 = !{i32 0, i64 8598323248, i32 4, !15} +!14 = !{i32 0, i64 2207621578800, i32 4, !15} !15 = !{i32 4, i32 4, i32 4} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ds.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ds.ll index 42c8344f06..6df22e400f 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ds.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ds.ll @@ -213,6 +213,5 @@ attributes #1 = { nounwind } !17 = !{i32 0, !"SV_Position", i8 9, i8 3, !18, i8 4, i32 1, i8 4, i32 0, i8 0, !19} !18 = !{i32 0} !19 = !{i32 3, i32 15} -!20 = !{i32 0, i64 8598388784, i32 2, !21} +!20 = !{i32 0, i64 2207621644336, i32 2, !21} !21 = !{i32 2, i32 3} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-gs.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-gs.ll index 19ccfaacae..2ff3f6aa58 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-gs.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-gs.ll @@ -231,6 +231,5 @@ attributes #2 = { nounwind readnone } !21 = !{!22} !22 = !{i32 0, !"SV_Position", i8 9, i8 3, !20, i8 4, i32 1, i8 4, i32 0, i8 0, !23} !23 = !{i32 3, i32 15} -!24 = !{i32 0, i64 8598388784, i32 1, !25} +!24 = !{i32 0, i64 2207621644336, i32 1, !25} !25 = !{i32 3, i32 1, i32 1, i32 1, i32 1} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-hs.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-hs.ll index 9eb2750070..4be77da40e 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-hs.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-hs.ll @@ -239,6 +239,5 @@ attributes #1 = { nounwind } !23 = !{i32 3, i32 1} !24 = !{i32 1, !"SV_InsideTessFactor", i8 9, i8 26, !18, i8 0, i32 1, i8 1, i32 3, i8 0, !23} !25 = !{i32 2, !"TEST", i8 9, i8 0, !18, i8 0, i32 1, i8 4, i32 4, i8 0, !19} -!26 = !{i32 0, i64 8598388784, i32 3, !27} +!26 = !{i32 0, i64 2207621644336, i32 3, !27} !27 = !{void ()* @"\01?HSPatch@@YA?AUPCStruct@@V?$InputPatch@UPosStruct@@$02@@V?$OutputPatch@UPosStruct@@$02@@I@Z", i32 3, i32 3, i32 2, i32 3, i32 3, float 6.400000e+01} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-intersection.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-intersection.ll index d69d88f08c..a84ca51caf 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-intersection.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-intersection.ll @@ -201,11 +201,10 @@ attributes #2 = { nounwind readonly } !11 = !{!12} !12 = !{i32 0, %struct.RWByteAddressBuffer* bitcast (%dx.types.Handle* @"\01?OutBuf@@3URWByteAddressBuffer@@A" to %struct.RWByteAddressBuffer*), !"OutBuf", i32 -1, i32 -1, i32 1, i32 11, i1 false, i1 false, i1 false, null} !13 = !{null, !"", null, !8, !14} -!14 = !{i32 0, i64 8598323248} +!14 = !{i32 0, i64 2207621578800} !15 = !{void ()* @"\01?mainIS@@YAXXZ", !"\01?mainIS@@YAXXZ", null, null, !16} !16 = !{i32 8, i32 8, i32 5, !17} !17 = !{i32 0} !18 = !{!19} !19 = distinct !{!19, !20, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z: %agg.result"} !20 = distinct !{!20, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z"} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-miss.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-miss.ll index baa1739db7..6e63d1feab 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-miss.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-miss.ll @@ -206,11 +206,10 @@ attributes #2 = { nounwind readonly } !14 = !{!15} !15 = !{i32 0, i32 13107} !16 = !{null, !"", null, !8, !17} -!17 = !{i32 0, i64 8598323248} +!17 = !{i32 0, i64 2207621578800} !18 = !{void (%struct.RayPayload*)* @"\01?mainMS@@YAXURayPayload@@@Z", !"\01?mainMS@@YAXURayPayload@@@Z", null, null, !19} !19 = !{i32 8, i32 11, i32 6, i32 4, i32 5, !20} !20 = !{i32 0} !21 = !{!22} !22 = distinct !{!22, !23, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z: %agg.result"} !23 = distinct !{!23, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z"} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ms.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ms.ll index 7dba832629..c208830ab8 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ms.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ms.ll @@ -211,7 +211,6 @@ attributes #1 = { nounwind } !17 = !{i32 0, !"SV_Position", i8 9, i8 3, !18, i8 4, i32 1, i8 4, i32 0, i8 0, !19} !18 = !{i32 0} !19 = !{i32 3, i32 15} -!20 = !{i32 0, i64 8598323248, i32 9, !21} +!20 = !{i32 0, i64 2207621578800, i32 9, !21} !21 = !{!22, i32 32, i32 0, i32 2, i32 0} !22 = !{i32 8, i32 8, i32 2} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-node.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-node.ll index cdedf36d6f..6d120c35d3 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-node.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-node.ll @@ -198,7 +198,7 @@ attributes #2 = { nounwind readonly } !11 = !{!12} !12 = !{i32 0, %struct.RWByteAddressBuffer* bitcast (%dx.types.Handle* @"\01?OutBuf@@3URWByteAddressBuffer@@A" to %struct.RWByteAddressBuffer*), !"OutBuf", i32 -1, i32 -1, i32 1, i32 11, i1 false, i1 false, i1 false, null} !13 = !{null, !"", null, !8, !14} -!14 = !{i32 0, i64 8598323248} +!14 = !{i32 0, i64 2207621578800} !15 = !{void ()* @mainNS, !"mainNS", null, null, !16} !16 = !{i32 8, i32 15, i32 13, i32 1, i32 15, !17, i32 16, i32 -1, i32 18, !18, i32 4, !19, i32 5, !20} !17 = !{!"mainNS", i32 0} @@ -208,4 +208,3 @@ attributes #2 = { nounwind readonly } !21 = !{!22} !22 = distinct !{!22, !23, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z: %agg.result"} !23 = distinct !{!23, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z"} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ps.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ps.ll index c8a6846f68..e5b015a474 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ps.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ps.ll @@ -208,5 +208,4 @@ attributes #1 = { nounwind readnone } !19 = !{!20} !20 = !{i32 0, !"SV_Target", i8 9, i8 16, !18, i8 0, i32 1, i8 4, i32 0, i8 0, !21} !21 = !{i32 3, i32 15} -!22 = !{i32 0, i64 8598323248} - +!22 = !{i32 0, i64 2207621578800} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-raygeneration.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-raygeneration.ll index 4306930055..05962398d5 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-raygeneration.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-raygeneration.ll @@ -201,11 +201,10 @@ attributes #2 = { nounwind readonly } !11 = !{!12} !12 = !{i32 0, %struct.RWByteAddressBuffer* bitcast (%dx.types.Handle* @"\01?OutBuf@@3URWByteAddressBuffer@@A" to %struct.RWByteAddressBuffer*), !"OutBuf", i32 -1, i32 -1, i32 1, i32 11, i1 false, i1 false, i1 false, null} !13 = !{null, !"", null, !8, !14} -!14 = !{i32 0, i64 8598323248} +!14 = !{i32 0, i64 2207621578800} !15 = !{void ()* @"\01?mainRG@@YAXXZ", !"\01?mainRG@@YAXXZ", null, null, !16} !16 = !{i32 8, i32 7, i32 5, !17} !17 = !{i32 0} !18 = !{!19} !19 = distinct !{!19, !20, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z: %agg.result"} !20 = distinct !{!20, !"\01??$Load@$0IA@@?$Matrix@$07$0BA@$0BA@$01$00@linalg@dx@@SA?AV012@UByteAddressBuffer@@IIW4MatrixLayoutEnum@MatrixLayout@12@@Z"} - diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-vs.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-vs.ll index f086c35140..40d10f8b0d 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-vs.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-vs.ll @@ -208,5 +208,4 @@ attributes #1 = { nounwind readnone } !19 = !{!20} !20 = !{i32 0, !"OUT", i8 9, i8 0, !18, i8 2, i32 1, i8 4, i32 0, i8 0, !21} !21 = !{i32 3, i32 15} -!22 = !{i32 0, i64 8598388784} - +!22 = !{i32 0, i64 2207621644336} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-undef-param.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-undef-param.ll index 6310a086d6..b105ae6c48 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-undef-param.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-undef-param.ll @@ -58,5 +58,5 @@ attributes #1 = { nounwind readnone } !21 = !{!22} !22 = !{i32 0, %struct.RWByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i1 false, i1 false, i1 false, null} !23 = !{void ()* @main, !"main", null, !20, !24} -!24 = !{i32 0, i64 8589934608, i32 4, !25} +!24 = !{i32 0, i64 2207613190160, i32 4, !25} !25 = !{i32 4, i32 4, i32 4} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-vectoraccumulatetodescriptor.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-vectoraccumulatetodescriptor.ll index c9c923245a..355ce5e6bb 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-vectoraccumulatetodescriptor.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-vectoraccumulatetodescriptor.ll @@ -78,6 +78,5 @@ attributes #2 = { nounwind readnone } !6 = !{!7} !7 = !{i32 0, %struct.RWByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i1 false, i1 false, i1 false, null} !8 = !{void ()* @main, !"main", null, !3, !9} -!9 = !{i32 0, i64 8598323216, i32 4, !10} +!9 = !{i32 0, i64 2207621578768, i32 4, !10} !10 = !{i32 1, i32 1, i32 1} - From 2d3405bc7ae5cd83688cf5a25cb07990201573f3 Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Fri, 4 Sep 2026 14:50:29 -0600 Subject: [PATCH 2/3] Address comments --- include/dxc/DXIL/DxilConstants.h | 2 +- include/dxc/DxilContainer/RDAT_LibraryTypes.inl | 2 +- .../linalgmatrix-groupshared-vector-memory-invalid.ll | 2 +- .../LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll | 2 +- .../LinAlgMatrix/linalgmatrix-matrixstoretomemory.ll | 2 +- tools/clang/tools/dxcompiler/dxcdisassembler.cpp | 1 + 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/dxc/DXIL/DxilConstants.h b/include/dxc/DXIL/DxilConstants.h index d9226d8d0b..cd9c1074ac 100644 --- a/include/dxc/DXIL/DxilConstants.h +++ b/include/dxc/DXIL/DxilConstants.h @@ -2378,7 +2378,7 @@ const uint64_t ShaderFeatureInfo_LinearAlgebra = 0x200000000; // This is because of the following set of flags, considered optional // and ignored by the runtime if not recognized: // D3D11_OPTIONAL_FEATURE_FLAGS 0x7FFFFF0000000000 -const unsigned ShaderFeatureInfoCount = 33; +const unsigned ShaderFeatureInfoCount = 34; static_assert(ShaderFeatureInfoCount <= 40, "ShaderFeatureInfo flags must fit within the first 40 bits; " "after that we need to expand the FeatureInfo blob part and " diff --git a/include/dxc/DxilContainer/RDAT_LibraryTypes.inl b/include/dxc/DxilContainer/RDAT_LibraryTypes.inl index 5fbad24785..9182e765d2 100644 --- a/include/dxc/DxilContainer/RDAT_LibraryTypes.inl +++ b/include/dxc/DxilContainer/RDAT_LibraryTypes.inl @@ -88,7 +88,7 @@ RDAT_ENUM_START(DxilFeatureInfo2, uint32_t) RDAT_ENUM_VALUE(Opt_UsesDerivatives, 0x100) RDAT_ENUM_VALUE(Opt_RequiresGroup, 0x200) #if DEF_RDAT_ENUMS == DEF_RDAT_DUMP_IMPL - static_assert(DXIL::ShaderFeatureInfoCount == 33, + static_assert(DXIL::ShaderFeatureInfoCount == 34, "otherwise, RDAT_ENUM definition needs updating"); static_assert(DXIL::OptFeatureInfoCount == 2, "otherwise, RDAT_ENUM definition needs updating"); diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory-invalid.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory-invalid.ll index 3c07aa0712..debd34b6c4 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory-invalid.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory-invalid.ll @@ -55,5 +55,5 @@ attributes #0 = { nounwind } !3 = !{i32 1, i32 10} !4 = !{!"cs", i32 6, i32 10} !5 = !{void ()* @main, !"main", null, null, !6} -!6 = !{i32 4, !7} +!6 = !{i32 0, i64 2199023255552, i32 4, !7} !7 = !{i32 4, i32 4, i32 4} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll index a0b88153c5..4562798a8a 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll @@ -198,5 +198,5 @@ attributes #2 = { nounwind readnone } !11 = !{!12} !12 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !13 = !{void ()* @main, !"main", null, !10, !14} -!14 = !{i32 0, i64 2199023255568, i32 4, !15} +!14 = !{i32 0, i64 2199031644176, i32 4, !15} !15 = !{i32 1, i32 1, i32 1} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretomemory.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretomemory.ll index 6a13b387e2..44e77119c2 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretomemory.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixstoretomemory.ll @@ -159,5 +159,5 @@ attributes #1 = { nounwind readnone } !10 = !{!11} !11 = !{i32 0, %struct.ByteAddressBuffer* undef, !"", i32 0, i32 0, i32 1, i32 11, i32 0, null} !12 = !{void ()* @main, !"main", null, !9, !13} -!13 = !{i32 0, i64 2199023255568, i32 4, !14} +!13 = !{i32 0, i64 2199031644176, i32 4, !14} !14 = !{i32 1, i32 1, i32 1} diff --git a/tools/clang/tools/dxcompiler/dxcdisassembler.cpp b/tools/clang/tools/dxcompiler/dxcdisassembler.cpp index 1ad8474e50..c040474602 100644 --- a/tools/clang/tools/dxcompiler/dxcdisassembler.cpp +++ b/tools/clang/tools/dxcompiler/dxcdisassembler.cpp @@ -349,6 +349,7 @@ PCSTR g_pFeatureInfoNames[] = { "Writeable MSAA Textures", "SampleCmp with gradient or bias", "Extended command info", + "Linear Algebra", }; static_assert(_countof(g_pFeatureInfoNames) == ShaderFeatureInfoCount, "g_pFeatureInfoNames needs to be updated"); From 90dbea2be56797b1c2cbb7c17b19c16eab240968 Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Tue, 8 Sep 2026 17:19:41 -0600 Subject: [PATCH 3/3] Address comments --- .../LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast1.ll | 2 +- .../LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast2.ll | 2 +- .../LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast3.ll | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast1.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast1.ll index 39437b3ae3..865899c663 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast1.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast1.ll @@ -31,6 +31,6 @@ attributes #0 = { nounwind } !2 = !{i32 1, i32 10} !3 = !{!"cs", i32 6, i32 10} !4 = !{void ()* @main, !"main", null, null, !5} -!5 = !{i32 4, !6} +!5 = !{i32 0, i64 2199023255552, i32 4, !6} !6 = !{i32 1, i32 1, i32 1} !7 = !{%dx.types.LinAlgMatrixC4M4N5U1S2 undef, i32 4, i32 4, i32 5, i32 1, i32 2} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast2.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast2.ll index 49414b1c6c..ffbd3227b7 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast2.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast2.ll @@ -31,6 +31,6 @@ attributes #0 = { nounwind } !2 = !{i32 1, i32 10} !3 = !{!"cs", i32 6, i32 10} !4 = !{void ()* @main, !"main", null, null, !5} -!5 = !{i32 4, !6} +!5 = !{i32 0, i64 2199023255552, i32 4, !6} !6 = !{i32 1, i32 1, i32 1} !7 = !{%dx.types.LinAlgMatrixC4M4N5U1S2 undef, i32 4, i32 4, i32 5, i32 1, i32 2} diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast3.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast3.ll index c47ba635df..9db0c8ebc9 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast3.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-no-bitcast3.ll @@ -30,6 +30,6 @@ attributes #0 = { nounwind } !2 = !{i32 1, i32 10} !3 = !{!"cs", i32 6, i32 10} !4 = !{void ()* @main, !"main", null, null, !5} -!5 = !{i32 4, !6} +!5 = !{i32 0, i64 2199023255552, i32 4, !6} !6 = !{i32 1, i32 1, i32 1} !7 = !{%dx.types.LinAlgMatrixC4M4N5U1S2 undef, i32 4, i32 4, i32 5, i32 1, i32 2}