1a13c715aSIngo Müller# RUN: %PYTHON %s | FileCheck %s 2a13c715aSIngo Müller 3a13c715aSIngo Müllerfrom mlir.ir import * 4a13c715aSIngo Müllerfrom mlir.dialects import transform 5a13c715aSIngo Müllerfrom mlir.dialects.transform import bufferization 692233062Smaxfrom mlir.dialects.bufferization import LayoutMapOption 7a13c715aSIngo Müller 8a13c715aSIngo Müller 9a13c715aSIngo Müllerdef run(f): 10a13c715aSIngo Müller with Context(), Location.unknown(): 11a13c715aSIngo Müller module = Module.create() 12a13c715aSIngo Müller with InsertionPoint(module.body): 13a13c715aSIngo Müller print("\nTEST:", f.__name__) 14a13c715aSIngo Müller f() 15a13c715aSIngo Müller print(module) 16a13c715aSIngo Müller return f 17a13c715aSIngo Müller 18a13c715aSIngo Müller 19a13c715aSIngo Müller@run 20a13c715aSIngo Müllerdef testEmptyTensorToAllocTensorOpCompact(): 21a13c715aSIngo Müller sequence = transform.SequenceOp( 2292233062Smax transform.FailurePropagationMode.Propagate, 23a13c715aSIngo Müller [], 24a13c715aSIngo Müller transform.OperationType.get("tensor.empty"), 25a13c715aSIngo Müller ) 26a13c715aSIngo Müller with InsertionPoint(sequence.body): 27a13c715aSIngo Müller bufferization.EmptyTensorToAllocTensorOp(sequence.bodyTarget) 28a13c715aSIngo Müller transform.YieldOp() 29a13c715aSIngo Müller # CHECK-LABEL: TEST: testEmptyTensorToAllocTensorOpCompact 30a13c715aSIngo Müller # CHECK: = transform.bufferization.empty_tensor_to_alloc_tensor 31a13c715aSIngo Müller # CHECK-SAME: (!transform.op<"tensor.empty">) -> !transform.op<"bufferization.alloc_tensor"> 32a13c715aSIngo Müller 33a13c715aSIngo Müller 34a13c715aSIngo Müller@run 35a13c715aSIngo Müllerdef testEmptyTensorToAllocTensorOpTyped(): 36a13c715aSIngo Müller sequence = transform.SequenceOp( 3792233062Smax transform.FailurePropagationMode.Propagate, 38a13c715aSIngo Müller [], 39a13c715aSIngo Müller transform.OperationType.get("tensor.empty"), 40a13c715aSIngo Müller ) 41a13c715aSIngo Müller with InsertionPoint(sequence.body): 42a13c715aSIngo Müller bufferization.EmptyTensorToAllocTensorOp( 43a13c715aSIngo Müller transform.OperationType.get("bufferization.alloc_tensor"), 44a13c715aSIngo Müller sequence.bodyTarget, 45a13c715aSIngo Müller ) 46a13c715aSIngo Müller transform.YieldOp() 47a13c715aSIngo Müller # CHECK-LABEL: TEST: testEmptyTensorToAllocTensorOpTyped 48a13c715aSIngo Müller # CHECK: = transform.bufferization.empty_tensor_to_alloc_tensor 49a13c715aSIngo Müller # CHECK-SAME: (!transform.op<"tensor.empty">) -> !transform.op<"bufferization.alloc_tensor"> 50a13c715aSIngo Müller 51a13c715aSIngo Müller 52a13c715aSIngo Müller@run 53a13c715aSIngo Müllerdef testOneShotBufferizeOpCompact(): 54a13c715aSIngo Müller sequence = transform.SequenceOp( 5592233062Smax transform.FailurePropagationMode.Propagate, [], transform.AnyOpType.get() 56a13c715aSIngo Müller ) 57a13c715aSIngo Müller with InsertionPoint(sequence.body): 58a13c715aSIngo Müller bufferization.OneShotBufferizeOp(sequence.bodyTarget) 59a13c715aSIngo Müller transform.YieldOp() 60a13c715aSIngo Müller # CHECK-LABEL: TEST: testOneShotBufferizeOpCompact 61a13c715aSIngo Müller # CHECK: = transform.bufferization.one_shot_bufferize 62a13c715aSIngo Müller # CHECK-SAME: (!transform.any_op) -> !transform.any_op 63a13c715aSIngo Müller 64a13c715aSIngo Müller 65a13c715aSIngo Müller@run 66a13c715aSIngo Müllerdef testOneShotBufferizeOpTyped(): 67a13c715aSIngo Müller sequence = transform.SequenceOp( 6892233062Smax transform.FailurePropagationMode.Propagate, [], transform.AnyOpType.get() 69a13c715aSIngo Müller ) 70a13c715aSIngo Müller with InsertionPoint(sequence.body): 71a13c715aSIngo Müller bufferization.OneShotBufferizeOp( 72a13c715aSIngo Müller transform.OperationType.get("test.dummy"), 73a13c715aSIngo Müller sequence.bodyTarget, 74a13c715aSIngo Müller ) 75a13c715aSIngo Müller transform.YieldOp() 76a13c715aSIngo Müller # CHECK-LABEL: TEST: testOneShotBufferizeOpTyped 77a13c715aSIngo Müller # CHECK: = transform.bufferization.one_shot_bufferize 78a13c715aSIngo Müller # CHECK-SAME: (!transform.any_op) -> !transform.op<"test.dummy"> 79a13c715aSIngo Müller 80a13c715aSIngo Müller 81a13c715aSIngo Müller@run 82a13c715aSIngo Müllerdef testOneShotBufferizeOpAttributes(): 83a13c715aSIngo Müller sequence = transform.SequenceOp( 8492233062Smax transform.FailurePropagationMode.Propagate, [], transform.AnyOpType.get() 85a13c715aSIngo Müller ) 86a13c715aSIngo Müller with InsertionPoint(sequence.body): 87a13c715aSIngo Müller bufferization.OneShotBufferizeOp( 88a13c715aSIngo Müller sequence.bodyTarget, 89*6bf043e7SMartin Erhart allow_return_allocs_from_loops=True, 90a13c715aSIngo Müller allow_unknown_ops=True, 91a13c715aSIngo Müller bufferize_function_boundaries=True, 9292233062Smax function_boundary_type_conversion=LayoutMapOption.IdentityLayoutMap, 93f0549017SIngo Müller memcpy_op="linalg.copy", 94a13c715aSIngo Müller print_conflicts=True, 95f0549017SIngo Müller test_analysis_only=True, 96a13c715aSIngo Müller ) 97a13c715aSIngo Müller transform.YieldOp() 98a13c715aSIngo Müller # CHECK-LABEL: TEST: testOneShotBufferizeOpAttributes 99a13c715aSIngo Müller # CHECK: = transform.bufferization.one_shot_bufferize 100f0549017SIngo Müller # CHECK-SAME: layout{IdentityLayoutMap} 101*6bf043e7SMartin Erhart # CHECK-SAME: allow_return_allocs_from_loops = true 102a13c715aSIngo Müller # CHECK-SAME: allow_unknown_ops = true 103a13c715aSIngo Müller # CHECK-SAME: bufferize_function_boundaries = true 104f0549017SIngo Müller # CHECK-SAME: memcpy_op = "linalg.copy" 105a13c715aSIngo Müller # CHECK-SAME: print_conflicts = true 106a13c715aSIngo Müller # CHECK-SAME: test_analysis_only = true 107a13c715aSIngo Müller # CHECK-SAME: (!transform.any_op) -> !transform.any_op 108