diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPU.td b/mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPU.td index 80959ffbaf426..5a53b15a9c679 100644 --- a/mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPU.td +++ b/mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPU.td @@ -237,9 +237,11 @@ def AMDGPU_FatRawBufferCastOp : Arguments<(ins AnyMemRef:$source, Optional:$validBytes, Optional>:$cacheSwizzleStride, - DefaultValuedProp:$boundsCheck, - UnitProp:$resetOffset)>, + DefaultValuedAttr:$boundsCheck, + UnitAttr:$resetOffset)>, Results<(outs AnyMemRef:$result)> { + // TODO: Set `resetOffset` and `boundsCheck` to use `Property` once + // we implemented pythonic binding for `Property`. let summary = "Create a raw buffer fat pointer that matches `memref`"; let description = [{ Wraps the memory pointed to by `source` as a raw buffer fat pointer, or, diff --git a/mlir/test/python/dialects/amdgpu.py b/mlir/test/python/dialects/amdgpu.py index c8039d494cf81..b479576dac093 100644 --- a/mlir/test/python/dialects/amdgpu.py +++ b/mlir/test/python/dialects/amdgpu.py @@ -2,7 +2,7 @@ # This is just a smoke test that the dialect is functional. from mlir.ir import * -from mlir.dialects import amdgpu, arith, memref +from mlir.dialects import amdgpu, func def constructAndPrintInModule(f): @@ -20,3 +20,26 @@ def constructAndPrintInModule(f): def testSmoke(): # CHECK: amdgpu.lds_barrier amdgpu.LDSBarrierOp() + + +# CHECK-LABEL: testFatRawBufferCastOpParams +@constructAndPrintInModule +def testFatRawBufferCastOpParams(): + memref_type = MemRefType.get( + [ShapedType.get_dynamic_size(), ShapedType.get_dynamic_size()], + F32Type.get(), + ) + f = func.FuncOp("test_raw_buffer_cast_params", ([memref_type], [])) + with InsertionPoint(f.add_entry_block()): + block_args = f.arguments + amdgpu.FatRawBufferCastOp(block_args[0]) + amdgpu.FatRawBufferCastOp(block_args[0], resetOffset=True) + amdgpu.FatRawBufferCastOp(block_args[0], boundsCheck=False) + amdgpu.FatRawBufferCastOp(block_args[0], boundsCheck=False, resetOffset=True) + func.ReturnOp([]) + + # CHECK: func.func @test_raw_buffer_cast_params(%[[ARG0:.+]]: memref) { + # CHECK: amdgpu.fat_raw_buffer_cast %[[ARG0]] : memref to memref> + # CHECK-NEXT: amdgpu.fat_raw_buffer_cast %[[ARG0]] resetOffset : memref to memref> + # CHECK-NEXT: amdgpu.fat_raw_buffer_cast %[[ARG0]] boundsCheck(false) : memref to memref> + # CHECK-NEXT: amdgpu.fat_raw_buffer_cast %[[ARG0]] boundsCheck(false) resetOffset : memref to memref>