72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
# RUN: %PYTHON %s | FileCheck %s
|
|
# This is just a smoke test that the dialect is functional.
|
|
|
|
from mlir.ir import *
|
|
from mlir.dialects import amdgpu, func
|
|
|
|
|
|
def run(f):
|
|
print("\nTEST:", f.__name__)
|
|
f()
|
|
return f
|
|
|
|
|
|
def constructAndPrintInModule(f):
|
|
print("\nTEST:", f.__name__)
|
|
with Context(), Location.unknown():
|
|
module = Module.create()
|
|
with InsertionPoint(module.body):
|
|
f()
|
|
print(module)
|
|
return f
|
|
|
|
|
|
# CHECK-LABEL: testSmoke
|
|
@constructAndPrintInModule
|
|
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<?x?xf32>) {
|
|
# CHECK: amdgpu.fat_raw_buffer_cast %[[ARG0]] : memref<?x?xf32> to memref<?x?xf32, #amdgpu.address_space<fat_raw_buffer>>
|
|
# CHECK-NEXT: amdgpu.fat_raw_buffer_cast %[[ARG0]] resetOffset : memref<?x?xf32> to memref<?x?xf32, #amdgpu.address_space<fat_raw_buffer>>
|
|
# CHECK-NEXT: amdgpu.fat_raw_buffer_cast %[[ARG0]] boundsCheck(false) : memref<?x?xf32> to memref<?x?xf32, #amdgpu.address_space<fat_raw_buffer>>
|
|
# CHECK-NEXT: amdgpu.fat_raw_buffer_cast %[[ARG0]] boundsCheck(false) resetOffset : memref<?x?xf32> to memref<?x?xf32, #amdgpu.address_space<fat_raw_buffer>>
|
|
|
|
|
|
# CHECK-LABEL: testTDMTypes
|
|
@run
|
|
def testTDMTypes():
|
|
with Context():
|
|
f32 = F32Type.get()
|
|
i32 = IntegerType.get_signless(32)
|
|
|
|
# CHECK: !amdgpu.tdm_base<f32>
|
|
tdm_base = amdgpu.TDMBaseType.get(f32)
|
|
print(tdm_base)
|
|
|
|
# CHECK: !amdgpu.tdm_descriptor
|
|
tdm_descriptor = amdgpu.TDMDescriptorType.get()
|
|
print(tdm_descriptor)
|
|
|
|
# CHECK: !amdgpu.tdm_gather_base<f32, i32>
|
|
tdm_gather_base = amdgpu.TDMGatherBaseType.get(f32, i32)
|
|
print(tdm_gather_base)
|