From e477e30e3e8c16da3c5604aa03d708c155709f60 Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Fri, 4 Sep 2026 10:27:05 -0600 Subject: [PATCH 1/5] [SM6.10][LinAlg] Remove TargetType, allow TG accumulate --- include/dxc/DXIL/DxilInstructions.h | 23 +++--- lib/DXIL/DxilOperations.cpp | 1 - lib/DxilValidation/DxilValidation.cpp | 18 ----- lib/HLSL/HLOperationLower.cpp | 11 ++- tools/clang/lib/Headers/hlsl/dx/linalg.h | 23 +++--- .../hlsl/linalg/api/matrix-class.hlsl | 25 +++++-- .../api/matrix-groupshared-vector-array.hlsl | 8 +- .../matrixaccumulatetomemory/nominal.hlsl | 10 +-- .../vector-array.hlsl | 10 +-- ...atrix-groupshared-vector-memory-invalid.ll | 4 +- .../linalgmatrix-groupshared-vector-memory.ll | 4 +- .../linalgmatrix-matrixaccumulatetomemory.ll | 73 +++++++------------ .../LinAlgMatrix/linalgmatrix-stage-anyhit.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-as.ll | 4 +- .../linalgmatrix-stage-callable.ll | 4 +- .../linalgmatrix-stage-closesthit.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-cs.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-ds.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-gs.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-hs.ll | 4 +- .../linalgmatrix-stage-intersection.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-miss.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-ms.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-node.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-ps.ll | 4 +- .../linalgmatrix-stage-raygeneration.ll | 4 +- .../LinAlgMatrix/linalgmatrix-stage-vs.ll | 4 +- .../linalg/builtins/matrix-builtins-ast.hlsl | 5 +- .../matrixaccumulatetomemory/ast.hlsl | 5 +- .../unavailable_pre_sm610.hlsl | 2 +- .../vector-array-ast.hlsl | 5 +- .../hlsl/linalg/builtins/stage-errors.hlsl | 2 +- .../builtins/unavailable_pre_sm610.hlsl | 2 +- .../linalg/builtins/vector-array-errors.hlsl | 2 +- .../clang/unittests/HLSLExec/LinAlgTests.cpp | 4 +- utils/hct/gen_intrin_main.txt | 2 +- utils/hct/hctdb.py | 9 ++- 37 files changed, 139 insertions(+), 169 deletions(-) diff --git a/include/dxc/DXIL/DxilInstructions.h b/include/dxc/DXIL/DxilInstructions.h index f9f27660e2..c7a9abdd37 100644 --- a/include/dxc/DXIL/DxilInstructions.h +++ b/include/dxc/DXIL/DxilInstructions.h @@ -10864,7 +10864,7 @@ struct DxilInst_LinAlgMatrixAccumulateToMemory { // Validation support bool isAllowed() const { return true; } bool isArgumentListValid() const { - if (7 != llvm::dyn_cast(Instr)->getNumArgOperands()) + if (6 != llvm::dyn_cast(Instr)->getNumArgOperands()) return false; return true; } @@ -10874,24 +10874,21 @@ struct DxilInst_LinAlgMatrixAccumulateToMemory { enum OperandIdx { arg_matrix = 1, arg_memory = 2, - arg_targetType = 3, - arg_offset = 4, - arg_stride = 5, - arg_layout = 6, + arg_offset = 3, + arg_stride = 4, + arg_layout = 5, }; // Accessors llvm::Value *get_matrix() const { return Instr->getOperand(1); } void set_matrix(llvm::Value *val) { Instr->setOperand(1, val); } llvm::Value *get_memory() const { return Instr->getOperand(2); } void set_memory(llvm::Value *val) { Instr->setOperand(2, val); } - llvm::Value *get_targetType() const { return Instr->getOperand(3); } - void set_targetType(llvm::Value *val) { Instr->setOperand(3, val); } - llvm::Value *get_offset() const { return Instr->getOperand(4); } - void set_offset(llvm::Value *val) { Instr->setOperand(4, val); } - llvm::Value *get_stride() const { return Instr->getOperand(5); } - void set_stride(llvm::Value *val) { Instr->setOperand(5, val); } - llvm::Value *get_layout() const { return Instr->getOperand(6); } - void set_layout(llvm::Value *val) { Instr->setOperand(6, val); } + llvm::Value *get_offset() const { return Instr->getOperand(3); } + void set_offset(llvm::Value *val) { Instr->setOperand(3, val); } + llvm::Value *get_stride() const { return Instr->getOperand(4); } + void set_stride(llvm::Value *val) { Instr->setOperand(4, val); } + llvm::Value *get_layout() const { return Instr->getOperand(5); } + void set_layout(llvm::Value *val) { Instr->setOperand(5, val); } }; /// This instruction Outer products an M sized vector and a N sized vector diff --git a/lib/DXIL/DxilOperations.cpp b/lib/DXIL/DxilOperations.cpp index 8dd92ce0fd..a5e398071b 100644 --- a/lib/DXIL/DxilOperations.cpp +++ b/lib/DXIL/DxilOperations.cpp @@ -6681,7 +6681,6 @@ Function *OP::GetOpFunc(OpCode opCode, Type *pOverloadType) { A(pI32); A(pI32); A(pI32); - A(pI32); break; case OpCode::LinAlgMatrixOuterProduct: A(EXT(0)); diff --git a/lib/DxilValidation/DxilValidation.cpp b/lib/DxilValidation/DxilValidation.cpp index d5c4ef70c3..3ff9ddc9d1 100644 --- a/lib/DxilValidation/DxilValidation.cpp +++ b/lib/DxilValidation/DxilValidation.cpp @@ -1549,24 +1549,6 @@ static void ValidateLinAlgMatrixAccumulateToMemory(CallInst *CI, CI, ValidationRule::InstrLinAlgMatrixGSMemMustBeLargeEnough, {std::to_string(GSScalarCount), std::to_string(ExpectedScalarCount)}); - // Target type must be a immarg of allowed ComponentType - DXIL::ComponentType Target = DXIL::ComponentType::Invalid; - std::optional TargetV = - ValidateConstantIntGetValue(CI, Op.get_targetType(), ValCtx, "TargetType", - "LinAlgMatrixAccumulateToMemory"); - if (TargetV) { - Target = static_cast(*TargetV); - ValidateLinAlgComponentType(CI, Target, ValCtx, "TargetType"); - - // if gs memory inner type != i32 then target elem type must match it - if (!GSMemInnerTy->isIntegerTy(32) && - !IsComponentTypeSameNativeType(Target, GSMemInnerTy)) - ValCtx.EmitInstrFormatError( - CI, ValidationRule::InstrLinAlgMatrixGSMemTypeMustMatch, - {TypeToString(GSMemInnerTy), "target", - ComponentTypeToString(Target)}); - } - // gs memory ops have the parameter in element count so it must be scaled uint64_t ByteCount = ComponentTypeByteCount(Mat->Type); diff --git a/lib/HLSL/HLOperationLower.cpp b/lib/HLSL/HLOperationLower.cpp index 30c27f5391..bbfe342a88 100644 --- a/lib/HLSL/HLOperationLower.cpp +++ b/lib/HLSL/HLOperationLower.cpp @@ -7157,10 +7157,9 @@ Value *TranslateLinAlgMatrixAccumToMemory( Value *Matrix = CI->getArgOperand(1); Value *Arr = CI->getArgOperand(2); - Value *TargetType = CI->getArgOperand(3); - Value *Offset = CI->getArgOperand(4); - Value *Stride = CI->getArgOperand(5); - Value *Layout = CI->getArgOperand(6); + Value *Offset = CI->getArgOperand(3); + Value *Stride = CI->getArgOperand(4); + Value *Layout = CI->getArgOperand(5); Value *Zero = Builder.getInt32(0); Value *ArrPtr = Builder.CreateGEP(Arr, {Zero, Zero}); @@ -7169,8 +7168,8 @@ Value *TranslateLinAlgMatrixAccumToMemory( Constant *OpArg = HlslOp->GetU32Const((unsigned)OpCode); Function *DxilFunc = HlslOp->GetOpFunc(OpCode, {Matrix->getType(), ArrEltTy}); - return Builder.CreateCall( - DxilFunc, {OpArg, Matrix, ArrPtr, TargetType, Offset, Stride, Layout}); + return Builder.CreateCall(DxilFunc, + {OpArg, Matrix, ArrPtr, Offset, Stride, Layout}); } Value *TranslateLinAlgConvert(CallInst *CI, IntrinsicOp IOP, OP::OpCode OpCode, diff --git a/tools/clang/lib/Headers/hlsl/dx/linalg.h b/tools/clang/lib/Headers/hlsl/dx/linalg.h index fa3c3857a9..306dd7aae7 100644 --- a/tools/clang/lib/Headers/hlsl/dx/linalg.h +++ b/tools/clang/lib/Headers/hlsl/dx/linalg.h @@ -363,31 +363,30 @@ class Matrix { Stride, Layout, Align); } - template + template typename hlsl::enable_if< - hlsl::is_arithmetic_vector::value && Use == MatrixUse::Accumulator && - UseLocal == Use && Scope == MatrixScope::Wave && ScopeLocal == Scope, + hlsl::is_same::type, + ElementType>::value && + hlsl::is_arithmetic_vector::value && + Use == MatrixUse::Accumulator && UseLocal == Use, void>::type InterlockedAccumulate(groupshared T Arr[Size], uint StartIdx, uint Stride, MatrixLayoutEnum Layout) { - __builtin_LinAlg_MatrixAccumulateToMemory(__handle, Arr, ComponentTy, - StartIdx, Stride, Layout); + __builtin_LinAlg_MatrixAccumulateToMemory(__handle, Arr, StartIdx, Stride, + Layout); } template + MatrixUseEnum UseLocal = Use, SIZE_TYPE Size> typename hlsl::enable_if< hlsl::is_same::type, uint8_t4_packed>::value && - Use == MatrixUse::Accumulator && UseLocal == Use && - Scope == MatrixScope::Wave && ScopeLocal == Scope, + Use == MatrixUse::Accumulator && UseLocal == Use, void>::type InterlockedAccumulate(groupshared T Arr[Size], uint StartIdx, uint Stride, MatrixLayoutEnum Layout) { - __builtin_LinAlg_MatrixAccumulateToMemory(__handle, Arr, TargetCompTy, - StartIdx, Stride, Layout); + __builtin_LinAlg_MatrixAccumulateToMemory(__handle, Arr, StartIdx, Stride, + Layout); } template diff --git a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl index a17d03f098..06b4c758c3 100644 --- a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl +++ b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl @@ -7,6 +7,7 @@ using namespace dx::linalg; using MatrixATy = Matrix; using MatrixBTy = Matrix; using MatrixAccumTy = Matrix; +using TGMatrixAccumTy = Matrix; using TSMatrixATy = Matrix; using TSMatrixAccumTy = Matrix; @@ -156,8 +157,8 @@ void main(uint ID : SV_GroupID) // CHECK: call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, // CHECK-SAME: %dx.types.LinAlgMatrixC9M4N4U2S1 %[[ACCUM0]], // CHECK-SAME: float addrspace(3)* getelementptr inbounds ([256 x float], -// CHECK-SAME: [256 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 0, i32 16, i32 1) -// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) +// CHECK-SAME: [256 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 0, i32 16, i32 1) +// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) AccMat1.InterlockedAccumulate(SharedArr, 0, 16, MatrixLayoutEnum::ColMajor); // Matrix::InterlockedAccumulate to packed groupshared memory @@ -165,16 +166,28 @@ void main(uint ID : SV_GroupID) // CHECK: call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.i32(i32 -2147483620, // CHECK-SAME: %dx.types.LinAlgMatrixC9M4N4U2S1 %[[ACCUM0]], // CHECK-SAME: i32 addrspace(3)* getelementptr inbounds ([256 x i32], -// CHECK-SAME: [256 x i32] addrspace(3)* @"\01?PackedArr@@3PA$ui8_4pk@A", i32 0, i32 0), i32 9, i32 0, i32 16, i32 1) -// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) +// CHECK-SAME: [256 x i32] addrspace(3)* @"\01?PackedArr@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 16, i32 1) +// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) AccMat1.InterlockedAccumulate(PackedArr, 0, 16, MatrixLayoutEnum::ColMajor); // CHECK: call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.i32(i32 -2147483620, // CHECK-SAME: %dx.types.LinAlgMatrixC9M4N4U2S1 %[[ACCUM0]], // CHECK-SAME: i32 addrspace(3)* getelementptr inbounds ([256 x i32], -// CHECK-SAME: [256 x i32] addrspace(3)* @"\01?PackedArr@@3PA$ui8_4pk@A", i32 0, i32 0), i32 4, i32 0, i32 16, i32 1) -// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) +// CHECK-SAME: [256 x i32] addrspace(3)* @"\01?PackedArr@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 16, i32 1) +// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) AccMat1.InterlockedAccumulate(PackedArr, 0, 16, MatrixLayoutEnum::ColMajor); +// Matrix::InterlockedAccumulate supports thread-group scope +// +// CHECK: %[[TGACCUM:.*]] = call %dx.types.LinAlgMatrixC9M4N4U2S2 @dx.op.linAlgFillMatrix.mC9M4N4U2S2.f32( +// CHECK-SAME: i32 -2147483636, float 1.500000e+01) + TGMatrixAccumTy TGAccMat = TGMatrixAccumTy::Splat(15.0f); +// CHECK: call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S2.f32(i32 -2147483620, +// CHECK-SAME: %dx.types.LinAlgMatrixC9M4N4U2S2 %[[TGACCUM]], +// CHECK-SAME: float addrspace(3)* getelementptr inbounds ([256 x float], +// CHECK-SAME: [256 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 0, i32 16, i32 1) +// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) + TGAccMat.InterlockedAccumulate(SharedArr, 0, 16, MatrixLayoutEnum::ColMajor); + // Matrix::Accumulate // // CHECK: %[[ACCUM1:.*]] = call %dx.types.LinAlgMatrixC9M4N4U2S1 @dx.op.linAlgFillMatrix.mC9M4N4U2S1.f32( diff --git a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-groupshared-vector-array.hlsl b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-groupshared-vector-array.hlsl index 28b28b7b03..807544fa9b 100644 --- a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-groupshared-vector-array.hlsl +++ b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-groupshared-vector-array.hlsl @@ -64,8 +64,8 @@ void main() { // CHECK-SAME: %dx.types.LinAlgMatrixC9M4N4U2S1 %[[ACC:[0-9]+]], // CHECK-SAME: <4 x float> addrspace(3)* getelementptr inbounds ([64 x <4 x float>], // CHECK-SAME: [64 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), -// CHECK-SAME: i32 9, i32 0, i32 16, i32 1) -// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) +// CHECK-SAME: i32 0, i32 16, i32 1) +// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) Acc.InterlockedAccumulate(SharedVecArr, 0, 16, MatrixLayoutEnum::ColMajor); // Matrix::InterlockedAccumulate to an array of packed vectors @@ -74,7 +74,7 @@ void main() { // CHECK-SAME: %dx.types.LinAlgMatrixC9M4N4U2S1 %[[ACC]], // CHECK-SAME: <2 x i32> addrspace(3)* getelementptr inbounds ([64 x <2 x i32>], // CHECK-SAME: [64 x <2 x i32>] addrspace(3)* @"\01?PackedVecArr@@3PAV?$vector@$ui8_4pk@$01@@A", i32 0, i32 0), -// CHECK-SAME: i32 4, i32 0, i32 16, i32 1) -// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) +// CHECK-SAME: i32 0, i32 16, i32 1) +// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) Acc.InterlockedAccumulate(PackedVecArr, 0, 16, MatrixLayoutEnum::ColMajor); } diff --git a/tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixaccumulatetomemory/nominal.hlsl b/tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixaccumulatetomemory/nominal.hlsl index 5feb30b80d..f41e0e9084 100644 --- a/tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixaccumulatetomemory/nominal.hlsl +++ b/tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixaccumulatetomemory/nominal.hlsl @@ -11,14 +11,14 @@ void main() { // CHECK: call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M5N4U2S2.f32(i32 -2147483620, // CHECK-SAME: %dx.types.LinAlgMatrixC9M5N4U2S2 %{{.*}}, float addrspace(3)* getelementptr inbounds ([64 x float], - // CHECK-SAME: [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 16, i32 3) - // CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + // CHECK-SAME: [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 16, i32 3) + // CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) // CHECK2: call void @"dx.hl.op..void (i32, %dx.types.LinAlgMatrixC9M5N4U2S2, - // CHECK2-SAME: [64 x float] addrspace(3)*, i32, i32, i32, i32)"(i32 416, + // CHECK2-SAME: [64 x float] addrspace(3)*, i32, i32, i32)"(i32 416, // CHECK2-SAME: %dx.types.LinAlgMatrixC9M5N4U2S2 %{{.*}}, [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", - // CHECK2-SAME: i32 9, i32 128, i32 16, i32 3) + // CHECK2-SAME: i32 128, i32 16, i32 3) __builtin_LinAlgMatrix [[__LinAlgMatrix_Attributes(9, 5, 4, 2, 2)]] mat; __builtin_LinAlg_FillMatrix(mat, 1); - __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 9, 128, 16, 3); + __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 128, 16, 3); } diff --git a/tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixaccumulatetomemory/vector-array.hlsl b/tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixaccumulatetomemory/vector-array.hlsl index ed0056c29a..c8918efce6 100644 --- a/tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixaccumulatetomemory/vector-array.hlsl +++ b/tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixaccumulatetomemory/vector-array.hlsl @@ -16,14 +16,14 @@ void main() { // CHECK: call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M5N4U2S2.v2f32(i32 -2147483620, // CHECK-SAME: %dx.types.LinAlgMatrixC9M5N4U2S2 %{{.*}}, <2 x float> addrspace(3)* getelementptr inbounds ([64 x <2 x float>], // CHECK-SAME: [64 x <2 x float>] addrspace(3)* @"\01?SharedArr@@3PAV?$vector@M$01@@A", i32 0, i32 0), - // CHECK-SAME: i32 9, i32 128, i32 16, i32 3) - // CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + // CHECK-SAME: i32 128, i32 16, i32 3) + // CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) // CHECK2: call void @"dx.hl.op..void (i32, %dx.types.LinAlgMatrixC9M5N4U2S2, - // CHECK2-SAME: [64 x <2 x float>] addrspace(3)*, i32, i32, i32, i32)"(i32 416, + // CHECK2-SAME: [64 x <2 x float>] addrspace(3)*, i32, i32, i32)"(i32 416, // CHECK2-SAME: %dx.types.LinAlgMatrixC9M5N4U2S2 %{{.*}}, [64 x <2 x float>] addrspace(3)* - // CHECK2-SAME: @"\01?SharedArr@@3PAV?$vector@M$01@@A", i32 9, i32 128, i32 16, i32 3) + // CHECK2-SAME: @"\01?SharedArr@@3PAV?$vector@M$01@@A", i32 128, i32 16, i32 3) __builtin_LinAlgMatrix [[__LinAlgMatrix_Attributes(9, 5, 4, 2, 2)]] mat; __builtin_LinAlg_FillMatrix(mat, 1); - __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 9, 128, 16, 3); + __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 128, 16, 3); } 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..8af232a056 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 @@ -24,7 +24,7 @@ define void @main() { %1 = call %dx.types.LinAlgMatrixC9M4N4U1S1 @dx.op.linAlgMatrixLoadFromMemory.mC9M4N4U1S1.v4i8(i32 -2147483633, <4 x i8> addrspace(3)* getelementptr inbounds ([64 x <4 x i8>], [64 x <4 x i8>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 0, i32 16, i32 1) ; LinAlgMatrixLoadFromMemory(memory,offset,stride,layout) call void @dx.op.linAlgMatrixStoreToMemory.mC9M4N4U1S1.v4i8(i32 -2147483627, %dx.types.LinAlgMatrixC9M4N4U1S1 %1, <4 x i8> addrspace(3)* getelementptr inbounds ([64 x <4 x i8>], [64 x <4 x i8>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 0, i32 16, i32 1) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %2 = call %dx.types.LinAlgMatrixC9M4N4U2S1 @dx.op.linAlgFillMatrix.mC9M4N4U2S1.i32(i32 -2147483636, i32 0) ; LinAlgFillMatrix(value) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.v4i8(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %2, <4 x i8> addrspace(3)* getelementptr inbounds ([64 x <4 x i8>], [64 x <4 x i8>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 9, i32 0, i32 16, i32 1) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.v4i8(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %2, <4 x i8> addrspace(3)* getelementptr inbounds ([64 x <4 x i8>], [64 x <4 x i8>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 0, i32 16, i32 1) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -38,7 +38,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC9M4N4U1S1.v4i8(i32, %dx.types.Li declare %dx.types.LinAlgMatrixC9M4N4U2S1 @dx.op.linAlgFillMatrix.mC9M4N4U2S1.i32(i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.v4i8(i32, %dx.types.LinAlgMatrixC9M4N4U2S1, <4 x i8> addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.v4i8(i32, %dx.types.LinAlgMatrixC9M4N4U2S1, <4 x i8> addrspace(3)*, i32, i32, i32) #0 attributes #0 = { nounwind } 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..56363b95d2 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-groupshared-vector-memory.ll @@ -18,7 +18,7 @@ define void @main() { %1 = call %dx.types.LinAlgMatrixC9M4N4U1S1 @dx.op.linAlgMatrixLoadFromMemory.mC9M4N4U1S1.v4f32(i32 -2147483633, <4 x float> addrspace(3)* getelementptr inbounds ([64 x <4 x float>], [64 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 0, i32 16, i32 1) ; LinAlgMatrixLoadFromMemory(memory,offset,stride,layout) call void @dx.op.linAlgMatrixStoreToMemory.mC9M4N4U1S1.v4f32(i32 -2147483627, %dx.types.LinAlgMatrixC9M4N4U1S1 %1, <4 x float> addrspace(3)* getelementptr inbounds ([64 x <4 x float>], [64 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 0, i32 16, i32 1) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %2 = call %dx.types.LinAlgMatrixC9M4N4U2S1 @dx.op.linAlgFillMatrix.mC9M4N4U2S1.i32(i32 -2147483636, i32 0) ; LinAlgFillMatrix(value) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.v4f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %2, <4 x float> addrspace(3)* getelementptr inbounds ([64 x <4 x float>], [64 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 9, i32 0, i32 16, i32 1) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.v4f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %2, <4 x float> addrspace(3)* getelementptr inbounds ([64 x <4 x float>], [64 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 0, i32 16, i32 1) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -32,7 +32,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC9M4N4U1S1.v4f32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC9M4N4U2S1 @dx.op.linAlgFillMatrix.mC9M4N4U2S1.i32(i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.v4f32(i32, %dx.types.LinAlgMatrixC9M4N4U2S1, <4 x float> addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.v4f32(i32, %dx.types.LinAlgMatrixC9M4N4U2S1, <4 x float> addrspace(3)*, i32, i32, i32) #0 attributes #0 = { nounwind } diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll index 4b5ccad482..4b62c403c9 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll @@ -39,71 +39,58 @@ define void @main() { %15 = call %dx.types.LinAlgMatrixC9M8N9U2S1 @dx.op.linAlgMatrixLoadFromDescriptor.mC9M8N9U2S1(i32 -2147483634, %dx.types.Handle %14, i32 0, i32 0, i32 0, i32 128) ; LinAlgMatrixLoadFromDescriptor(handle,offset,stride,layout,align) ; okay - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK: Function: main: error: Parameter 'Offset' in bytes must be a multiple of 128, got 516 (129 elements * 4 bytes per element). ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 129, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 129, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; okay only if offset accounts for byte width of component type - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 32, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 32, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK-NEXT: Function: main: error: Parameter 'Stride' in bytes must be a multiple of 16, got 68 (17 elements * 4 bytes per element). ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 17, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 17, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; okay only if stride accounts for byte width of component type - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 4, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 4, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) - ; CHECK-NEXT: Function: main: error: Groupshared memory inner type 'float' must match target type 'I64'. - ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 6, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) - - %16 = call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle %1, %dx.types.ResourceProperties { i32 11, i32 0 }) ; AnnotateHandle(res,props) resource: ByteAddressBuffer - %17 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %16, i32 0, i32 undef, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment) - %18 = extractvalue %dx.types.ResRet.i32 %17, 0 - - ; CHECK-NEXT: Function: main: error: TargetType of LinAlgMatrixAccumulateToMemory must be an immediate constant. - ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 %18, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) - - ; CHECK-NEXT: Function: main: error: Component type 'Invalid' from TargetType not allowed in LinAlg Matrix operations. - ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.i32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, i32 addrspace(3)* getelementptr inbounds ([64 x i32], [64 x i32] addrspace(3)* @"\01?SharedIntArr@@3PAIA", i32 0, i32 0), i32 0, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + ; okay: i32 groupshared memory may hold any matrix element type + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S1 %7, i32 addrspace(3)* getelementptr inbounds ([64 x i32], [64 x i32] addrspace(3)* @"\01?SharedIntArr@@3PAIA", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK-NEXT: Function: main: error: Input matrix scope 'Thread' does not match expected scope Wave or ThreadGroup. ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S0.f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S0.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S0 %3, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S0.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U2S0 %3, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK-NEXT: Function: main: error: Input matrix use 'A' does not match expected use Accumulator. ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U0S1.f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U0S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U0S1 %5, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U0S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M4N4U0S1 %5, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK-NEXT: Function: main: error: Groupshared memory inner type 'float' must match input matrix type 'I64'. ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC6M4N4U2S2.f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC6M4N4U2S2.f32(i32 -2147483620, %dx.types.LinAlgMatrixC6M4N4U2S2 %9, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC6M4N4U2S2.f32(i32 -2147483620, %dx.types.LinAlgMatrixC6M4N4U2S2 %9, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; okay - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N8U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M8N8U2S1 %11, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N8U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M8N8U2S1 %11, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK-NEXT: Function: main: error: Groupshared memory holds '64' scalars but must hold at least '72' scalars. ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M9N8U2S1 %13, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M9N8U2S1 %13, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK-NEXT: Function: main: error: Groupshared memory holds '64' scalars but must hold at least '72' scalars. ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M8N9U2S1 %15, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M8N9U2S1 %15, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; okay - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N8U2S1.v4f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M8N8U2S1 %11, <4 x float> addrspace(3)* getelementptr inbounds ([16 x <4 x float>], [16 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N8U2S1.v4f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M8N8U2S1 %11, <4 x float> addrspace(3)* getelementptr inbounds ([16 x <4 x float>], [16 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK-NEXT: Function: main: error: Groupshared memory holds '64' scalars but must hold at least '72' scalars. ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.v4f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.v4f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M9N8U2S1 %13, <4 x float> addrspace(3)* getelementptr inbounds ([16 x <4 x float>], [16 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.v4f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M9N8U2S1 %13, <4 x float> addrspace(3)* getelementptr inbounds ([16 x <4 x float>], [16 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK-NEXT: Function: main: error: Groupshared memory holds '64' scalars but must hold at least '72' scalars. ; CHECK-NEXT: note: at {{.*}} @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.v4f32 - call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.v4f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M8N9U2S1 %15, <4 x float> addrspace(3)* getelementptr inbounds ([16 x <4 x float>], [16 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 9, i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.v4f32(i32 -2147483620, %dx.types.LinAlgMatrixC9M8N9U2S1 %15, <4 x float> addrspace(3)* getelementptr inbounds ([16 x <4 x float>], [16 x <4 x float>] addrspace(3)* @"\01?SharedVecArr@@3PAV?$vector@M$03@@A", i32 0, i32 0), i32 128, i32 16, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ; CHECK-NEXT: Validation failed. ret void @@ -131,40 +118,37 @@ declare %dx.types.LinAlgMatrixC9M9N8U2S1 @dx.op.linAlgMatrixLoadFromDescriptor.m declare %dx.types.LinAlgMatrixC9M8N9U2S1 @dx.op.linAlgMatrixLoadFromDescriptor.mC9M8N9U2S1(i32, %dx.types.Handle, i32, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32, %dx.types.LinAlgMatrixC9M4N4U2S1, float addrspace(3)*, i32, i32, i32, i32) #0 - -; Function Attrs: nounwind readonly -declare %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32, %dx.types.Handle, i32, i32, i8, i32) #1 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.f32(i32, %dx.types.LinAlgMatrixC9M4N4U2S1, float addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.i32(i32, %dx.types.LinAlgMatrixC9M4N4U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.i32(i32, %dx.types.LinAlgMatrixC9M4N4U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S0.f32(i32, %dx.types.LinAlgMatrixC9M4N4U2S0, float addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S0.f32(i32, %dx.types.LinAlgMatrixC9M4N4U2S0, float addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U0S1.f32(i32, %dx.types.LinAlgMatrixC9M4N4U0S1, float addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U0S1.f32(i32, %dx.types.LinAlgMatrixC9M4N4U0S1, float addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC6M4N4U2S2.f32(i32, %dx.types.LinAlgMatrixC6M4N4U2S2, float addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC6M4N4U2S2.f32(i32, %dx.types.LinAlgMatrixC6M4N4U2S2, float addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N8U2S1.f32(i32, %dx.types.LinAlgMatrixC9M8N8U2S1, float addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N8U2S1.f32(i32, %dx.types.LinAlgMatrixC9M8N8U2S1, float addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.f32(i32, %dx.types.LinAlgMatrixC9M9N8U2S1, float addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.f32(i32, %dx.types.LinAlgMatrixC9M9N8U2S1, float addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.f32(i32, %dx.types.LinAlgMatrixC9M8N9U2S1, float addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.f32(i32, %dx.types.LinAlgMatrixC9M8N9U2S1, float addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N8U2S1.v4f32(i32, %dx.types.LinAlgMatrixC9M8N8U2S1, <4 x float> addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N8U2S1.v4f32(i32, %dx.types.LinAlgMatrixC9M8N8U2S1, <4 x float> addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.v4f32(i32, %dx.types.LinAlgMatrixC9M9N8U2S1, <4 x float> addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.v4f32(i32, %dx.types.LinAlgMatrixC9M9N8U2S1, <4 x float> addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.v4f32(i32, %dx.types.LinAlgMatrixC9M8N9U2S1, <4 x float> addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.v4f32(i32, %dx.types.LinAlgMatrixC9M8N9U2S1, <4 x float> addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #2 @@ -173,7 +157,7 @@ declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types. declare %dx.types.Handle @dx.op.createHandleFromBinding(i32, %dx.types.ResBind, i32, i1) #2 attributes #0 = { nounwind } -attributes #1 = { nounwind readonly } +attributes #1 = { nounwind readnone } attributes #2 = { nounwind readnone } !dx.targetTypes = !{!0, !1, !2, !3, !4, !5, !6} @@ -200,4 +184,3 @@ attributes #2 = { nounwind readnone } !13 = !{void ()* @main, !"main", null, !10, !14} !14 = !{i32 0, i64 8388624, i32 4, !15} !15 = !{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..ec27892945 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-anyhit.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-anyhit.ll @@ -95,7 +95,7 @@ define void @"\01?mainAH@@YAXURayPayload@@UAttribs@@@Z"(%struct.RayPayload* noal call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, %dx.types.Handle %33, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %34 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %29, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -169,7 +169,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-as.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-as.ll index cb6e8f4a46..df642c1ea3 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-as.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-as.ll @@ -84,7 +84,7 @@ define void @mainAS() { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %27, %dx.types.Handle %28, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %27, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %29 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %25, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %29, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %29, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) %30 = bitcast %struct.AmpPayload.0* %3 to i8* call void @llvm.lifetime.start(i64 8, i8* %30) #0 %31 = getelementptr inbounds %struct.AmpPayload.0, %struct.AmpPayload.0* %3, i32 0, i32 0, i32 0 @@ -172,7 +172,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind declare void @dx.op.dispatchMesh.struct.AmpPayload.0(i32, i32, i32, i32, %struct.AmpPayload.0*) #0 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-callable.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-callable.ll index 81352dda0d..c918c47db5 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-callable.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-callable.ll @@ -94,7 +94,7 @@ define void @"\01?mainCALL@@YAXUAttribs@@@Z"(%struct.Attribs* noalias nocapture call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, %dx.types.Handle %33, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %34 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %29, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -168,7 +168,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-closesthit.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-closesthit.ll index 8ffe4cdb5c..f32d2bb3e5 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-closesthit.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-closesthit.ll @@ -95,7 +95,7 @@ define void @"\01?mainCH@@YAXURayPayload@@UAttribs@@@Z"(%struct.RayPayload* noal call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, %dx.types.Handle %33, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %34 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %29, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -169,7 +169,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-cs.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-cs.ll index 6c90ead9ca..2caa2f8c36 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-cs.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-cs.ll @@ -52,7 +52,7 @@ define void @mainCS() { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %26, %dx.types.Handle %27, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %26, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %28 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %24, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -126,7 +126,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ds.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ds.ll index 42c8344f06..d3cbc55ba9 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ds.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ds.ll @@ -85,7 +85,7 @@ define void @mainDS() { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %26, %dx.types.Handle %27, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %26, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %28 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %24, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) %29 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 0) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis) %30 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 0) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis) %31 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 0) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis) @@ -173,7 +173,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #1 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #1 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #0 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-gs.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-gs.ll index 19ccfaacae..c7d8ba5c44 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-gs.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-gs.ll @@ -89,7 +89,7 @@ define void @mainGS() { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, %dx.types.Handle %29, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %30 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %26, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %30, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %30, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) %31 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 0) ; CBufferLoadLegacy(handle,regIndex) %32 = extractvalue %dx.types.CBufRet.f32 %31, 0 %33 = extractvalue %dx.types.CBufRet.f32 %31, 1 @@ -183,7 +183,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readonly declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, 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..b7648b9e08 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-hs.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-hs.ll @@ -99,7 +99,7 @@ define void @mainHS() { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %27, %dx.types.Handle %28, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %27, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %29 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %25, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %29, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %29, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) %30 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 %3) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis) %31 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 %3) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis) %32 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 %3) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis) @@ -193,7 +193,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #1 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #1 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #0 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-intersection.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-intersection.ll index d69d88f08c..d5083fab06 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-intersection.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-intersection.ll @@ -93,7 +93,7 @@ define void @"\01?mainIS@@YAXXZ"() #0 { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, %dx.types.Handle %33, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %34 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %29, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -167,7 +167,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-miss.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-miss.ll index baa1739db7..7d50d43f5e 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-miss.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-miss.ll @@ -94,7 +94,7 @@ define void @"\01?mainMS@@YAXURayPayload@@@Z"(%struct.RayPayload* noalias nocapt call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, %dx.types.Handle %33, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %34 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %29, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -168,7 +168,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ms.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ms.ll index 7dba832629..1d5d368f6d 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ms.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ms.ll @@ -83,7 +83,7 @@ define void @mainMeS() { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %27, %dx.types.Handle %28, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %27, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %29 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %25, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %29, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %29, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) call void @dx.op.setMeshOutputCounts(i32 168, i32 32, i32 16) ; SetMeshOutputCounts(numVertices,numPrimitives) call void @dx.op.storeVertexOutput.f32(i32 171, i32 0, i32 0, i8 0, float 0.000000e+00, i32 %3) ; StoreVertexOutput(outputSigId,rowIndex,colIndex,value,vertexIndex) call void @dx.op.storeVertexOutput.f32(i32 171, i32 0, i32 0, i8 1, float 0.000000e+00, i32 %3) ; StoreVertexOutput(outputSigId,rowIndex,colIndex,value,vertexIndex) @@ -171,7 +171,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #1 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #1 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #0 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-node.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-node.ll index cdedf36d6f..20a8eefda3 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-node.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-node.ll @@ -90,7 +90,7 @@ define void @mainNS() #0 { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, %dx.types.Handle %33, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %34 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %29, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -164,7 +164,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ps.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ps.ll index c8a6846f68..8a2525ea32 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ps.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-ps.ll @@ -85,7 +85,7 @@ define void @mainPS() { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %26, %dx.types.Handle %27, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %26, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %28 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %24, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float 1.000000e+00) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float 1.000000e+00) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float 1.000000e+00) ; StoreOutput(outputSigId,rowIndex,colIndex,value) @@ -166,7 +166,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-raygeneration.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-raygeneration.ll index 4306930055..c16f1656ec 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-raygeneration.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-raygeneration.ll @@ -93,7 +93,7 @@ define void @"\01?mainRG@@YAXXZ"() #0 { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, %dx.types.Handle %33, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %31, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %34 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %29, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %34, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) ret void } @@ -167,7 +167,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-vs.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-vs.ll index f086c35140..5c5cd45e30 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-vs.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-stage-vs.ll @@ -85,7 +85,7 @@ define void @mainVS() { call void @dx.op.linAlgMatrixStoreToDescriptor.mC8M16N16U2S1(i32 -2147483628, %dx.types.LinAlgMatrixC8M16N16U2S1 %26, %dx.types.Handle %27, i32 0, i32 64, i32 0, i32 128) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align) call void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32 -2147483627, %dx.types.LinAlgMatrixC8M16N16U2S1 %26, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixStoreToMemory(matrix,memory,offset,stride,layout) %28 = call %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32 -2147483635, %dx.types.LinAlgMatrixC8M16N16U1S1 %24, i1 false) ; LinAlgCopyConvertMatrix(srcMatrix,transpose) - call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 8, i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,targetType,offset,stride,layout) + call void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32 -2147483620, %dx.types.LinAlgMatrixC8M16N16U2S1 %28, i32 addrspace(3)* getelementptr inbounds ([1024 x i32], [1024 x i32] addrspace(3)* @"\01?GSMemory@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 64, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float 1.000000e+00) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float 1.000000e+00) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float 1.000000e+00) ; StoreOutput(outputSigId,rowIndex,colIndex,value) @@ -166,7 +166,7 @@ declare void @dx.op.linAlgMatrixStoreToMemory.mC8M16N16U2S1.i32(i32, %dx.types.L declare %dx.types.LinAlgMatrixC8M16N16U2S1 @dx.op.linAlgCopyConvertMatrix.mC8M16N16U2S1.mC8M16N16U1S1(i32, %dx.types.LinAlgMatrixC8M16N16U1S1, i1) #0 ; Function Attrs: nounwind -declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32, i32) #0 +declare void @dx.op.linAlgMatrixAccumulateToMemory.mC8M16N16U2S1.i32(i32, %dx.types.LinAlgMatrixC8M16N16U2S1, i32 addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrix-builtins-ast.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrix-builtins-ast.hlsl index 6ee9529a49..55a8a6eab7 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrix-builtins-ast.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrix-builtins-ast.hlsl @@ -45,16 +45,15 @@ void main() { // CHECK-NEXT: AvailabilityAttr {{.*}} Implicit 6.10 0 0 "" __builtin_LinAlg_MatrixAccumulateToDescriptor(mat1, Buf, 1, 2, 3, 4); -// CHECK: FunctionDecl {{.*}} implicit used __builtin_LinAlg_MatrixAccumulateToMemory 'void (__builtin_LinAlgMatrix {{.*}}, float const __attribute__((address_space(3))) (&)[64], unsigned int, unsigned int, unsigned int, unsigned int)' extern +// CHECK: FunctionDecl {{.*}} implicit used __builtin_LinAlg_MatrixAccumulateToMemory 'void (__builtin_LinAlgMatrix {{.*}}, float const __attribute__((address_space(3))) (&)[64], unsigned int, unsigned int, unsigned int)' extern // CHECK-NEXT: ParmVarDecl {{.*}} matrix '__builtin_LinAlgMatrix {{.*}}' // CHECK-NEXT: ParmVarDecl {{.*}} memory 'float const __attribute__((address_space(3))) (&)[64]' -// CHECK-NEXT: ParmVarDecl {{.*}} targetType 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} offset 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} stride 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} layout 'unsigned int' // CHECK-NEXT: HLSLIntrinsicAttr {{.*}} Implicit "op" "" 416 // CHECK-NEXT: AvailabilityAttr {{.*}} Implicit 6.10 0 0 "" - __builtin_LinAlg_MatrixAccumulateToMemory(mat1, SharedArr, 0, 0, 0, 0); + __builtin_LinAlg_MatrixAccumulateToMemory(mat1, SharedArr, 0, 0, 0); // CHECK: FunctionDecl {{.*}} implicit used __builtin_LinAlg_MatrixGetCoordinate 'vector (__builtin_LinAlgMatrix {{.*}}, unsigned int)' extern // CHECK-NEXT: ParmVarDecl {{.*}} matrix '__builtin_LinAlgMatrix {{.*}}' diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/ast.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/ast.hlsl index fcf8e5199f..4cae1086bf 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/ast.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/ast.hlsl @@ -1,10 +1,9 @@ // REQUIRES: dxil-1-10 // RUN: %dxc -T lib_6_10 -E main %s -ast-dump-implicit | FileCheck %s -// CHECK: FunctionDecl {{.*}} implicit used __builtin_LinAlg_MatrixAccumulateToMemory 'void (__builtin_LinAlgMatrix {{.*}}, float const __attribute__((address_space(3))) (&)[64], unsigned int, unsigned int, unsigned int, unsigned int)' extern +// CHECK: FunctionDecl {{.*}} implicit used __builtin_LinAlg_MatrixAccumulateToMemory 'void (__builtin_LinAlgMatrix {{.*}}, float const __attribute__((address_space(3))) (&)[64], unsigned int, unsigned int, unsigned int)' extern // CHECK-NEXT: ParmVarDecl {{.*}} matrix '__builtin_LinAlgMatrix {{.*}}' // CHECK-NEXT: ParmVarDecl {{.*}} memory 'float const __attribute__((address_space(3))) (&)[64]' -// CHECK-NEXT: ParmVarDecl {{.*}} targetType 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} offset 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} stride 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} layout 'unsigned int' @@ -17,5 +16,5 @@ groupshared float SharedArr[64]; [numthreads(1,1,1)] void main() { __builtin_LinAlgMatrix [[__LinAlgMatrix_Attributes(4, 5, 4, 1, 2)]] mat; - __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 0, 0, 0, 0); + __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 0, 0, 0); } diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/unavailable_pre_sm610.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/unavailable_pre_sm610.hlsl index 265ac0ac42..e5a9ea4895 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/unavailable_pre_sm610.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/unavailable_pre_sm610.hlsl @@ -7,5 +7,5 @@ void main() { __builtin_LinAlgMatrix [[__LinAlgMatrix_Attributes(4, 5, 4, 1, 2)]] mat; // expected-error@+1{{intrinsic __builtin_LinAlg_MatrixAccumulateToMemory potentially used by ''main'' requires shader model 6.10 or greater}} - __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 0, 0, 0, 0); + __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 0, 0, 0); } diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/vector-array-ast.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/vector-array-ast.hlsl index f8a02aaa80..abdd64e417 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/vector-array-ast.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/matrixaccumulatetomemory/vector-array-ast.hlsl @@ -4,10 +4,9 @@ // The groupshared array parameter is spelled 'LinAlg<>[]', so the element type // of the synthesized parameter follows the element type of the argument. -// CHECK: FunctionDecl {{.*}} implicit used __builtin_LinAlg_MatrixAccumulateToMemory 'void (__builtin_LinAlgMatrix {{.*}}, vector const __attribute__((address_space(3))) (&)[64], unsigned int, unsigned int, unsigned int, unsigned int)' extern +// CHECK: FunctionDecl {{.*}} implicit used __builtin_LinAlg_MatrixAccumulateToMemory 'void (__builtin_LinAlgMatrix {{.*}}, vector const __attribute__((address_space(3))) (&)[64], unsigned int, unsigned int, unsigned int)' extern // CHECK-NEXT: ParmVarDecl {{.*}} matrix '__builtin_LinAlgMatrix {{.*}}' // CHECK-NEXT: ParmVarDecl {{.*}} memory 'vector const __attribute__((address_space(3))) (&)[64]' -// CHECK-NEXT: ParmVarDecl {{.*}} targetType 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} offset 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} stride 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} layout 'unsigned int' @@ -20,5 +19,5 @@ groupshared vector SharedArr[64]; [numthreads(1,1,1)] void main() { __builtin_LinAlgMatrix [[__LinAlgMatrix_Attributes(4, 5, 4, 1, 2)]] mat; - __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 0, 0, 0, 0); + __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 0, 0, 0); } diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/stage-errors.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/stage-errors.hlsl index 8a47604644..25b4ec5171 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/stage-errors.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/stage-errors.hlsl @@ -75,7 +75,7 @@ void CallFunction() #endif #ifdef MATRIX_ACCUMULATE_TO_MEMORY - #define DO_FUNC __builtin_LinAlg_MatrixAccumulateToMemory(mat1, gs_arr, 0, 0, 0, 0); + #define DO_FUNC __builtin_LinAlg_MatrixAccumulateToMemory(mat1, gs_arr, 0, 0, 0); #endif // The builtins below are allowed in all stages, if they raise an error diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/unavailable_pre_sm610.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/unavailable_pre_sm610.hlsl index 9c8672cffa..771d53ec14 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/unavailable_pre_sm610.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/unavailable_pre_sm610.hlsl @@ -61,7 +61,7 @@ void main() { __builtin_LinAlg_MatrixVectorMultiplyAdd(result, mat, true, vec1, 1, vec2); // expected-error@+1{{intrinsic __builtin_LinAlg_MatrixAccumulateToMemory potentially used by ''main'' requires shader model 6.10 or greater}} - __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 0, 0, 0, 0); + __builtin_LinAlg_MatrixAccumulateToMemory(mat, SharedArr, 0, 0, 0); // expected-error@+1{{intrinsic __builtin_LinAlg_MatrixLoadFromMemory potentially used by ''main'' requires shader model 6.10 or greater}} __builtin_LinAlg_MatrixLoadFromMemory(mat, SharedArr, 0, 0, 0); diff --git a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/vector-array-errors.hlsl b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/vector-array-errors.hlsl index ca96fc4d6f..04bfcbee49 100644 --- a/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/vector-array-errors.hlsl +++ b/tools/clang/test/SemaHLSL/hlsl/linalg/builtins/vector-array-errors.hlsl @@ -24,5 +24,5 @@ groupshared S StructArr[64]; // expected-error@+2{{no matching function for call to '__builtin_LinAlg_MatrixAccumulateToMemory'}} // expected-note@+1{{candidate function not viable: no known conversion from 'float2x2 __attribute__((address_space(3)))[64]' to 'float const __attribute__((address_space(3))) (&)[64]' for 2nd argument}} - __builtin_LinAlg_MatrixAccumulateToMemory(Mat, MatArr, 0, 0, 0, 0); + __builtin_LinAlg_MatrixAccumulateToMemory(Mat, MatArr, 0, 0, 0); } diff --git a/tools/clang/unittests/HLSLExec/LinAlgTests.cpp b/tools/clang/unittests/HLSLExec/LinAlgTests.cpp index 56dbd9b12c..6e509eeff0 100644 --- a/tools/clang/unittests/HLSLExec/LinAlgTests.cpp +++ b/tools/clang/unittests/HLSLExec/LinAlgTests.cpp @@ -7722,7 +7722,7 @@ static const char AccumulateMemoryShader[] = R"( __builtin_LinAlg_FillMatrix(Mat, FILL_VALUE); __builtin_LinAlg_MatrixAccumulateToMemory( - Mat, GsData, COMP_TYPE, OFFSET / ELEM_SIZE, STRIDE / ELEM_SIZE, LAYOUT); + Mat, GsData, OFFSET / ELEM_SIZE, STRIDE / ELEM_SIZE, LAYOUT); } GroupMemoryBarrierWithGroupSync(); @@ -8228,7 +8228,7 @@ static const char GroupSharedAccumulateShader[] = R"( (ACCUMULATE_START + Coord.x * N_DIM + Coord.y))); } __builtin_LinAlg_MatrixAccumulateToMemory( - Mat, GsData, COMP_TYPE, MEM_OFFSET, MEM_STRIDE, MEM_LAYOUT); + Mat, GsData, MEM_OFFSET, MEM_STRIDE, MEM_LAYOUT); } GroupMemoryBarrierWithGroupSync(); diff --git a/utils/hct/gen_intrin_main.txt b/utils/hct/gen_intrin_main.txt index 106eba25b4..a44d1145bf 100644 --- a/utils/hct/gen_intrin_main.txt +++ b/utils/hct/gen_intrin_main.txt @@ -407,7 +407,7 @@ void [[min_sm=6.10]] __builtin_LinAlg_MatrixAccumulate(ref LinAlgMatrix matrixC, void [[min_sm=6.10]] __builtin_LinAlg_MatrixVectorMultiply(out LinAlg ret, in LinAlgMatrix mat, in bool isOutputSigned, in LinAlg input, in uint inputInterp); void [[min_sm=6.10]] __builtin_LinAlg_MatrixVectorMultiplyAdd(out LinAlg ret, in LinAlgMatrix mat, in bool isOutputSigned, in LinAlg input, in uint inputInterp, in LinAlg bias); void [[min_sm=6.10]] __builtin_LinAlg_MatrixAccumulateToDescriptor(in LinAlgMatrix matrix, in RWByteAddressBuffer buf, in uint offset, in uint stride, in uint layout, in uint align); -void [[min_sm=6.10]] __builtin_LinAlg_MatrixAccumulateToMemory(in LinAlgMatrix matrix, groupshared LinAlg<>[] memory, in uint targetType, in uint offset, in uint stride, in uint layout); +void [[min_sm=6.10]] __builtin_LinAlg_MatrixAccumulateToMemory(in LinAlgMatrix matrix, groupshared LinAlg<>[] memory, in uint offset, in uint stride, in uint layout); void [[min_sm=6.10]] __builtin_LinAlg_MatrixOuterProduct(out LinAlgMatrix ret, in LinAlg vecA, in LinAlg vecB); void [[min_sm=6.10]] __builtin_LinAlg_Convert(out LinAlg ret, in LinAlg vec, in uint input_interp, in uint output_interp); void [[min_sm=6.10]] __builtin_LinAlg_VectorAccumulateToDescriptor(in RWByteAddressBuffer buf, in uint offset, in uint align, in LinAlg<> vec); diff --git a/utils/hct/hctdb.py b/utils/hct/hctdb.py index 3b6d6df2d3..f5a610b2f9 100644 --- a/utils/hct/hctdb.py +++ b/utils/hct/hctdb.py @@ -6547,15 +6547,16 @@ def populate_ExperimentalOps(self): db_dxil_param( 3, "$x_gs1", "memory", "groupshared array to accumulate into" ), - db_dxil_param(4, "i32", "targetType", "data type of the array"), - db_dxil_param(5, "i32", "offset", "starting offset in the array in elements"), db_dxil_param( - 6, + 4, "i32", "offset", "starting offset in the array in elements" + ), + db_dxil_param( + 5, "i32", "stride", "number of elements between the start of each row or column", ), - db_dxil_param(7, "i32", "layout", "memory layout of matrix elements"), + db_dxil_param(6, "i32", "layout", "memory layout of matrix elements"), ], ) From edd4598c6d63d7a7b37f00e5feb021d628583edb Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Fri, 4 Sep 2026 10:41:08 -0600 Subject: [PATCH 2/5] cleanup --- .../LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll index 4b62c403c9..aede019b87 100644 --- a/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll +++ b/tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-matrixaccumulatetomemory.ll @@ -151,14 +151,13 @@ declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M9N8U2S1.v4f32(i32, %dx.ty declare void @dx.op.linAlgMatrixAccumulateToMemory.mC9M8N9U2S1.v4f32(i32, %dx.types.LinAlgMatrixC9M8N9U2S1, <4 x float> addrspace(3)*, i32, i32, i32) #0 ; Function Attrs: nounwind readnone -declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #2 +declare %dx.types.Handle @dx.op.annotateHandle(i32, %dx.types.Handle, %dx.types.ResourceProperties) #1 ; Function Attrs: nounwind readnone -declare %dx.types.Handle @dx.op.createHandleFromBinding(i32, %dx.types.ResBind, i32, i1) #2 +declare %dx.types.Handle @dx.op.createHandleFromBinding(i32, %dx.types.ResBind, i32, i1) #1 attributes #0 = { nounwind } attributes #1 = { nounwind readnone } -attributes #2 = { nounwind readnone } !dx.targetTypes = !{!0, !1, !2, !3, !4, !5, !6} !llvm.ident = !{!7} From 3bac449149cf18fdc7d9d58dc0a00f036c629297 Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Wed, 9 Sep 2026 14:44:22 -0600 Subject: [PATCH 3/5] Address comments --- tools/clang/lib/Headers/hlsl/dx/linalg.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/clang/lib/Headers/hlsl/dx/linalg.h b/tools/clang/lib/Headers/hlsl/dx/linalg.h index 306dd7aae7..659aac99bb 100644 --- a/tools/clang/lib/Headers/hlsl/dx/linalg.h +++ b/tools/clang/lib/Headers/hlsl/dx/linalg.h @@ -376,8 +376,7 @@ class Matrix { Layout); } - template + template typename hlsl::enable_if< hlsl::is_same::type, uint8_t4_packed>::value && From c7fa62c57084b606d9f3d132fdfe25b182c91e79 Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Wed, 9 Sep 2026 15:04:14 -0600 Subject: [PATCH 4/5] Missed updating code --- tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl | 2 +- .../hlsl/linalg/api/matrix-groupshared-vector-array.hlsl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl index 06b4c758c3..9b0c58354a 100644 --- a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl +++ b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl @@ -174,7 +174,7 @@ void main(uint ID : SV_GroupID) // CHECK-SAME: i32 addrspace(3)* getelementptr inbounds ([256 x i32], // CHECK-SAME: [256 x i32] addrspace(3)* @"\01?PackedArr@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 16, i32 1) // CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) - AccMat1.InterlockedAccumulate(PackedArr, 0, 16, MatrixLayoutEnum::ColMajor); + AccMat1.InterlockedAccumulate(PackedArr, 0, 16, MatrixLayoutEnum::ColMajor); // Matrix::InterlockedAccumulate supports thread-group scope // diff --git a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-groupshared-vector-array.hlsl b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-groupshared-vector-array.hlsl index 807544fa9b..1a988ef263 100644 --- a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-groupshared-vector-array.hlsl +++ b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-groupshared-vector-array.hlsl @@ -76,5 +76,5 @@ void main() { // CHECK-SAME: [64 x <2 x i32>] addrspace(3)* @"\01?PackedVecArr@@3PAV?$vector@$ui8_4pk@$01@@A", i32 0, i32 0), // CHECK-SAME: i32 0, i32 16, i32 1) // CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) - Acc.InterlockedAccumulate(PackedVecArr, 0, 16, MatrixLayoutEnum::ColMajor); + Acc.InterlockedAccumulate(PackedVecArr, 0, 16, MatrixLayoutEnum::ColMajor); } From 888cfb283cd7f101a23fab8a9c26e1e92b0ddc0f Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Wed, 9 Sep 2026 15:12:39 -0600 Subject: [PATCH 5/5] Delete redunant test code --- .../test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl index 9b0c58354a..0041a92498 100644 --- a/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl +++ b/tools/clang/test/CodeGenDXIL/hlsl/linalg/api/matrix-class.hlsl @@ -167,12 +167,6 @@ void main(uint ID : SV_GroupID) // CHECK-SAME: %dx.types.LinAlgMatrixC9M4N4U2S1 %[[ACCUM0]], // CHECK-SAME: i32 addrspace(3)* getelementptr inbounds ([256 x i32], // CHECK-SAME: [256 x i32] addrspace(3)* @"\01?PackedArr@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 16, i32 1) -// CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) - AccMat1.InterlockedAccumulate(PackedArr, 0, 16, MatrixLayoutEnum::ColMajor); -// CHECK: call void @dx.op.linAlgMatrixAccumulateToMemory.mC9M4N4U2S1.i32(i32 -2147483620, -// CHECK-SAME: %dx.types.LinAlgMatrixC9M4N4U2S1 %[[ACCUM0]], -// CHECK-SAME: i32 addrspace(3)* getelementptr inbounds ([256 x i32], -// CHECK-SAME: [256 x i32] addrspace(3)* @"\01?PackedArr@@3PA$ui8_4pk@A", i32 0, i32 0), i32 0, i32 16, i32 1) // CHECK-SAME: ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout) AccMat1.InterlockedAccumulate(PackedArr, 0, 16, MatrixLayoutEnum::ColMajor);