Skip to content

Commit fd48581

Browse files
committed
[SM6.10] Update LinAlg VecMul Builtin Params
1 parent 0f17d5a commit fd48581

20 files changed

Lines changed: 125 additions & 110 deletions

File tree

include/dxc/DXIL/DxilInstructions.h

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10744,7 +10744,7 @@ struct DxilInst_LinAlgMatVecMul {
1074410744
// Validation support
1074510745
bool isAllowed() const { return true; }
1074610746
bool isArgumentListValid() const {
10747-
if (4 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
10747+
if (5 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
1074810748
return false;
1074910749
return true;
1075010750
}
@@ -10753,16 +10753,19 @@ struct DxilInst_LinAlgMatVecMul {
1075310753
// Operand indexes
1075410754
enum OperandIdx {
1075510755
arg_matrix = 1,
10756-
arg_inputVector = 2,
10757-
arg_interpretation = 3,
10756+
arg_isOutputSigned = 2,
10757+
arg_inputVector = 3,
10758+
arg_interpretation = 4,
1075810759
};
1075910760
// Accessors
1076010761
llvm::Value *get_matrix() const { return Instr->getOperand(1); }
1076110762
void set_matrix(llvm::Value *val) { Instr->setOperand(1, val); }
10762-
llvm::Value *get_inputVector() const { return Instr->getOperand(2); }
10763-
void set_inputVector(llvm::Value *val) { Instr->setOperand(2, val); }
10764-
llvm::Value *get_interpretation() const { return Instr->getOperand(3); }
10765-
void set_interpretation(llvm::Value *val) { Instr->setOperand(3, val); }
10763+
llvm::Value *get_isOutputSigned() const { return Instr->getOperand(2); }
10764+
void set_isOutputSigned(llvm::Value *val) { Instr->setOperand(2, val); }
10765+
llvm::Value *get_inputVector() const { return Instr->getOperand(3); }
10766+
void set_inputVector(llvm::Value *val) { Instr->setOperand(3, val); }
10767+
llvm::Value *get_interpretation() const { return Instr->getOperand(4); }
10768+
void set_interpretation(llvm::Value *val) { Instr->setOperand(4, val); }
1076610769
};
1076710770

1076810771
/// This instruction Multiplies a MxK dimension matrix and a K sized input
@@ -10778,7 +10781,7 @@ struct DxilInst_LinAlgMatVecMulAdd {
1077810781
// Validation support
1077910782
bool isAllowed() const { return true; }
1078010783
bool isArgumentListValid() const {
10781-
if (6 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
10784+
if (7 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
1078210785
return false;
1078310786
return true;
1078410787
}
@@ -10787,22 +10790,25 @@ struct DxilInst_LinAlgMatVecMulAdd {
1078710790
// Operand indexes
1078810791
enum OperandIdx {
1078910792
arg_matrix = 1,
10790-
arg_inputVector = 2,
10791-
arg_inputInterpretation = 3,
10792-
arg_biasVector = 4,
10793-
arg_biasInterpretation = 5,
10793+
arg_isOutputSigned = 2,
10794+
arg_inputVector = 3,
10795+
arg_inputInterpretation = 4,
10796+
arg_biasVector = 5,
10797+
arg_biasInterpretation = 6,
1079410798
};
1079510799
// Accessors
1079610800
llvm::Value *get_matrix() const { return Instr->getOperand(1); }
1079710801
void set_matrix(llvm::Value *val) { Instr->setOperand(1, val); }
10798-
llvm::Value *get_inputVector() const { return Instr->getOperand(2); }
10799-
void set_inputVector(llvm::Value *val) { Instr->setOperand(2, val); }
10800-
llvm::Value *get_inputInterpretation() const { return Instr->getOperand(3); }
10801-
void set_inputInterpretation(llvm::Value *val) { Instr->setOperand(3, val); }
10802-
llvm::Value *get_biasVector() const { return Instr->getOperand(4); }
10803-
void set_biasVector(llvm::Value *val) { Instr->setOperand(4, val); }
10804-
llvm::Value *get_biasInterpretation() const { return Instr->getOperand(5); }
10805-
void set_biasInterpretation(llvm::Value *val) { Instr->setOperand(5, val); }
10802+
llvm::Value *get_isOutputSigned() const { return Instr->getOperand(2); }
10803+
void set_isOutputSigned(llvm::Value *val) { Instr->setOperand(2, val); }
10804+
llvm::Value *get_inputVector() const { return Instr->getOperand(3); }
10805+
void set_inputVector(llvm::Value *val) { Instr->setOperand(3, val); }
10806+
llvm::Value *get_inputInterpretation() const { return Instr->getOperand(4); }
10807+
void set_inputInterpretation(llvm::Value *val) { Instr->setOperand(4, val); }
10808+
llvm::Value *get_biasVector() const { return Instr->getOperand(5); }
10809+
void set_biasVector(llvm::Value *val) { Instr->setOperand(5, val); }
10810+
llvm::Value *get_biasInterpretation() const { return Instr->getOperand(6); }
10811+
void set_biasInterpretation(llvm::Value *val) { Instr->setOperand(6, val); }
1080610812
};
1080710813

1080810814
/// This instruction accumulates a matrix to a RWByteAddressBuffer

lib/DXIL/DxilOperations.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6637,13 +6637,15 @@ Function *OP::GetOpFunc(OpCode opCode, Type *pOverloadType) {
66376637
A(EXT(0));
66386638
A(pI32);
66396639
A(EXT(1));
6640+
A(pI1);
66406641
A(EXT(2));
66416642
A(pI32);
66426643
break;
66436644
case OpCode::LinAlgMatVecMulAdd:
66446645
A(EXT(0));
66456646
A(pI32);
66466647
A(EXT(1));
6648+
A(pI1);
66476649
A(EXT(2));
66486650
A(pI32);
66496651
A(EXT(3));
@@ -7064,6 +7066,7 @@ llvm::Type *OP::GetOverloadType(OpCode opCode, llvm::Function *F) {
70647066
{FT->getReturnType(), FT->getParamType(1)->getPointerElementType()});
70657067

70667068
case OpCode::LinAlgMatrixSetElement:
7069+
case OpCode::LinAlgMatVecMul:
70677070
if (FT->getNumParams() < 4)
70687071
return nullptr;
70697072
return llvm::StructType::get(
@@ -7079,19 +7082,18 @@ llvm::Type *OP::GetOverloadType(OpCode opCode, llvm::Function *F) {
70797082

70807083
case OpCode::LinAlgMatrixMultiply:
70817084
case OpCode::LinAlgMatrixAccumulate:
7082-
case OpCode::LinAlgMatVecMul:
70837085
case OpCode::LinAlgMatrixOuterProduct:
70847086
if (FT->getNumParams() < 3)
70857087
return nullptr;
70867088
return llvm::StructType::get(
70877089
Ctx, {FT->getReturnType(), FT->getParamType(1), FT->getParamType(2)});
70887090

70897091
case OpCode::LinAlgMatVecMulAdd:
7090-
if (FT->getNumParams() < 5)
7092+
if (FT->getNumParams() < 6)
70917093
return nullptr;
70927094
return llvm::StructType::get(Ctx,
70937095
{FT->getReturnType(), FT->getParamType(1),
7094-
FT->getParamType(2), FT->getParamType(4)});
7096+
FT->getParamType(3), FT->getParamType(5)});
70957097

70967098
// OPCODE-OLOAD-TYPES:END
70977099
default:

lib/HLSL/HLOperationLower.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6772,15 +6772,17 @@ Value *TranslateLinAlgMatVecMul(CallInst *CI, IntrinsicOp IOP,
67726772
Type *ReturnVecType = ReturnVecPtr->getType()->getPointerElementType();
67736773

67746774
Value *Matrix = CI->getArgOperand(2);
6775-
Value *InputVector = CI->getArgOperand(3);
6776-
Value *InputVectorInterp = CI->getArgOperand(4);
6775+
Value *IsOutputSigned = CI->getArgOperand(3);
6776+
Value *InputVector = CI->getArgOperand(4);
6777+
Value *InputVectorInterp = CI->getArgOperand(5);
67776778

67786779
Constant *OpArg = HlslOp->GetU32Const((unsigned)OpCode);
67796780
Function *DxilFunc = HlslOp->GetOpFunc(
67806781
OpCode, {ReturnVecType, Matrix->getType(), InputVector->getType()});
67816782

6782-
Value *ReturnVec = Builder.CreateCall(
6783-
DxilFunc, {OpArg, Matrix, InputVector, InputVectorInterp});
6783+
Value *ReturnVec =
6784+
Builder.CreateCall(DxilFunc, {OpArg, Matrix, IsOutputSigned, InputVector,
6785+
InputVectorInterp});
67846786
Builder.CreateStore(ReturnVec, ReturnVecPtr);
67856787

67866788
return nullptr;
@@ -6799,19 +6801,20 @@ Value *TranslateLinAlgMatVecMulAdd(CallInst *CI, IntrinsicOp IOP,
67996801
Type *ReturnVecType = ReturnVecPtr->getType()->getPointerElementType();
68006802

68016803
Value *Matrix = CI->getArgOperand(2);
6802-
Value *InputVector = CI->getArgOperand(3);
6803-
Value *InputVectorInterp = CI->getArgOperand(4);
6804-
Value *BiasVector = CI->getArgOperand(5);
6805-
Value *BiasVectorInterp = CI->getArgOperand(6);
6804+
Value *IsOutputSigned = CI->getArgOperand(3);
6805+
Value *InputVector = CI->getArgOperand(4);
6806+
Value *InputVectorInterp = CI->getArgOperand(5);
6807+
Value *BiasVector = CI->getArgOperand(6);
6808+
Value *BiasVectorInterp = CI->getArgOperand(7);
68066809

68076810
Constant *OpArg = HlslOp->GetU32Const((unsigned)OpCode);
68086811
Function *DxilFunc = HlslOp->GetOpFunc(
68096812
OpCode, {ReturnVecType, Matrix->getType(), InputVector->getType(),
68106813
BiasVector->getType()});
68116814

68126815
Value *ReturnVec = Builder.CreateCall(
6813-
DxilFunc, {OpArg, Matrix, InputVector, InputVectorInterp, BiasVector,
6814-
BiasVectorInterp});
6816+
DxilFunc, {OpArg, Matrix, IsOutputSigned, InputVector, InputVectorInterp,
6817+
BiasVector, BiasVectorInterp});
68156818
Builder.CreateStore(ReturnVec, ReturnVecPtr);
68166819

68176820
return nullptr;

tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixvectormultiply/nominal.hlsl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ void main() {
1111
float4 result;
1212

1313
// CHECK: call <4 x float> @dx.op.linAlgMatVecMul.v4f32.mC4M5N4U1S2.v4f32(i32 -2147483623,
14-
// CHECK-SAME: %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, <4 x float> <float 1.000000e+00, float 2.000000e+00,
15-
// CHECK-SAME: float 3.000000e+00, float 4.000000e+00>, i32 1) ; LinAlgMatVecMul(matrix,inputVector,interpretation)
14+
// CHECK-SAME: %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, i1 true, <4 x float> <float 1.000000e+00, float 2.000000e+00,
15+
// CHECK-SAME: float 3.000000e+00, float 4.000000e+00>, i32 1) ; LinAlgMatVecMul(matrix,isOutputSigned,inputVector,interpretation)
1616

17-
// CHECK2: call void @"dx.hl.op..void (i32, <4 x float>*, %dx.types.LinAlgMatrixC4M5N4U1S2, <4 x float>, i32)
18-
// CHECK2-SAME: "(i32 418, <4 x float>* %result, %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, <4 x float> {{.*}}, i32 1)
19-
__builtin_LinAlg_MatrixVectorMultiply(result, mat, vec, 1);
17+
// CHECK2: call void @"dx.hl.op..void (i32, <4 x float>*, %dx.types.LinAlgMatrixC4M5N4U1S2, i1, <4 x float>, i32)
18+
// CHECK2-SAME: "(i32 418, <4 x float>* %result, %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, i1 true, <4 x float> {{.*}}, i32 1)
19+
__builtin_LinAlg_MatrixVectorMultiply(result, mat, true, vec, 1);
2020
}

tools/clang/test/CodeGenDXIL/hlsl/linalg/builtins/matrixvectormultiplyadd/nominal.hlsl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ void main() {
1010
float4 result;
1111

1212
// CHECK: call <4 x float> @dx.op.linAlgMatVecMulAdd.v4f32.mC5M3N4U0S0.v4f32.v4f32(i32 -2147483622,
13-
// CHECK-SAME: %dx.types.LinAlgMatrixC5M3N4U0S0 {{.*}}, <4 x float> <float 1.000000e+00,
13+
// CHECK-SAME: %dx.types.LinAlgMatrixC5M3N4U0S0 {{.*}}, i1 true, <4 x float> <float 1.000000e+00,
1414
// CHECK-SAME: float 2.000000e+00, float 3.000000e+00, float 4.000000e+00>, i32 1, <4 x float> {{.*}}, i32 0)
15-
// CHECK-SAME: ; LinAlgMatVecMulAdd(matrix,inputVector,inputInterpretation,biasVector,biasInterpretation)
15+
// CHECK-SAME: ; LinAlgMatVecMulAdd(matrix,isOutputSigned,inputVector,inputInterpretation,biasVector,biasInterpretation)
1616

17-
// CHECK2: call void @"dx.hl.op..void (i32, <4 x float>*, %dx.types.LinAlgMatrixC5M3N4U0S0, <4 x float>,
17+
// CHECK2: call void @"dx.hl.op..void (i32, <4 x float>*, %dx.types.LinAlgMatrixC5M3N4U0S0, i1, <4 x float>,
1818
// CHECK2-SAME: i32, <4 x float>, i32)"(i32 419, <4 x float>* %result, %dx.types.LinAlgMatrixC5M3N4U0S0 %{{[0-9]+}},
19-
// CHECK2-SAME: <4 x float> %{{[0-9]+}}, i32 1, <4 x float> %{{[0-9]+}}, i32 0)
19+
// CHECK2-SAME: i1 true, <4 x float> %{{[0-9]+}}, i32 1, <4 x float> %{{[0-9]+}}, i32 0)
2020

21-
__builtin_LinAlg_MatrixVectorMultiplyAdd(result, mat, vec, 1, result, 0);
21+
__builtin_LinAlg_MatrixVectorMultiplyAdd(result, mat, true, vec, 1, result, 0);
2222
}

tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-as.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ define void @mainAS() {
4545
%v5 = call i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32 -2147483626) ; LinAlgMatrixQueryAccumulatorLayout()
4646

4747
; dx.op.linAlgMatVecMul
48-
%v6 = call <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32 -2147483623, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 1) ; LinAlgMatVecMul(matrix,inputVector,interpretation)
48+
%v6 = call <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32 -2147483623, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, i1 true, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 1) ; LinAlgMatVecMul(matrix,isOutputSigned,inputVector,interpretation)
4949

5050
; dx.op.linAlgMatVecMulAdd
51-
%v7 = call <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483622, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 2, <4 x i32> <i32 7, i32 7, i32 7, i32 7>, i32 3) ; LinAlgMatVecMulAdd(matrix,inputVector,inputInterpretation,biasVector,biasInterpretation)
51+
%v7 = call <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483622, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, i1 true, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 2, <4 x i32> <i32 7, i32 7, i32 7, i32 7>, i32 3) ; LinAlgMatVecMulAdd(matrix,isOutputSigned,inputVector,inputInterpretation,biasVector,biasInterpretation)
5252

5353
; dx.op.linAlgConvert
5454
%v16 = call <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32 -2147483618, <4 x i32> zeroinitializer, i32 1, i32 2) ; LinAlgConvert(inputVector,inputInterpretation,outputInterpretation)
@@ -121,10 +121,10 @@ declare %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixOuterProduct.mC4M5N4
121121
declare i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32) #0
122122

123123
; Function Attrs: nounwind
124-
declare <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32) #0
124+
declare <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, i1, <4 x i32>, i32) #0
125125

126126
; Function Attrs: nounwind
127-
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32, <4 x i32>, i32) #0
127+
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, i1, <4 x i32>, i32, <4 x i32>, i32) #0
128128

129129
; Function Attrs: nounwind
130130
declare <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32, <4 x i32>, i32, i32) #0

tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-cs.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ define void @mainCS() {
4444
%v5 = call i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32 -2147483626) ; LinAlgMatrixQueryAccumulatorLayout()
4545

4646
; dx.op.linAlgMatVecMul
47-
%v6 = call <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32 -2147483623, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 1) ; LinAlgMatVecMul(matrix,inputVector,interpretation)
47+
%v6 = call <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32 -2147483623, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, i1 true, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 1) ; LinAlgMatVecMul(matrix,isOutputSigned,inputVector,interpretation)
4848

4949
; dx.op.linAlgMatVecMulAdd
50-
%v7 = call <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483622, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 2, <4 x i32> <i32 7, i32 7, i32 7, i32 7>, i32 3) ; LinAlgMatVecMulAdd(matrix,inputVector,inputInterpretation,biasVector,biasInterpretation)
50+
%v7 = call <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483622, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, i1 true, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 2, <4 x i32> <i32 7, i32 7, i32 7, i32 7>, i32 3) ; LinAlgMatVecMulAdd(matrix,isOutputSigned,inputVector,inputInterpretation,biasVector,biasInterpretation)
5151

5252
; dx.op.linAlgConvert
5353
%v16 = call <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32 -2147483618, <4 x i32> zeroinitializer, i32 1, i32 2) ; LinAlgConvert(inputVector,inputInterpretation,outputInterpretation)
@@ -117,10 +117,10 @@ declare %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixOuterProduct.mC4M5N4
117117
declare i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32) #0
118118

119119
; Function Attrs: nounwind
120-
declare <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32) #0
120+
declare <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, i1, <4 x i32>, i32) #0
121121

122122
; Function Attrs: nounwind
123-
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32, <4 x i32>, i32) #0
123+
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, i1, <4 x i32>, i32, <4 x i32>, i32) #0
124124

125125
; Function Attrs: nounwind
126126
declare <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32, <4 x i32>, i32, i32) #0

tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-ds.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ define void @MainDS() {
6060
%v5 = call i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32 -2147483626) ; LinAlgMatrixQueryAccumulatorLayout()
6161

6262
; dx.op.linAlgMatVecMul
63-
%v6 = call <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32 -2147483623, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 1) ; LinAlgMatVecMul(matrix,inputVector,interpretation)
63+
%v6 = call <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32 -2147483623, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, i1 true, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 1) ; LinAlgMatVecMul(matrix,isOutputSigned,inputVector,interpretation)
6464

6565
; dx.op.linAlgMatVecMulAdd
66-
%v7 = call <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483622, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 2, <4 x i32> <i32 7, i32 7, i32 7, i32 7>, i32 3) ; LinAlgMatVecMulAdd(matrix,inputVector,inputInterpretation,biasVector,biasInterpretation)
66+
%v7 = call <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483622, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, i1 true, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 2, <4 x i32> <i32 7, i32 7, i32 7, i32 7>, i32 3) ; LinAlgMatVecMulAdd(matrix,isOutputSigned,inputVector,inputInterpretation,biasVector,biasInterpretation)
6767

6868
; dx.op.linAlgConvert
6969
%v16 = call <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32 -2147483618, <4 x i32> zeroinitializer, i32 1, i32 2) ; LinAlgConvert(inputVector,inputInterpretation,outputInterpretation)
@@ -141,10 +141,10 @@ declare %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixOuterProduct.mC4M5N4
141141
declare i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32) #0
142142

143143
; Function Attrs: nounwind
144-
declare <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32) #0
144+
declare <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, i1, <4 x i32>, i32) #0
145145

146146
; Function Attrs: nounwind
147-
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32, <4 x i32>, i32) #0
147+
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, i1, <4 x i32>, i32, <4 x i32>, i32) #0
148148

149149
; Function Attrs: nounwind
150150
declare <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32, <4 x i32>, i32, i32) #0

tools/clang/test/LitDXILValidation/LinAlgMatrix/linalgmatrix-gs.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ define void @MainGS() {
6060
%v5 = call i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32 -2147483626) ; LinAlgMatrixQueryAccumulatorLayout()
6161

6262
; dx.op.linAlgMatVecMul
63-
%v6 = call <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32 -2147483623, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 1) ; LinAlgMatVecMul(matrix,inputVector,interpretation)
63+
%v6 = call <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32 -2147483623, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, i1 true, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 1) ; LinAlgMatVecMul(matrix,isOutputSigned,inputVector,interpretation)
6464

6565
; dx.op.linAlgMatVecMulAdd
66-
%v7 = call <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483622, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 2, <4 x i32> <i32 7, i32 7, i32 7, i32 7>, i32 3) ; LinAlgMatVecMulAdd(matrix,inputVector,inputInterpretation,biasVector,biasInterpretation)
66+
%v7 = call <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483622, %dx.types.LinAlgMatrixC4M5N4U0S2 %v4, i1 true, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, i32 2, <4 x i32> <i32 7, i32 7, i32 7, i32 7>, i32 3) ; LinAlgMatVecMulAdd(matrix,isOutputSigned,inputVector,inputInterpretation,biasVector,biasInterpretation)
6767

6868
; dx.op.linAlgConvert
6969
%v16 = call <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32 -2147483618, <4 x i32> zeroinitializer, i32 1, i32 2) ; LinAlgConvert(inputVector,inputInterpretation,outputInterpretation)
@@ -140,10 +140,10 @@ declare %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixOuterProduct.mC4M5N4
140140
declare i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32) #0
141141

142142
; Function Attrs: nounwind
143-
declare <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32) #0
143+
declare <4 x i32> @dx.op.linAlgMatVecMul.v4i32.mC4M5N4U0S2.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, i1, <4 x i32>, i32) #0
144144

145145
; Function Attrs: nounwind
146-
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32, <4 x i32>, i32) #0
146+
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, i1, <4 x i32>, i32, <4 x i32>, i32) #0
147147

148148
; Function Attrs: nounwind
149149
declare <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32, <4 x i32>, i32, i32) #0

0 commit comments

Comments
 (0)