11// RUN: triton-opt -convert-tritongen-to-llvm -split-input-file %s | FileCheck %s
22
3- // CHECK: llvm.func spir_funccc @_Z41intel_sub_group_2d_block_write_8b_8r16x1cPU3AS1viiiDv2_iPh( !llvm.ptr<1> {llvm.nonnull, llvm.writeonly}, i32, i32, i32, vector<2xi32>, !llvm.ptr {llvm.nonnull, llvm.readonly} ) attributes {no_unwind, will_return}
3+ // CHECK: llvm.func spir_funccc @_Z33__spirv_Subgroup2DBlockStoreINTELiiiiPvPU3AS1viiiDv2_i(i32, i32, i32, i32, !llvm.ptr {llvm.nonnull, llvm.readonly}, !llvm.ptr <1> {llvm.nonnull, llvm.writeonly}, i32, i32, i32, vector<2xi32>) attributes {no_unwind, will_return}
44
55llvm.func @triton_gen.2Dblockstore (%ptr : !llvm.ptr <1 >, %base_width : i32 , %base_height : i32 , %base_pitch : i32 , %x : i32 , %y : i32 , %stored_val : vector <8 xi8 >) {
66 // CHECK: llvm.func @triton_gen.2Dblockstore(%arg0: !llvm.ptr<1>, %arg1: i32, %arg2: i32, %arg3: i32, %arg4: i32, %arg5: i32, %arg6: vector<8xi8>) {
@@ -20,33 +20,52 @@ llvm.func @triton_gen.2Dblockstore(%ptr : !llvm.ptr<1>, %base_width : i32, %base
2020 // CHECK-DAG: [[UNDEF:%.*]] = llvm.mlir.undef : vector<2xi32>
2121 // CHECK-NEXT: [[COORD0:%.*]] = llvm.insertelement [[ADD_1]], [[UNDEF]][[[ZERO]] : i32] : vector<2xi32>
2222 // CHECK-NEXT: [[COORD1:%.*]] = llvm.insertelement %arg5, [[COORD0]][[[ONE]] : i32] : vector<2xi32>
23- // CHECK-NEXT: llvm.call spir_funccc @_Z41intel_sub_group_2d_block_write_8b_8r16x1cPU3AS1viiiDv2_iPh(%arg0, [[ADD_0]], %arg2, %arg3, [[COORD1]], [[STOREVALPTR]])
24- // CHECK-SAME: triton_gen.DecorationCacheControlINTEL = #triton_gen.decoration_cache_control<#triton_gen.store_cache_control<0, Uncached, 0>, #triton_gen.store_cache_control<1, Uncached, 0>>
25- // CHECK-SAME: : (!llvm.ptr<1>{{.*}}, i32, i32, i32, vector<2xi32>, !llvm.ptr{{.*}}) -> ()
23+ // CHECK-DAG: [[ElemSize:%.*]] = llvm.mlir.constant(1 : i32) : i32
24+ // CHECK-DAG: [[TileWidth:%.*]] = llvm.mlir.constant(16 : i32) : i32
25+ // CHECK-DAG: [[TileHeight:%.*]] = llvm.mlir.constant(8 : i32) : i32
26+ // CHECK-DAG: [[VBlocks:%.*]] = llvm.mlir.constant(1 : i32) : i32
27+ // CHECK-NEXT: llvm.call spir_funccc @_Z33__spirv_Subgroup2DBlockStoreINTELiiiiPvPU3AS1viiiDv2_i([[ElemSize]], [[TileWidth]], [[TileHeight]], [[VBlocks]], [[STOREVALPTR]], %arg0, [[ADD_0]], %arg2, %arg3, [[COORD1]])
28+ // CHECK-SAME: triton_gen.DecorationCacheControlINTEL = #triton_gen.decoration_cache_control<#triton_gen.store_cache_control<0, Uncached, 5>, #triton_gen.store_cache_control<1, Uncached, 5>>
29+ // CHECK-SAME: : (i32, i32, i32, i32, !llvm.ptr{{.*}}, !llvm.ptr<1>{{.*}}, i32, i32, i32, vector<2xi32>) -> ()
2630 triton_gen.2Dblockstore %ptr , %base_width , %base_height , %base_pitch , %x , %y , %stored_val {elem_size_in_bits =8 , tile_width =16 , tile_height =8 , v_blocks =1 , cache_control =L1UC_L3UC } : (!llvm.ptr <1 >, i32 , i32 , i32 , i32 , i32 , vector <8 xi8 >)
2731 llvm.return
2832}
2933
3034// -----
3135
3236llvm.func @triton_gen.2Dblockstore (%ptr : !llvm.ptr <1 >, %base_width : i32 , %base_height : i32 , %base_pitch : i32 , %x : i32 , %y : i32 , %stored_val : vector <8 xi16 >) {
33- // CHECK: llvm.call spir_funccc @_Z41intel_sub_group_2d_block_write_8b_8r32x1cPU3AS1viiiDv2_iPt(%arg0, %{{.*}}, %arg2, %arg3, {{.*}}, [[DEST:%.*]]) {{.*}} : (!llvm.ptr<1>{{.*}}, i32, i32, i32, vector<2xi32>, !llvm.ptr{{.*}}) -> ()
37+ // CHECK-COUNT-2: llvm.mlir.constant(1 : i32) : i32
38+ // CHECK: [[ElemSize:%.*]] = llvm.mlir.constant(1 : i32) : i32
39+ // CHECK-DAG: [[TileWidth:%.*]] = llvm.mlir.constant(32 : i32) : i32
40+ // CHECK-DAG: [[TileHeight:%.*]] = llvm.mlir.constant(8 : i32) : i32
41+ // CHECK-DAG: [[VBlocks:%.*]] = llvm.mlir.constant(1 : i32) : i32
42+ // CHECK-NEXT: llvm.call spir_funccc @_Z33__spirv_Subgroup2DBlockStoreINTELiiiiPvPU3AS1viiiDv2_i([[ElemSize]], [[TileWidth]], [[TileHeight]], [[VBlocks]], [[DEST:%.*]], %arg0, %{{.*}}, %arg2, %arg3, {{.*}}) {{.*}} : (i32, i32, i32, i32, !llvm.ptr{{.*}}, !llvm.ptr<1>{{.*}}, i32, i32, i32, vector<2xi32>) -> ()
3443 triton_gen.2Dblockstore %ptr , %base_width , %base_height , %base_pitch , %x , %y , %stored_val {elem_size_in_bits =8 , tile_width =32 , tile_height =8 , v_blocks =1 , cache_control =Default } : (!llvm.ptr <1 >, i32 , i32 , i32 , i32 , i32 , vector <8 xi16 >)
3544 llvm.return
3645}
3746
3847// -----
3948
4049llvm.func @triton_gen.2Dblockstore (%ptr : !llvm.ptr <1 >, %base_width : i32 , %base_height : i32 , %base_pitch : i32 , %x : i32 , %y : i32 , %stored_val : vector <8 xi16 >) {
41- // CHECK: llvm.call spir_funccc @_Z42intel_sub_group_2d_block_write_16b_8r16x1cPU3AS1viiiDv2_iPt(%arg0, %{{.*}}, %arg2, %arg3, {{.*}}, [[DEST:%.*]]) {{.*}} : (!llvm.ptr<1>{{.*}}, i32, i32, i32, vector<2xi32>, !llvm.ptr{{.*}}) -> ()
50+ // CHECK: llvm.mlir.constant(2 : i32) : i32
51+ // CHECK: [[ElemSize:%.*]] = llvm.mlir.constant(2 : i32) : i32
52+ // CHECK-DAG: [[TileWidth:%.*]] = llvm.mlir.constant(16 : i32) : i32
53+ // CHECK-DAG: [[TileHeight:%.*]] = llvm.mlir.constant(8 : i32) : i32
54+ // CHECK-DAG: [[VBlocks:%.*]] = llvm.mlir.constant(1 : i32) : i32
55+ // CHECK-NEXT: llvm.call spir_funccc @_Z33__spirv_Subgroup2DBlockStoreINTELiiiiPvPU3AS1viiiDv2_i([[ElemSize]], [[TileWidth]], [[TileHeight]], [[VBlocks]], [[DEST:%.*]], %arg0, %{{.*}}, %arg2, %arg3, {{.*}}) {{.*}} : (i32, i32, i32, i32, !llvm.ptr{{.*}}, !llvm.ptr<1>{{.*}}, i32, i32, i32, vector<2xi32>) -> ()
4256 triton_gen.2Dblockstore %ptr , %base_width , %base_height , %base_pitch , %x , %y , %stored_val {elem_size_in_bits =16 , tile_width =16 , tile_height =8 , v_blocks =1 , cache_control =Default } : (!llvm.ptr <1 >, i32 , i32 , i32 , i32 , i32 , vector <8 xi16 >)
4357 llvm.return
4458}
4559
4660// -----
4761
4862llvm.func @triton_gen.2Dblockstore (%ptr : !llvm.ptr <1 >, %base_width : i32 , %base_height : i32 , %base_pitch : i32 , %x : i32 , %y : i32 , %stored_val : vector <8 xi32 >) {
49- // CHECK: llvm.call spir_funccc @_Z42intel_sub_group_2d_block_write_32b_8r16x1cPU3AS1viiiDv2_iPj(%arg0, %{{.*}}, %arg2, %arg3, {{.*}}, [[DEST:%.*]]) {{.*}} : (!llvm.ptr<1>{{.*}}, i32, i32, i32, vector<2xi32>, !llvm.ptr{{.*}}) -> ()
63+ // CHECK: llvm.mlir.constant(4 : i32) : i32
64+ // CHECK: [[ElemSize:%.*]] = llvm.mlir.constant(4 : i32) : i32
65+ // CHECK-DAG: [[TileWidth:%.*]] = llvm.mlir.constant(16 : i32) : i32
66+ // CHECK-DAG: [[TileHeight:%.*]] = llvm.mlir.constant(8 : i32) : i32
67+ // CHECK-DAG: [[VBlocks:%.*]] = llvm.mlir.constant(1 : i32) : i32
68+ // CHECK-NEXT: llvm.call spir_funccc @_Z33__spirv_Subgroup2DBlockStoreINTELiiiiPvPU3AS1viiiDv2_i([[ElemSize]], [[TileWidth]], [[TileHeight]], [[VBlocks]], [[DEST:%.*]], %arg0, %{{.*}}, %arg2, %arg3, {{.*}}) {{.*}} : (i32, i32, i32, i32, !llvm.ptr{{.*}}, !llvm.ptr<1>{{.*}}, i32, i32, i32, vector<2xi32>) -> ()
5069 triton_gen.2Dblockstore %ptr , %base_width , %base_height , %base_pitch , %x , %y , %stored_val {elem_size_in_bits =32 , tile_width =16 , tile_height =8 , v_blocks =1 , cache_control =Default } : (!llvm.ptr <1 >, i32 , i32 , i32 , i32 , i32 , vector <8 xi32 >)
5170 llvm.return
5271}
0 commit comments