Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 26 additions & 20 deletions include/dxc/DXIL/DxilInstructions.h
Original file line number Diff line number Diff line change
Expand Up @@ -10744,7 +10744,7 @@ struct DxilInst_LinAlgMatVecMul {
// Validation support
bool isAllowed() const { return true; }
bool isArgumentListValid() const {
if (4 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
if (5 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
return false;
return true;
}
Expand All @@ -10753,16 +10753,19 @@ struct DxilInst_LinAlgMatVecMul {
// Operand indexes
enum OperandIdx {
arg_matrix = 1,
arg_inputVector = 2,
arg_interpretation = 3,
arg_isOutputSigned = 2,
arg_inputVector = 3,
arg_interpretation = 4,
};
// Accessors
llvm::Value *get_matrix() const { return Instr->getOperand(1); }
void set_matrix(llvm::Value *val) { Instr->setOperand(1, val); }
llvm::Value *get_inputVector() const { return Instr->getOperand(2); }
void set_inputVector(llvm::Value *val) { Instr->setOperand(2, val); }
llvm::Value *get_interpretation() const { return Instr->getOperand(3); }
void set_interpretation(llvm::Value *val) { Instr->setOperand(3, val); }
llvm::Value *get_isOutputSigned() const { return Instr->getOperand(2); }
void set_isOutputSigned(llvm::Value *val) { Instr->setOperand(2, val); }
llvm::Value *get_inputVector() const { return Instr->getOperand(3); }
void set_inputVector(llvm::Value *val) { Instr->setOperand(3, val); }
llvm::Value *get_interpretation() const { return Instr->getOperand(4); }
void set_interpretation(llvm::Value *val) { Instr->setOperand(4, val); }
};

/// This instruction Multiplies a MxK dimension matrix and a K sized input
Expand All @@ -10778,7 +10781,7 @@ struct DxilInst_LinAlgMatVecMulAdd {
// Validation support
bool isAllowed() const { return true; }
bool isArgumentListValid() const {
if (6 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
if (7 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
return false;
return true;
}
Expand All @@ -10787,22 +10790,25 @@ struct DxilInst_LinAlgMatVecMulAdd {
// Operand indexes
enum OperandIdx {
arg_matrix = 1,
arg_inputVector = 2,
arg_inputInterpretation = 3,
arg_biasVector = 4,
arg_biasInterpretation = 5,
arg_isOutputSigned = 2,
arg_inputVector = 3,
arg_inputInterpretation = 4,
arg_biasVector = 5,
arg_biasInterpretation = 6,
};
// Accessors
llvm::Value *get_matrix() const { return Instr->getOperand(1); }
void set_matrix(llvm::Value *val) { Instr->setOperand(1, val); }
llvm::Value *get_inputVector() const { return Instr->getOperand(2); }
void set_inputVector(llvm::Value *val) { Instr->setOperand(2, val); }
llvm::Value *get_inputInterpretation() const { return Instr->getOperand(3); }
void set_inputInterpretation(llvm::Value *val) { Instr->setOperand(3, val); }
llvm::Value *get_biasVector() const { return Instr->getOperand(4); }
void set_biasVector(llvm::Value *val) { Instr->setOperand(4, val); }
llvm::Value *get_biasInterpretation() const { return Instr->getOperand(5); }
void set_biasInterpretation(llvm::Value *val) { Instr->setOperand(5, val); }
llvm::Value *get_isOutputSigned() const { return Instr->getOperand(2); }
void set_isOutputSigned(llvm::Value *val) { Instr->setOperand(2, val); }
llvm::Value *get_inputVector() const { return Instr->getOperand(3); }
void set_inputVector(llvm::Value *val) { Instr->setOperand(3, val); }
llvm::Value *get_inputInterpretation() const { return Instr->getOperand(4); }
void set_inputInterpretation(llvm::Value *val) { Instr->setOperand(4, val); }
llvm::Value *get_biasVector() const { return Instr->getOperand(5); }
void set_biasVector(llvm::Value *val) { Instr->setOperand(5, val); }
llvm::Value *get_biasInterpretation() const { return Instr->getOperand(6); }
void set_biasInterpretation(llvm::Value *val) { Instr->setOperand(6, val); }
};

/// This instruction accumulates a matrix to a RWByteAddressBuffer
Expand Down
8 changes: 5 additions & 3 deletions lib/DXIL/DxilOperations.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6637,13 +6637,15 @@ Function *OP::GetOpFunc(OpCode opCode, Type *pOverloadType) {
A(EXT(0));
A(pI32);
A(EXT(1));
A(pI1);
A(EXT(2));
A(pI32);
break;
case OpCode::LinAlgMatVecMulAdd:
A(EXT(0));
A(pI32);
A(EXT(1));
A(pI1);
A(EXT(2));
A(pI32);
A(EXT(3));
Expand Down Expand Up @@ -7064,6 +7066,7 @@ llvm::Type *OP::GetOverloadType(OpCode opCode, llvm::Function *F) {
{FT->getReturnType(), FT->getParamType(1)->getPointerElementType()});

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

case OpCode::LinAlgMatrixMultiply:
case OpCode::LinAlgMatrixAccumulate:
case OpCode::LinAlgMatVecMul:
case OpCode::LinAlgMatrixOuterProduct:
if (FT->getNumParams() < 3)
return nullptr;
return llvm::StructType::get(
Ctx, {FT->getReturnType(), FT->getParamType(1), FT->getParamType(2)});

case OpCode::LinAlgMatVecMulAdd:
if (FT->getNumParams() < 5)
if (FT->getNumParams() < 6)
return nullptr;
return llvm::StructType::get(Ctx,
{FT->getReturnType(), FT->getParamType(1),
FT->getParamType(2), FT->getParamType(4)});
FT->getParamType(3), FT->getParamType(5)});

// OPCODE-OLOAD-TYPES:END
default:
Expand Down
23 changes: 13 additions & 10 deletions lib/HLSL/HLOperationLower.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6772,15 +6772,17 @@ Value *TranslateLinAlgMatVecMul(CallInst *CI, IntrinsicOp IOP,
Type *ReturnVecType = ReturnVecPtr->getType()->getPointerElementType();

Value *Matrix = CI->getArgOperand(2);
Value *InputVector = CI->getArgOperand(3);
Value *InputVectorInterp = CI->getArgOperand(4);
Value *IsOutputSigned = CI->getArgOperand(3);
Value *InputVector = CI->getArgOperand(4);
Value *InputVectorInterp = CI->getArgOperand(5);

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

Value *ReturnVec = Builder.CreateCall(
DxilFunc, {OpArg, Matrix, InputVector, InputVectorInterp});
Value *ReturnVec =
Builder.CreateCall(DxilFunc, {OpArg, Matrix, IsOutputSigned, InputVector,
InputVectorInterp});
Builder.CreateStore(ReturnVec, ReturnVecPtr);

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

Value *Matrix = CI->getArgOperand(2);
Value *InputVector = CI->getArgOperand(3);
Value *InputVectorInterp = CI->getArgOperand(4);
Value *BiasVector = CI->getArgOperand(5);
Value *BiasVectorInterp = CI->getArgOperand(6);
Value *IsOutputSigned = CI->getArgOperand(3);
Value *InputVector = CI->getArgOperand(4);
Value *InputVectorInterp = CI->getArgOperand(5);
Value *BiasVector = CI->getArgOperand(6);
Value *BiasVectorInterp = CI->getArgOperand(7);

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

Value *ReturnVec = Builder.CreateCall(
DxilFunc, {OpArg, Matrix, InputVector, InputVectorInterp, BiasVector,
BiasVectorInterp});
DxilFunc, {OpArg, Matrix, IsOutputSigned, InputVector, InputVectorInterp,
BiasVector, BiasVectorInterp});
Builder.CreateStore(ReturnVec, ReturnVecPtr);

return nullptr;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ void main() {
float4 result;

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

// CHECK2: call void @"dx.hl.op..void (i32, <4 x float>*, %dx.types.LinAlgMatrixC4M5N4U1S2, <4 x float>, i32)
// CHECK2-SAME: "(i32 418, <4 x float>* %result, %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, <4 x float> {{.*}}, i32 1)
__builtin_LinAlg_MatrixVectorMultiply(result, mat, vec, 1);
// CHECK2: call void @"dx.hl.op..void (i32, <4 x float>*, %dx.types.LinAlgMatrixC4M5N4U1S2, i1, <4 x float>, i32)
// CHECK2-SAME: "(i32 418, <4 x float>* %result, %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, i1 true, <4 x float> {{.*}}, i32 1)
__builtin_LinAlg_MatrixVectorMultiply(result, mat, true, vec, 1);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ void main() {
float4 result;

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

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

__builtin_LinAlg_MatrixVectorMultiplyAdd(result, mat, vec, 1, result, 0);
__builtin_LinAlg_MatrixVectorMultiplyAdd(result, mat, true, vec, 1, result, 0);
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@ define void @mainAS() {
%v5 = call i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32 -2147483626) ; LinAlgMatrixQueryAccumulatorLayout()

; dx.op.linAlgMatVecMul
%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)
%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)

; dx.op.linAlgMatVecMulAdd
%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)
%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)

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

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

; Function Attrs: nounwind
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32, <4 x i32>, i32) #0
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

; Function Attrs: nounwind
declare <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32, <4 x i32>, i32, i32) #0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ define void @mainCS() {
%v5 = call i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32 -2147483626) ; LinAlgMatrixQueryAccumulatorLayout()

; dx.op.linAlgMatVecMul
%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)
%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)

; dx.op.linAlgMatVecMulAdd
%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)
%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)

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

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

; Function Attrs: nounwind
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32, <4 x i32>, i32) #0
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

; Function Attrs: nounwind
declare <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32, <4 x i32>, i32, i32) #0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ define void @MainDS() {
%v5 = call i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32 -2147483626) ; LinAlgMatrixQueryAccumulatorLayout()

; dx.op.linAlgMatVecMul
%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)
%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)

; dx.op.linAlgMatVecMulAdd
%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)
%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)

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

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

; Function Attrs: nounwind
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32, <4 x i32>, i32) #0
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

; Function Attrs: nounwind
declare <4 x float> @dx.op.linAlgConvert.v4f32.v4i32(i32, <4 x i32>, i32, i32) #0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ define void @MainGS() {
%v5 = call i32 @dx.op.linAlgMatrixQueryAccumulatorLayout(i32 -2147483626) ; LinAlgMatrixQueryAccumulatorLayout()

; dx.op.linAlgMatVecMul
%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)
%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)

; dx.op.linAlgMatVecMulAdd
%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)
%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)

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

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

; Function Attrs: nounwind
declare <4 x i32> @dx.op.linAlgMatVecMulAdd.v4i32.mC4M5N4U0S2.v4i32.v4i32(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, <4 x i32>, i32, <4 x i32>, i32) #0
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

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