Skip to content

Commit fa12dfe

Browse files
committed
[TritonGEN] Update the unsupported block load SPV interface list.
Signed-off-by: Lu,Chengjun <[email protected]>
1 parent 92b6a32 commit fa12dfe

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

test/TritonGEN/tritongen-2Dblockload-to-llvm.mlir

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
// RUN: triton-opt -convert-tritongen-to-llvm -split-input-file %s | FileCheck %s
22

3+
module attributes {"ttg.threads-per-warp" = 16 : i32} {
4+
llvm.func @triton_gen.2Dblockload(%ptr : !llvm.ptr<1>, %base_width : i32, %base_height : i32, %base_pitch : i32, %x : i32, %y : i32) {
5+
// CHECK: [[ELEM_BITS:%.*]] = llvm.mlir.constant(8 : i32) : i32
6+
// CHECK: [[TILE_WIDTH:%.*]] = llvm.mlir.constant(8 : i32) : i32
7+
// CHECK: [[TILE_HEIGHT:%.*]] = llvm.mlir.constant(8 : i32) : i32
8+
// CHECK: [[VBLOCKS:%.*]] = llvm.mlir.constant(1 : i32) : i32
9+
// CHECK: [[TRANSPOSE:%.*]] = llvm.mlir.constant(false) : i1
10+
// CHECK: [[VNNI:%.*]] = llvm.mlir.constant(false) : i1
11+
// CHECK: llvm.call spir_funccc @llvm.genx.GenISA.LSC2DBlockRead.v2i16({{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}}, [[ELEM_BITS]], [[TILE_WIDTH]], [[TILE_HEIGHT]], [[VBLOCKS]], [[TRANSPOSE]], [[VNNI]], {{.*}})
12+
%0 = triton_gen.2Dblockload %ptr, %base_width, %base_height, %base_pitch, %x, %y {elem_size_in_bits=8, tile_width=8, tile_height=8, v_blocks=1, transpose=false, vnni_transform=false, cache_control=Default} : (!llvm.ptr<1>, i32, i32, i32, i32, i32) -> vector<2xi16>
13+
llvm.return
14+
}
15+
}
16+
17+
// -----
18+
319
module attributes {"ttg.threads-per-warp" = 16 : i32} {
420
llvm.func @triton_gen.2Dblockload(%ptr : !llvm.ptr<1>, %base_width : i32, %base_height : i32, %base_pitch : i32, %x : i32, %y : i32) {
521
// CHECK: [[ONE0:%.*]] = llvm.mlir.constant(1 : i32) : i32
@@ -652,6 +668,22 @@ llvm.func @triton_gen.2Dblockload(%ptr : !llvm.ptr<1>, %base_width : i32, %base_
652668

653669
// -----
654670

671+
module attributes {"ttg.threads-per-warp" = 16 : i32} {
672+
llvm.func @triton_gen.2Dblockload(%ptr : !llvm.ptr<1>, %base_width : i32, %base_height : i32, %base_pitch : i32, %x : i32, %y : i32) {
673+
// CHECK: %[[ELEM_BITS:.*]] = llvm.mlir.constant(16 : i32) : i32
674+
// CHECK: %[[TILE_WIDTH:.*]] = llvm.mlir.constant(8 : i32) : i32
675+
// CHECK: %[[TILE_HEIGHT:.*]] = llvm.mlir.constant(8 : i32) : i32
676+
// CHECK: %[[VBLOCKS:.*]] = llvm.mlir.constant(1 : i32) : i32
677+
// CHECK: %[[TRANSPOSE:.*]] = llvm.mlir.constant(false) : i1
678+
// CHECK: %[[VNNI:.*]] = llvm.mlir.constant(false) : i1
679+
// CHECK: llvm.call spir_funccc @llvm.genx.GenISA.LSC2DBlockRead.v4i16({{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}}, %[[ELEM_BITS]], %[[TILE_WIDTH]], %[[TILE_HEIGHT]], %[[VBLOCKS]], %[[TRANSPOSE]], %[[VNNI]], {{.*}})
680+
%0 = triton_gen.2Dblockload %ptr, %base_width, %base_height, %base_pitch, %x, %y {elem_size_in_bits=16, tile_width=8, tile_height=8, v_blocks=1, transpose=false, vnni_transform=false, cache_control=Default} : (!llvm.ptr<1>, i32, i32, i32, i32, i32) -> vector<4xi16>
681+
llvm.return
682+
}
683+
}
684+
685+
// -----
686+
655687
module attributes {"ttg.threads-per-warp" = 16 : i32} {
656688
llvm.func @triton_gen.2Dblockload(%ptr : !llvm.ptr<1>, %base_width : i32, %base_height : i32, %base_pitch : i32, %x : i32, %y : i32) {
657689
// CHECK: %[[ELEM_BITS:.*]] = llvm.mlir.constant(16 : i32) : i32

third_party/intel/lib/TritonGENToLLVM/TritonGENToLLVMPass.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ loadCacheControlToCacheControls(Builder &builder,
115115
static bool isSPVBuiltinAvailable(TritonGEN::Matrix2DBlockLoadOp op) {
116116
// FIXME: The following signatures are not valid in SPV interface.
117117

118+
// intel_sub_group_2d_block_read_8b_8r8x1c
119+
if (op.getElemSizeInBits() == 8 && op.getTileHeight() == 8 &&
120+
op.getTileWidth() == 8 && op.getVBlocks() == 1 && !op.getVnniTransform())
121+
return false;
122+
118123
// intel_sub_group_2d_block_read_8b_8r8x2c
119124
if (op.getElemSizeInBits() == 8 && op.getTileHeight() == 8 &&
120125
op.getTileWidth() == 8 && op.getVBlocks() == 2 && !op.getVnniTransform())
@@ -150,6 +155,11 @@ static bool isSPVBuiltinAvailable(TritonGEN::Matrix2DBlockLoadOp op) {
150155
op.getTileWidth() == 16 && op.getVBlocks() == 2 && !op.getVnniTransform())
151156
return false;
152157

158+
// intel_sub_group_2d_block_read_16b_8r8x1c
159+
if (op.getElemSizeInBits() == 16 && op.getTileHeight() == 8 &&
160+
op.getTileWidth() == 8 && op.getVBlocks() == 1 && !op.getVnniTransform())
161+
return false;
162+
153163
// intel_sub_group_2d_block_read_16b_8r8x2c
154164
if (op.getElemSizeInBits() == 16 && op.getTileHeight() == 8 &&
155165
op.getTileWidth() == 8 && op.getVBlocks() == 2 && !op.getVnniTransform())

0 commit comments

Comments
 (0)