Skip to content

Commit 6098626

Browse files
authored
[SM6.10] Add align argument to LinAlg Matrix ops Load/Store/AccumulateToDescriptor (#8286)
Add `align` argument to the LinAlg Matrix built-ins and ops for `LoadFromDescriptor`, `*StoreToDescriptor` and `*AccumulateToDescriptor`. Fixes #8284
1 parent 539374d commit 6098626

21 files changed

Lines changed: 133 additions & 113 deletions

File tree

include/dxc/DXIL/DxilInstructions.h

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10606,7 +10606,7 @@ struct DxilInst_LinAlgMatrixLoadFromDescriptor {
1060610606
// Validation support
1060710607
bool isAllowed() const { return true; }
1060810608
bool isArgumentListValid() const {
10609-
if (5 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
10609+
if (6 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
1061010610
return false;
1061110611
return true;
1061210612
}
@@ -10618,6 +10618,7 @@ struct DxilInst_LinAlgMatrixLoadFromDescriptor {
1061810618
arg_offset = 2,
1061910619
arg_stride = 3,
1062010620
arg_layout = 4,
10621+
arg_align = 5,
1062110622
};
1062210623
// Accessors
1062310624
llvm::Value *get_handle() const { return Instr->getOperand(1); }
@@ -10628,6 +10629,8 @@ struct DxilInst_LinAlgMatrixLoadFromDescriptor {
1062810629
void set_stride(llvm::Value *val) { Instr->setOperand(3, val); }
1062910630
llvm::Value *get_layout() const { return Instr->getOperand(4); }
1063010631
void set_layout(llvm::Value *val) { Instr->setOperand(4, val); }
10632+
llvm::Value *get_align() const { return Instr->getOperand(5); }
10633+
void set_align(llvm::Value *val) { Instr->setOperand(5, val); }
1063110634
};
1063210635

1063310636
/// This instruction fills a matrix with data from a groupshared array
@@ -10805,7 +10808,7 @@ struct DxilInst_LinAlgMatrixStoreToDescriptor {
1080510808
// Validation support
1080610809
bool isAllowed() const { return true; }
1080710810
bool isArgumentListValid() const {
10808-
if (6 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
10811+
if (7 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
1080910812
return false;
1081010813
return true;
1081110814
}
@@ -10818,6 +10821,7 @@ struct DxilInst_LinAlgMatrixStoreToDescriptor {
1081810821
arg_offset = 3,
1081910822
arg_stride = 4,
1082010823
arg_layout = 5,
10824+
arg_align = 6,
1082110825
};
1082210826
// Accessors
1082310827
llvm::Value *get_matrix() const { return Instr->getOperand(1); }
@@ -10830,6 +10834,8 @@ struct DxilInst_LinAlgMatrixStoreToDescriptor {
1083010834
void set_stride(llvm::Value *val) { Instr->setOperand(4, val); }
1083110835
llvm::Value *get_layout() const { return Instr->getOperand(5); }
1083210836
void set_layout(llvm::Value *val) { Instr->setOperand(5, val); }
10837+
llvm::Value *get_align() const { return Instr->getOperand(6); }
10838+
void set_align(llvm::Value *val) { Instr->setOperand(6, val); }
1083310839
};
1083410840

1083510841
/// This instruction stores a matrix to groupshared memory
@@ -11042,7 +11048,7 @@ struct DxilInst_LinAlgMatrixAccumulateToDescriptor {
1104211048
// Validation support
1104311049
bool isAllowed() const { return true; }
1104411050
bool isArgumentListValid() const {
11045-
if (6 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
11051+
if (7 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
1104611052
return false;
1104711053
return true;
1104811054
}
@@ -11055,6 +11061,7 @@ struct DxilInst_LinAlgMatrixAccumulateToDescriptor {
1105511061
arg_offset = 3,
1105611062
arg_stride = 4,
1105711063
arg_layout = 5,
11064+
arg_align = 6,
1105811065
};
1105911066
// Accessors
1106011067
llvm::Value *get_matrix() const { return Instr->getOperand(1); }
@@ -11067,6 +11074,8 @@ struct DxilInst_LinAlgMatrixAccumulateToDescriptor {
1106711074
void set_stride(llvm::Value *val) { Instr->setOperand(4, val); }
1106811075
llvm::Value *get_layout() const { return Instr->getOperand(5); }
1106911076
void set_layout(llvm::Value *val) { Instr->setOperand(5, val); }
11077+
llvm::Value *get_align() const { return Instr->getOperand(6); }
11078+
void set_align(llvm::Value *val) { Instr->setOperand(6, val); }
1107011079
};
1107111080

1107211081
/// This instruction accumulates a matrix to groupshared memory

lib/DXIL/DxilOperations.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6603,6 +6603,7 @@ Function *OP::GetOpFunc(OpCode opCode, Type *pOverloadType) {
66036603
A(pI32);
66046604
A(pI32);
66056605
A(pI32);
6606+
A(pI32);
66066607
break;
66076608
case OpCode::LinAlgMatrixLoadFromMemory:
66086609
A(EXT(0));
@@ -6644,6 +6645,7 @@ Function *OP::GetOpFunc(OpCode opCode, Type *pOverloadType) {
66446645
A(pI32);
66456646
A(pI32);
66466647
A(pI32);
6648+
A(pI32);
66476649
break;
66486650
case OpCode::LinAlgMatrixStoreToMemory:
66496651
A(pV);
@@ -6694,6 +6696,7 @@ Function *OP::GetOpFunc(OpCode opCode, Type *pOverloadType) {
66946696
A(pI32);
66956697
A(pI32);
66966698
A(pI32);
6699+
A(pI32);
66976700
break;
66986701
case OpCode::LinAlgMatrixAccumulateToMemory:
66996702
A(pV);

lib/HLSL/HLOperationLower.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6943,12 +6943,13 @@ Value *TranslateLinAlgMatrixAccumStoreToDescriptor(
69436943
Value *Offset = CI->getArgOperand(3);
69446944
Value *Stride = CI->getArgOperand(4);
69456945
Value *Layout = CI->getArgOperand(5);
6946+
Value *Align = CI->getArgOperand(6);
69466947

69476948
Constant *OpArg = HlslOp->GetU32Const((unsigned)OpCode);
69486949
Function *DxilFunc = HlslOp->GetOpFunc(OpCode, Matrix->getType());
69496950

6950-
return Builder.CreateCall(DxilFunc,
6951-
{OpArg, Matrix, ResHandle, Offset, Stride, Layout});
6951+
return Builder.CreateCall(
6952+
DxilFunc, {OpArg, Matrix, ResHandle, Offset, Stride, Layout, Align});
69526953
}
69536954

69546955
Value *TranslateLinAlgMatVecMul(CallInst *CI, IntrinsicOp IOP,
@@ -7024,12 +7025,13 @@ Value *TranslateLinAlgMatrixLoadFromDescriptor(
70247025
Value *Offset = CI->getArgOperand(3);
70257026
Value *Stride = CI->getArgOperand(4);
70267027
Value *Layout = CI->getArgOperand(5);
7028+
Value *Align = CI->getArgOperand(6);
70277029

70287030
Constant *OpArg = HlslOp->GetU32Const((unsigned)OpCode);
70297031
Function *DxilFunc = HlslOp->GetOpFunc(OpCode, MatrixType);
70307032

7031-
Value *Matrix =
7032-
Builder.CreateCall(DxilFunc, {OpArg, ResHandle, Offset, Stride, Layout});
7033+
Value *Matrix = Builder.CreateCall(
7034+
DxilFunc, {OpArg, ResHandle, Offset, Stride, Layout, Align});
70337035
Builder.CreateStore(Matrix, MatrixPtr);
70347036

70357037
return nullptr;

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ void main() {
99
// CHECK-LABEL: define void @main()
1010

1111
// CHECK: call void @dx.op.linAlgMatrixAccumulateToDescriptor.mC4M5N4U1S2(i32 -2147483621,
12-
// CHECK-SAME: %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, %dx.types.Handle %{{.*}}, i32 5, i32 5, i32 5)
13-
// CHECK-SAME: ; LinAlgMatrixAccumulateToDescriptor(matrix,handle,offset,stride,layout)
12+
// CHECK-SAME: %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, %dx.types.Handle %{{.*}}, i32 5, i32 5, i32 5, i32 4)
13+
// CHECK-SAME: ; LinAlgMatrixAccumulateToDescriptor(matrix,handle,offset,stride,layout,align)
1414

15-
// CHECK2: call void @"dx.hl.op..void (i32, %dx.types.LinAlgMatrixC4M5N4U1S2, %dx.types.Handle, i32, i32, i32)"
16-
// CHECK2-SAME: (i32 419, %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, %dx.types.Handle {{.*}}, i32 5, i32 5, i32 5)
15+
// CHECK2: call void @"dx.hl.op..void (i32, %dx.types.LinAlgMatrixC4M5N4U1S2, %dx.types.Handle, i32, i32, i32, i32)"
16+
// CHECK2-SAME: (i32 419, %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, %dx.types.Handle {{.*}}, i32 5, i32 5, i32 5, i32 4)
1717
__builtin_LinAlgMatrix [[__LinAlgMatrix_Attributes(4, 5, 4, 1, 2)]] mat;
18-
__builtin_LinAlg_MatrixAccumulateToDescriptor(mat, outbuf, 5, 5, 5);
18+
__builtin_LinAlg_MatrixAccumulateToDescriptor(mat, outbuf, 5, 5, 5, 4);
1919
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ void main() {
99
// CHECK-LABEL: define void @main()
1010

1111
// CHECK: %{{.*}} = call %dx.types.LinAlgMatrixC1M1N1U0S0 @dx.op.linAlgMatrixLoadFromDescriptor.mC1M1N1U0S0
12-
// CHECK-SAME: (i32 -2147483634, %dx.types.Handle %{{.*}}, i32 0, i32 0, i32 0)
13-
// CHECK-SAME: ; LinAlgMatrixLoadFromDescriptor(handle,offset,stride,layout)
12+
// CHECK-SAME: (i32 -2147483634, %dx.types.Handle %{{.*}}, i32 0, i32 0, i32 0, i32 4)
13+
// CHECK-SAME: ; LinAlgMatrixLoadFromDescriptor(handle,offset,stride,layout,align)
1414

15-
// CHECK2: call void @"dx.hl.op..void (i32, %dx.types.LinAlgMatrixC1M1N1U0S0*, %dx.types.Handle, i32, i32, i32)
16-
// CHECK2-SAME: "(i32 410, %dx.types.LinAlgMatrixC1M1N1U0S0* %mat, %dx.types.Handle {{.*}}, i32 0, i32 0, i32 0)
15+
// CHECK2: call void @"dx.hl.op..void (i32, %dx.types.LinAlgMatrixC1M1N1U0S0*, %dx.types.Handle, i32, i32, i32, i32)
16+
// CHECK2-SAME: "(i32 410, %dx.types.LinAlgMatrixC1M1N1U0S0* %mat, %dx.types.Handle {{.*}}, i32 0, i32 0, i32 0, i32 4)
1717
__builtin_LinAlgMatrix [[__LinAlgMatrix_Attributes(1, 1, 1, 0, 0)]] mat;
18-
__builtin_LinAlg_MatrixLoadFromDescriptor(mat, inbuf, 0, 0, 0);
18+
__builtin_LinAlg_MatrixLoadFromDescriptor(mat, inbuf, 0, 0, 0, 4);
1919
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ void main() {
99
// CHECK-LABEL: define void @main()
1010

1111
// CHECK: call void @dx.op.linAlgMatrixStoreToDescriptor.mC4M5N4U1S2(i32 -2147483628,
12-
// CHECK-SAME: %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, %dx.types.Handle %{{.*}}, i32 1, i32 1, i32 0)
13-
// CHECK-SAME: ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout)
12+
// CHECK-SAME: %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, %dx.types.Handle %{{.*}}, i32 1, i32 1, i32 0, i32 4)
13+
// CHECK-SAME: ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align)
1414

15-
// CHECK2: call void @"dx.hl.op..void (i32, %dx.types.LinAlgMatrixC4M5N4U1S2, %dx.types.Handle, i32, i32, i32)
16-
// CHECK2-SAME: "(i32 413, %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, %dx.types.Handle {{.*}}, i32 1, i32 1, i32 0)
15+
// CHECK2: call void @"dx.hl.op..void (i32, %dx.types.LinAlgMatrixC4M5N4U1S2, %dx.types.Handle, i32, i32, i32, i32)
16+
// CHECK2-SAME: "(i32 413, %dx.types.LinAlgMatrixC4M5N4U1S2 {{.*}}, %dx.types.Handle {{.*}}, i32 1, i32 1, i32 0, i32 4)
1717
__builtin_LinAlgMatrix [[__LinAlgMatrix_Attributes(4, 5, 4, 1, 2)]] mat1;
18-
__builtin_LinAlg_MatrixStoreToDescriptor(mat1, outbuf, 1, 1, 0);
18+
__builtin_LinAlg_MatrixStoreToDescriptor(mat1, outbuf, 1, 1, 0, 4);
1919
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ define void @mainAS() {
3030
%v1 = call %dx.types.LinAlgMatrixC4M5N4U2S2 @dx.op.linAlgMatrixAccumulate.mC4M5N4U2S2.mC4M5N4U0S2.mC4M4N5U1S2(i32 -2147483624, %dx.types.LinAlgMatrixC4M5N4U0S2 undef, %dx.types.LinAlgMatrixC4M4N5U1S2 undef) ; LinAlgMatrixAccumulate(matrixLHS,matrixRHS)
3131

3232
; dx.op.linAlgMatrixAccumulateToDescriptor
33-
call void @dx.op.linAlgMatrixAccumulateToDescriptor.mC4M5N4U0S2(i32 -2147483621, %dx.types.LinAlgMatrixC4M5N4U0S2 undef, %dx.types.Handle %handle, i32 1, i32 2, i32 3) ; LinAlgMatrixAccumulateToDescriptor(matrix,handle,offset,stride,layout)
33+
call void @dx.op.linAlgMatrixAccumulateToDescriptor.mC4M5N4U0S2(i32 -2147483621, %dx.types.LinAlgMatrixC4M5N4U0S2 undef, %dx.types.Handle %handle, i32 1, i32 2, i32 3, i32 4) ; LinAlgMatrixAccumulateToDescriptor(matrix,handle,offset,stride,layout,align)
3434

3535
; dx.op.linAlgMatrixLength
3636
%v2 = call i32 @dx.op.linAlgMatrixLength.mC4M5N4U0S2(i32 -2147483632, %dx.types.LinAlgMatrixC4M5N4U0S2 undef) ; LinAlgMatrixLength(matrix)
3737

3838
; dx.op.linAlgMatrixLoadFromDescriptor
39-
%v3 = call %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixLoadFromDescriptor.mC4M5N4U0S2(i32 -2147483634, %dx.types.Handle %handle, i32 5, i32 5, i32 5) ; LinAlgMatrixLoadFromDescriptor(handle,offset,stride,layout)
39+
%v3 = call %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixLoadFromDescriptor.mC4M5N4U0S2(i32 -2147483634, %dx.types.Handle %handle, i32 5, i32 5, i32 5, i32 4) ; LinAlgMatrixLoadFromDescriptor(handle,offset,stride,layout,align)
4040

4141
; dx.op.linAlgMatrixOuterProduct
4242
%v4 = call %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixOuterProduct.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483619, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, <4 x i32> <i32 3, i32 3, i32 3, i32 3>) ; LinAlgMatrixOuterProduct(vectorA,vectorB)
@@ -76,7 +76,7 @@ define void @mainAS() {
7676
%v14 = call %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixSetElement.mC4M5N4U0S2.mC4M5N4U0S2.i32(i32 -2147483629, %dx.types.LinAlgMatrixC4M5N4U0S2 %v9, i32 1, i32 1) ; LinAlgMatrixSetElement(matrix,threadLocalIndex,value)
7777

7878
; dx.op.linAlgMatrixStoreToDescriptor
79-
call void @dx.op.linAlgMatrixStoreToDescriptor.mC4M5N4U0S2(i32 -2147483628, %dx.types.LinAlgMatrixC4M5N4U0S2 %v14, %dx.types.Handle %handle, i32 1, i32 2, i32 3) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout)
79+
call void @dx.op.linAlgMatrixStoreToDescriptor.mC4M5N4U0S2(i32 -2147483628, %dx.types.LinAlgMatrixC4M5N4U0S2 %v14, %dx.types.Handle %handle, i32 1, i32 2, i32 3, i32 4) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align)
8080

8181
; dx.op.linAlgMatrixAccumulateToMemory
8282
call void @dx.op.linAlgMatrixAccumulateToMemory.mC4M5N4U0S2.f32(i32 -2147483620, %dx.types.LinAlgMatrixC4M5N4U0S2 %v14, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 0, i32 0, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout)
@@ -100,16 +100,16 @@ declare %dx.types.LinAlgMatrixC4M5N4U2S2 @dx.op.linAlgMatrixMultiply.mC4M5N4U2S2
100100
declare %dx.types.LinAlgMatrixC4M5N4U2S2 @dx.op.linAlgMatrixAccumulate.mC4M5N4U2S2.mC4M5N4U0S2.mC4M4N5U1S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.LinAlgMatrixC4M4N5U1S2) #0
101101

102102
; Function Attrs: nounwind
103-
declare void @dx.op.linAlgMatrixStoreToDescriptor.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.Handle, i32, i32, i32) #0
103+
declare void @dx.op.linAlgMatrixStoreToDescriptor.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.Handle, i32, i32, i32, i32) #0
104104

105105
; Function Attrs: nounwind
106-
declare void @dx.op.linAlgMatrixAccumulateToDescriptor.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.Handle, i32, i32, i32) #0
106+
declare void @dx.op.linAlgMatrixAccumulateToDescriptor.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.Handle, i32, i32, i32, i32) #0
107107

108108
; Function Attrs: nounwind
109109
declare i32 @dx.op.linAlgMatrixLength.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2) #0
110110

111111
; Function Attrs: nounwind
112-
declare %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixLoadFromDescriptor.mC4M5N4U0S2(i32, %dx.types.Handle, i32, i32, i32) #0
112+
declare %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixLoadFromDescriptor.mC4M5N4U0S2(i32, %dx.types.Handle, i32, i32, i32, i32) #0
113113

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

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ define void @mainCS() {
2929
%v1 = call %dx.types.LinAlgMatrixC4M5N4U2S2 @dx.op.linAlgMatrixAccumulate.mC4M5N4U2S2.mC4M5N4U0S2.mC4M4N5U1S2(i32 -2147483624, %dx.types.LinAlgMatrixC4M5N4U0S2 undef, %dx.types.LinAlgMatrixC4M4N5U1S2 undef) ; LinAlgMatrixAccumulate(matrixLHS,matrixRHS)
3030

3131
; dx.op.linAlgMatrixAccumulateToDescriptor
32-
call void @dx.op.linAlgMatrixAccumulateToDescriptor.mC4M5N4U0S2(i32 -2147483621, %dx.types.LinAlgMatrixC4M5N4U0S2 undef, %dx.types.Handle %handle, i32 1, i32 2, i32 3) ; LinAlgMatrixAccumulateToDescriptor(matrix,handle,offset,stride,layout)
32+
call void @dx.op.linAlgMatrixAccumulateToDescriptor.mC4M5N4U0S2(i32 -2147483621, %dx.types.LinAlgMatrixC4M5N4U0S2 undef, %dx.types.Handle %handle, i32 1, i32 2, i32 3, i32 4) ; LinAlgMatrixAccumulateToDescriptor(matrix,handle,offset,stride,layout,align)
3333

3434
; dx.op.linAlgMatrixLength
3535
%v2 = call i32 @dx.op.linAlgMatrixLength.mC4M5N4U0S2(i32 -2147483632, %dx.types.LinAlgMatrixC4M5N4U0S2 undef) ; LinAlgMatrixLength(matrix)
3636

3737
; dx.op.linAlgMatrixLoadFromDescriptor
38-
%v3 = call %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixLoadFromDescriptor.mC4M5N4U0S2(i32 -2147483634, %dx.types.Handle %handle, i32 5, i32 5, i32 5) ; LinAlgMatrixLoadFromDescriptor(handle,offset,stride,layout)
38+
%v3 = call %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixLoadFromDescriptor.mC4M5N4U0S2(i32 -2147483634, %dx.types.Handle %handle, i32 5, i32 5, i32 5, i32 4) ; LinAlgMatrixLoadFromDescriptor(handle,offset,stride,layout,align)
3939

4040
; dx.op.linAlgMatrixOuterProduct
4141
%v4 = call %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixOuterProduct.mC4M5N4U0S2.v4i32.v4i32(i32 -2147483619, <4 x i32> <i32 9, i32 9, i32 9, i32 9>, <4 x i32> <i32 3, i32 3, i32 3, i32 3>) ; LinAlgMatrixOuterProduct(vectorA,vectorB)
@@ -75,7 +75,7 @@ define void @mainCS() {
7575
%v14 = call %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixSetElement.mC4M5N4U0S2.mC4M5N4U0S2.i32(i32 -2147483629, %dx.types.LinAlgMatrixC4M5N4U0S2 %v9, i32 1, i32 1) ; LinAlgMatrixSetElement(matrix,threadLocalIndex,value)
7676

7777
; dx.op.linAlgMatrixStoreToDescriptor
78-
call void @dx.op.linAlgMatrixStoreToDescriptor.mC4M5N4U0S2(i32 -2147483628, %dx.types.LinAlgMatrixC4M5N4U0S2 %v14, %dx.types.Handle %handle, i32 1, i32 2, i32 3) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout)
78+
call void @dx.op.linAlgMatrixStoreToDescriptor.mC4M5N4U0S2(i32 -2147483628, %dx.types.LinAlgMatrixC4M5N4U0S2 %v14, %dx.types.Handle %handle, i32 1, i32 2, i32 3, i32 4) ; LinAlgMatrixStoreToDescriptor(matrix,handle,offset,stride,layout,align)
7979

8080
; dx.op.linAlgMatrixAccumulateToMemory
8181
call void @dx.op.linAlgMatrixAccumulateToMemory.mC4M5N4U0S2.f32(i32 -2147483620, %dx.types.LinAlgMatrixC4M5N4U0S2 %v14, float addrspace(3)* getelementptr inbounds ([64 x float], [64 x float] addrspace(3)* @"\01?SharedArr@@3PAMA", i32 0, i32 0), i32 0, i32 0, i32 0) ; LinAlgMatrixAccumulateToMemory(matrix,memory,offset,stride,layout)
@@ -96,16 +96,16 @@ declare %dx.types.LinAlgMatrixC4M5N4U2S2 @dx.op.linAlgMatrixMultiply.mC4M5N4U2S2
9696
declare %dx.types.LinAlgMatrixC4M5N4U2S2 @dx.op.linAlgMatrixAccumulate.mC4M5N4U2S2.mC4M5N4U0S2.mC4M4N5U1S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.LinAlgMatrixC4M4N5U1S2) #0
9797

9898
; Function Attrs: nounwind
99-
declare void @dx.op.linAlgMatrixStoreToDescriptor.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.Handle, i32, i32, i32) #0
99+
declare void @dx.op.linAlgMatrixStoreToDescriptor.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.Handle, i32, i32, i32, i32) #0
100100

101101
; Function Attrs: nounwind
102-
declare void @dx.op.linAlgMatrixAccumulateToDescriptor.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.Handle, i32, i32, i32) #0
102+
declare void @dx.op.linAlgMatrixAccumulateToDescriptor.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2, %dx.types.Handle, i32, i32, i32, i32) #0
103103

104104
; Function Attrs: nounwind
105105
declare i32 @dx.op.linAlgMatrixLength.mC4M5N4U0S2(i32, %dx.types.LinAlgMatrixC4M5N4U0S2) #0
106106

107107
; Function Attrs: nounwind
108-
declare %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixLoadFromDescriptor.mC4M5N4U0S2(i32, %dx.types.Handle, i32, i32, i32) #0
108+
declare %dx.types.LinAlgMatrixC4M5N4U0S2 @dx.op.linAlgMatrixLoadFromDescriptor.mC4M5N4U0S2(i32, %dx.types.Handle, i32, i32, i32, i32) #0
109109

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

0 commit comments

Comments
 (0)