1
1
// RUN: triton-opt -convert-tritongen-to-llvm -split-input-file %s | FileCheck %s
2
2
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}
4
4
5
5
llvm.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 >) {
6
6
// 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
20
20
// CHECK-DAG: [[UNDEF:%.*]] = llvm.mlir.undef : vector<2xi32>
21
21
// CHECK-NEXT: [[COORD0:%.*]] = llvm.insertelement [[ADD_1]], [[UNDEF]][[[ZERO]] : i32] : vector<2xi32>
22
22
// 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>) -> ()
26
30
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 >)
27
31
llvm.return
28
32
}
29
33
30
34
// -----
31
35
32
36
llvm.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>) -> ()
34
43
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 >)
35
44
llvm.return
36
45
}
37
46
38
47
// -----
39
48
40
49
llvm.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>) -> ()
42
56
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 >)
43
57
llvm.return
44
58
}
45
59
46
60
// -----
47
61
48
62
llvm.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>) -> ()
50
69
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 >)
51
70
llvm.return
52
71
}
0 commit comments