Skip to content

Commit 9967ad3

Browse files
committed
Add rocdl ops for buffer load into lds
1 parent 8806311 commit 9967ad3

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,24 @@ def ROCDL_RawPtrBufferLoadOp :
475475
}];
476476
}
477477

478+
def ROCDL_RawPtrBufferLoadLdsOp :
479+
ROCDL_IntrOp<"raw.ptr.buffer.load.lds", [], [], [], 0, 0, 1> {
480+
dag args = (ins Arg<ROCDLBufferRsrc, "", [MemRead]>:$rsrc,
481+
Arg<ROCDLBufferLDS, "", [MemWrite]>:$ldsPtr,
482+
I32:$size,
483+
I32:$voffset,
484+
I32:$soffset,
485+
I32:$offset,
486+
I32:$aux);
487+
let arguments = !con(args, aliasAttrs);
488+
let assemblyFormat = "operands attr-dict";
489+
let extraClassDefinition = [{
490+
::llvm::SmallVector<::mlir::Value> $cppClass::getAccessedOperands() {
491+
return {getRsrc(), getLdsPtr()};
492+
}
493+
}];
494+
}
495+
478496
def ROCDL_RawPtrBufferStoreOp :
479497
ROCDL_IntrOp<"raw.ptr.buffer.store", [], [0], [], 0, 0, 1> {
480498
dag args = (ins LLVM_Type:$vdata,
@@ -692,7 +710,7 @@ def ROCDL_CvtScaleF32PkFp8F32:
692710
attr-dict $srcA `,` $srcB `,` $scale `->` $old `[` $wordSel `]` `:` type($res)
693711
}];
694712
}
695-
713+
696714
def ROCDL_CvtScaleF32PkBf8F32:
697715
ROCDL_IntrOp<"cvt.scalef32.pk.bf8.f32", [], [], [Pure], 1>,
698716
Arguments<(ins ROCDL_V2I16Type:$old, F32:$srcA, F32:$srcB, F32: $scale, I1:$wordSel)> {

mlir/test/Dialect/LLVMIR/rocdl.mlir

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,6 +687,15 @@ llvm.func @rocdl.raw.ptr.buffer.f32(%rsrc : !llvm.ptr<8>,
687687
llvm.return
688688
}
689689

690+
llvm.func @rocdl.raw.ptr.buffer.load.lds(%rsrc : !llvm.ptr<8>, %dstLds : !llvm.ptr<3>,
691+
%size: i32, %voffset : i32, %soffset : i32, %offset : i32,
692+
%aux : i32) {
693+
// CHECK-LABEL: rocdl.raw.ptr.buffer.load.lds
694+
// CHECK: rocdl.raw.ptr.buffer.load.lds %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}
695+
rocdl.raw.ptr.buffer.load.lds %rsrc, %dstLds, %size, %voffset, %soffset, %offset, %aux
696+
697+
llvm.return
698+
}
690699

691700
llvm.func @rocdl.raw.ptr.buffer.i32(%rsrc : !llvm.ptr<8>,
692701
%offset : i32, %soffset : i32,

mlir/test/Target/LLVMIR/rocdl.mlir

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -893,6 +893,18 @@ llvm.func @rocdl.raw.ptr.buffer(%rsrc : !llvm.ptr<8>,
893893
llvm.return
894894
}
895895

896+
llvm.func @rocdl.raw.ptr.buffer.load.lds(%rsrc : !llvm.ptr<8>, %dstLds : !llvm.ptr<3>,
897+
%voffset : i32, %soffset : i32) {
898+
%size = llvm.mlir.constant(4 : i32) : i32
899+
%offset = llvm.mlir.constant(128 : i32) : i32
900+
%aux = llvm.mlir.constant(1 : i32) : i32
901+
// CHECK-LABEL: rocdl.raw.ptr.buffer.load.lds
902+
// CHECK: call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %{{.*}}, ptr addrspace(3) %{{.*}}, i32 4, i32 %{{.*}}, i32 %{{.*}}, i32 128, i32 1
903+
rocdl.raw.ptr.buffer.load.lds %rsrc, %dstLds, %size, %voffset, %soffset, %offset, %aux
904+
905+
llvm.return
906+
}
907+
896908
llvm.func @rocdl.raw.ptr.buffer.atomic.f32(%rsrc : !llvm.ptr<8>,
897909
%offset : i32, %soffset : i32,
898910
%vdata1 : f32) {

0 commit comments

Comments
 (0)