# RUN: %PYTHON %s | FileCheck %s from mlir.ir import * from mlir.dialects import transform from mlir.dialects.transform import gpu def run(f): with Context(), Location.unknown(): module = Module.create() with InsertionPoint(module.body): sequence = transform.SequenceOp( transform.FailurePropagationMode.Propagate, [], transform.AnyOpType.get(), ) with InsertionPoint(sequence.body): f(sequence.bodyTarget) transform.YieldOp() print("\nTEST:", f.__name__) print(module) return f @run def testMapForallToBlocksCompact(target): gpu.MapForallToBlocks(target) # CHECK-LABEL: TEST: testMapForallToBlocksCompact # CHECK: = transform.gpu.map_forall_to_blocks # CHECK-NOT: grid_dims # CHECK-SAME: (!transform.any_op) -> !transform.any_op # CHECK-NOT: grid_dims @run def testMapForallToBlocksTyped(target): gpu.MapForallToBlocks(transform.OperationType.get("test.dummy"), target) # CHECK-LABEL: TEST: testMapForallToBlocksTyped # CHECK: = transform.gpu.map_forall_to_blocks # CHECK-SAME: (!transform.any_op) -> !transform.op<"test.dummy"> @run def testMapForallToBlocksGridDims(target): gpu.MapForallToBlocks(target, grid_dims=[4, 2, 1]) # CHECK-LABEL: TEST: testMapForallToBlocksGridDims # CHECK: = transform.gpu.map_forall_to_blocks # CHECK-SAME: grid_dims = [4, 2, 1] # CHECK-SAME: (!transform.any_op) -> !transform.any_op @run def testMapNestedForallToThreadsCompact(target): gpu.MapNestedForallToThreads(target) # CHECK-LABEL: TEST: testMapNestedForallToThreadsCompact # CHECK: transform.gpu.map_nested_forall_to_threads # CHECK-SAME: block_dims = [] # CHECK-SAME: (!transform.any_op) -> !transform.any_op @run def testMapNestedForallToThreadsTyped(target): gpu.MapNestedForallToThreads(transform.OperationType.get("test.dummy"), target) # CHECK-LABEL: TEST: testMapNestedForallToThreadsTyped # CHECK: transform.gpu.map_nested_forall_to_threads # CHECK-SAME: block_dims = [] # CHECK-SAME: (!transform.any_op) -> !transform.op<"test.dummy"> @run def testMapNestedForallToThreadsAttributes(target): gpu.MapNestedForallToThreads( target, block_dims=[4, 2], warp_size=64, sync_after_distribute=False ) # CHECK-LABEL: TEST: testMapNestedForallToThreadsAttributes # CHECK: transform.gpu.map_nested_forall_to_threads # CHECK-SAME: block_dims = [4, 2] # CHECK-SAME: sync_after_distribute = false # CHECK-SAME: warp_size = 64