brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · f5ee285 Raw
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