65 lines · python
1# REQUIRES: host-supports-amdgpu2# RUN: %PYTHON %s | FileCheck %s3 4from mlir.ir import *5import mlir.dialects.gpu as gpu6import mlir.dialects.gpu.passes7from mlir.passmanager import *8 9 10def run(f):11 print("\nTEST:", f.__name__)12 with Context(), Location.unknown():13 f()14 return f15 16 17# CHECK-LABEL: testGPUToLLVMBin18@run19def testGPUToLLVMBin():20 with Context():21 module = Module.parse(22 r"""23module attributes {gpu.container_module} {24 gpu.module @kernel_module1 [#rocdl.target<chip = "gfx90a">] {25 llvm.func @kernel(%arg0: i32, %arg1: !llvm.ptr,26 %arg2: !llvm.ptr, %arg3: i64, %arg4: i64,27 %arg5: i64) attributes {gpu.kernel} {28 llvm.return29 }30 }31}32 """33 )34 pm = PassManager("any")35 pm.add("gpu-module-to-binary{format=llvm}")36 pm.run(module.operation)37 print(module)38 # CHECK-LABEL:gpu.binary @kernel_module139 # CHECK:[#gpu.object<#rocdl.target<chip = "gfx90a">, offload = "{{.*}}">]40 41 42# CHECK-LABEL: testGPUToASMBin43@run44def testGPUToASMBin():45 with Context():46 module = Module.parse(47 r"""48module attributes {gpu.container_module} {49 gpu.module @kernel_module2 [#rocdl.target<flags = {fast}>, #rocdl.target] {50 llvm.func @kernel(%arg0: i32, %arg1: !llvm.ptr,51 %arg2: !llvm.ptr, %arg3: i64, %arg4: i64,52 %arg5: i64) attributes {gpu.kernel} {53 llvm.return54 }55 }56}57 """58 )59 pm = PassManager("any")60 pm.add("gpu-module-to-binary{format=isa}")61 pm.run(module.operation)62 print(module)63 # CHECK-LABEL:gpu.binary @kernel_module264 # CHECK:[#gpu.object<#rocdl.target<flags = {fast}>, assembly = "{{.*}}">, #gpu.object<#rocdl.target, assembly = "{{.*}}">]65