@@ -573,6 +573,29 @@ llvm.func @ld_matrix(%arg0: !llvm.ptr<3>) {
573573 llvm.return
574574}
575575
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+
576599// This function has the "kernel" attribute attached and should appear in the
577600// NVVM annotations after conversion.
578601llvm.func @kernel_func () attributes {nvvm.kernel } {
0 commit comments