14cd1b66dSMatthias Springer# RUN: %PYTHON %s | FileCheck %s 24cd1b66dSMatthias Springer 34cd1b66dSMatthias Springerfrom mlir.ir import * 44cd1b66dSMatthias Springerimport mlir.dialects.builtin as builtin 523aa5a74SRiver Riddleimport mlir.dialects.func as func 64cd1b66dSMatthias Springerimport mlir.dialects.vector as vector 74cd1b66dSMatthias Springer 84cd1b66dSMatthias Springerdef run(f): 94cd1b66dSMatthias Springer print("\nTEST:", f.__name__) 106981e5ecSAlex Zinenko with Context(), Location.unknown(): 114cd1b66dSMatthias Springer f() 126981e5ecSAlex Zinenko return f 134cd1b66dSMatthias Springer 144cd1b66dSMatthias Springer# CHECK-LABEL: TEST: testPrintOp 154cd1b66dSMatthias Springer@run 164cd1b66dSMatthias Springerdef testPrintOp(): 174cd1b66dSMatthias Springer module = Module.create() 184cd1b66dSMatthias Springer with InsertionPoint(module.body): 196981e5ecSAlex Zinenko 2036550692SRiver Riddle @func.FuncOp.from_py_func(VectorType.get((12, 5), F32Type.get())) 214cd1b66dSMatthias Springer def print_vector(arg): 224cd1b66dSMatthias Springer return vector.PrintOp(arg) 234cd1b66dSMatthias Springer 244cd1b66dSMatthias Springer # CHECK-LABEL: func @print_vector( 254cd1b66dSMatthias Springer # CHECK-SAME: %[[ARG:.*]]: vector<12x5xf32>) { 264cd1b66dSMatthias Springer # CHECK: vector.print %[[ARG]] : vector<12x5xf32> 274cd1b66dSMatthias Springer # CHECK: return 284cd1b66dSMatthias Springer # CHECK: } 294cd1b66dSMatthias Springer print(module) 306981e5ecSAlex Zinenko 316981e5ecSAlex Zinenko 326981e5ecSAlex Zinenko# CHECK-LABEL: TEST: testTransferReadOp 336981e5ecSAlex Zinenko@run 346981e5ecSAlex Zinenkodef testTransferReadOp(): 356981e5ecSAlex Zinenko module = Module.create() 366981e5ecSAlex Zinenko with InsertionPoint(module.body): 376981e5ecSAlex Zinenko vector_type = VectorType.get([2, 3], F32Type.get()) 386981e5ecSAlex Zinenko memref_type = MemRefType.get([-1, -1], F32Type.get()) 396981e5ecSAlex Zinenko index_type = IndexType.get() 406981e5ecSAlex Zinenko mask_type = VectorType.get(vector_type.shape, IntegerType.get_signless(1)) 416981e5ecSAlex Zinenko identity_map = AffineMap.get_identity(vector_type.rank) 426981e5ecSAlex Zinenko identity_map_attr = AffineMapAttr.get(identity_map) 4336550692SRiver Riddle f = func.FuncOp("transfer_read", 446981e5ecSAlex Zinenko ([memref_type, index_type, 456981e5ecSAlex Zinenko F32Type.get(), mask_type], [])) 4623aa5a74SRiver Riddle with InsertionPoint(f.add_entry_block()): 4723aa5a74SRiver Riddle A, zero, padding, mask = f.arguments 486981e5ecSAlex Zinenko vector.TransferReadOp(vector_type, A, [zero, zero], identity_map_attr, 49*9b79f50bSJeremy Furtek padding, mask=mask) 506981e5ecSAlex Zinenko vector.TransferReadOp(vector_type, A, [zero, zero], identity_map_attr, 51*9b79f50bSJeremy Furtek padding) 5223aa5a74SRiver Riddle func.ReturnOp([]) 536981e5ecSAlex Zinenko 546981e5ecSAlex Zinenko # CHECK: @transfer_read(%[[MEM:.*]]: memref<?x?xf32>, %[[IDX:.*]]: index, 556981e5ecSAlex Zinenko # CHECK: %[[PAD:.*]]: f32, %[[MASK:.*]]: vector<2x3xi1>) 566981e5ecSAlex Zinenko # CHECK: vector.transfer_read %[[MEM]][%[[IDX]], %[[IDX]]], %[[PAD]], %[[MASK]] 576981e5ecSAlex Zinenko # CHECK: vector.transfer_read %[[MEM]][%[[IDX]], %[[IDX]]], %[[PAD]] 586981e5ecSAlex Zinenko # CHECK-NOT: %[[MASK]] 596981e5ecSAlex Zinenko print(module) 60