@@ -573,6 +573,29 @@ llvm.func @ld_matrix(%arg0: !llvm.ptr<3>) {
573
573
llvm.return
574
574
}
575
575
576
+ // CHECK-LABEL: @st_matrix
577
+ llvm.func @st_matrix (%arg0: !llvm.ptr <3 >, %r1: i32 , %r2: i32 , %r3: i32 , %r4: i32 ) {
578
+ // CHECK: call void @llvm.nvvm.stmatrix.sync.aligned.m8n8.x1.b16.p3(ptr addrspace(3) %{{.*}}, i32 %{{.*}})
579
+ nvvm.stmatrix %arg0 , %r1 {layout = #nvvm.mma_layout <row >, shape = #nvvm.ld_st_matrix_shape <m = 8 , n = 8 >, eltType = #nvvm.ld_st_matrix_elt_type <b16 >} : !llvm.ptr <3 >, i32
580
+ // CHECK: call void @llvm.nvvm.stmatrix.sync.aligned.m8n8.x1.trans.b16.p3(ptr addrspace(3) %{{.*}}, i32 %{{.*}})
581
+ nvvm.stmatrix %arg0 , %r1 {layout = #nvvm.mma_layout <col >, shape = #nvvm.ld_st_matrix_shape <m = 8 , n = 8 >, eltType = #nvvm.ld_st_matrix_elt_type <b16 >} : !llvm.ptr <3 >, i32
582
+ // CHECK: call void @llvm.nvvm.stmatrix.sync.aligned.m16n8.x1.trans.b8.p3(ptr addrspace(3) %{{.*}}, i32 %{{.*}})
583
+ nvvm.stmatrix %arg0 , %r1 {layout = #nvvm.mma_layout <col >, shape = #nvvm.ld_st_matrix_shape <m = 16 , n = 8 >, eltType = #nvvm.ld_st_matrix_elt_type <b8 >} : !llvm.ptr <3 >, i32
584
+ // CHECK: call void @llvm.nvvm.stmatrix.sync.aligned.m8n8.x2.b16.p3(ptr addrspace(3) %{{.*}}, i32 %{{.*}}, i32 %{{.*}})
585
+ nvvm.stmatrix %arg0 , %r1 , %r2 {layout = #nvvm.mma_layout <row >, shape = #nvvm.ld_st_matrix_shape <m = 8 , n = 8 >, eltType = #nvvm.ld_st_matrix_elt_type <b16 >} : !llvm.ptr <3 >, i32 , i32
586
+ // CHECK: call void @llvm.nvvm.stmatrix.sync.aligned.m8n8.x2.trans.b16.p3(ptr addrspace(3) %{{.*}}, i32 %{{.*}}, i32 %{{.*}})
587
+ nvvm.stmatrix %arg0 , %r1 , %r2 {layout = #nvvm.mma_layout <col >, shape = #nvvm.ld_st_matrix_shape <m = 8 , n = 8 >, eltType = #nvvm.ld_st_matrix_elt_type <b16 >} : !llvm.ptr <3 >, i32 , i32
588
+ // CHECK: call void @llvm.nvvm.stmatrix.sync.aligned.m16n8.x2.trans.b8.p3(ptr addrspace(3) %{{.*}}, i32 %{{.*}}, i32 %{{.*}})
589
+ nvvm.stmatrix %arg0 , %r1 , %r2 {layout = #nvvm.mma_layout <col >, shape = #nvvm.ld_st_matrix_shape <m = 16 , n = 8 >, eltType = #nvvm.ld_st_matrix_elt_type <b8 >} : !llvm.ptr <3 >, i32 , i32
590
+ // CHECK: call void @llvm.nvvm.stmatrix.sync.aligned.m8n8.x4.b16.p3(ptr addrspace(3) %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}})
591
+ nvvm.stmatrix %arg0 , %r1 , %r2 , %r3 , %r4 {layout = #nvvm.mma_layout <row >, shape = #nvvm.ld_st_matrix_shape <m = 8 , n = 8 >, eltType = #nvvm.ld_st_matrix_elt_type <b16 >} : !llvm.ptr <3 >, i32 , i32 , i32 , i32
592
+ // CHECK: call void @llvm.nvvm.stmatrix.sync.aligned.m8n8.x4.trans.b16.p3(ptr addrspace(3) %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}})
593
+ nvvm.stmatrix %arg0 , %r1 , %r2 , %r3 , %r4 {layout = #nvvm.mma_layout <col >, shape = #nvvm.ld_st_matrix_shape <m = 8 , n = 8 >, eltType = #nvvm.ld_st_matrix_elt_type <b16 >} : !llvm.ptr <3 >, i32 , i32 , i32 , i32
594
+ // CHECK: call void @llvm.nvvm.stmatrix.sync.aligned.m16n8.x4.trans.b8.p3(ptr addrspace(3) %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}})
595
+ nvvm.stmatrix %arg0 , %r1 , %r2 , %r3 , %r4 {layout = #nvvm.mma_layout <col >, shape = #nvvm.ld_st_matrix_shape <m = 16 , n = 8 >, eltType = #nvvm.ld_st_matrix_elt_type <b8 >} : !llvm.ptr <3 >, i32 , i32 , i32 , i32
596
+ llvm.return
597
+ }
598
+
576
599
// This function has the "kernel" attribute attached and should appear in the
577
600
// NVVM annotations after conversion.
578
601
llvm.func @kernel_func () attributes {nvvm.kernel } {
0 commit comments