16995183eSJungwook Park# RUN: %PYTHON %s | FileCheck %s 26995183eSJungwook Park 36995183eSJungwook Parkfrom mlir.ir import * 46995183eSJungwook Parkimport mlir.dialects.gpu as gpu 56995183eSJungwook Parkimport mlir.dialects.gpu.passes 66995183eSJungwook Parkfrom mlir.passmanager import * 76995183eSJungwook Park 86995183eSJungwook Park 96995183eSJungwook Parkdef run(f): 106995183eSJungwook Park print("\nTEST:", f.__name__) 116995183eSJungwook Park with Context(), Location.unknown(): 126995183eSJungwook Park f() 136995183eSJungwook Park return f 146995183eSJungwook Park 156995183eSJungwook Park 166995183eSJungwook Park# CHECK-LABEL: testGPUPass 176995183eSJungwook Park# CHECK: SUCCESS 186995183eSJungwook Park@run 196995183eSJungwook Parkdef testGPUPass(): 206995183eSJungwook Park PassManager.parse("any(gpu-kernel-outlining)") 216995183eSJungwook Park print("SUCCESS") 226995183eSJungwook Park 236995183eSJungwook Park 246995183eSJungwook Park# CHECK-LABEL: testMMAElementWiseAttr 256995183eSJungwook Park@run 266995183eSJungwook Parkdef testMMAElementWiseAttr(): 276995183eSJungwook Park module = Module.create() 286995183eSJungwook Park with InsertionPoint(module.body): 296995183eSJungwook Park gpu.BlockDimOp(gpu.Dimension.y) 30bfcd3fa8SAlexander Belyaev # CHECK: %block_dim_y = gpu.block_dim y 316995183eSJungwook Park print(module) 326995183eSJungwook Park pass 336e6da74cSMaksim Levental 346e6da74cSMaksim Levental 356e6da74cSMaksim Levental# CHECK-LABEL: testObjectAttr 366e6da74cSMaksim Levental@run 376e6da74cSMaksim Leventaldef testObjectAttr(): 386e6da74cSMaksim Levental target = Attribute.parse("#nvvm.target") 396e6da74cSMaksim Levental format = gpu.CompilationTarget.Fatbin 406e6da74cSMaksim Levental object = b"BC\xc0\xde5\x14\x00\x00\x05\x00\x00\x00b\x0c0$MY\xbef" 416e6da74cSMaksim Levental properties = DictAttr.get({"O": IntegerAttr.get(IntegerType.get_signless(32), 2)}) 426e6da74cSMaksim Levental o = gpu.ObjectAttr.get(target, format, object, properties) 436e6da74cSMaksim Levental # CHECK: #gpu.object<#nvvm.target, properties = {O = 2 : i32}, "BC\C0\DE5\14\00\00\05\00\00\00b\0C0$MY\BEf"> 446e6da74cSMaksim Levental print(o) 456e6da74cSMaksim Levental assert o.object == object 466e6da74cSMaksim Levental 476e6da74cSMaksim Levental o = gpu.ObjectAttr.get(target, format, object) 486e6da74cSMaksim Levental # CHECK: #gpu.object<#nvvm.target, "BC\C0\DE5\14\00\00\05\00\00\00b\0C0$MY\BEf"> 496e6da74cSMaksim Levental print(o) 506e6da74cSMaksim Levental 516e6da74cSMaksim Levental object = ( 526e6da74cSMaksim Levental b"//\n// Generated by LLVM NVPTX Back-End\n//\n\n.version 6.0\n.target sm_50" 536e6da74cSMaksim Levental ) 546e6da74cSMaksim Levental o = gpu.ObjectAttr.get(target, format, object) 556e6da74cSMaksim Levental # CHECK: #gpu.object<#nvvm.target, "//\0A// Generated by LLVM NVPTX Back-End\0A//\0A\0A.version 6.0\0A.target sm_50"> 566e6da74cSMaksim Levental print(o) 576e6da74cSMaksim Levental assert o.object == object 58*016e1eb9SFabian Mora 59*016e1eb9SFabian Mora object = b"BC\xc0\xde5\x14\x00\x00\x05\x00\x00\x00b\x0c0$MY\xbef" 60*016e1eb9SFabian Mora kernelTable = Attribute.parse( 61*016e1eb9SFabian Mora '#gpu.kernel_table<[#gpu.kernel_metadata<"kernel", () -> ()>]>' 62*016e1eb9SFabian Mora ) 63*016e1eb9SFabian Mora o = gpu.ObjectAttr.get(target, format, object, kernels=kernelTable) 64*016e1eb9SFabian Mora # CHECK: #gpu.object<#nvvm.target, kernels = <[#gpu.kernel_metadata<"kernel", () -> ()>]>, "BC\C0\DE5\14\00\00\05\00\00\00b\0C0$MY\BEf"> 65*016e1eb9SFabian Mora print(o) 66*016e1eb9SFabian Mora assert o.kernels == kernelTable 67