1# RUN: %PYTHON %s | FileCheck %s 2 3from mlir.ir import * 4import mlir.dialects.std as std 5import mlir.dialects.memref as memref 6 7def run(f): 8 print("\nTEST:", f.__name__) 9 f() 10 11# CHECK-LABEL: TEST: testSubViewAccessors 12def testSubViewAccessors(): 13 ctx = Context() 14 module = Module.parse(r""" 15 func @f1(%arg0: memref<?x?xf32>) { 16 %0 = constant 0 : index 17 %1 = constant 1 : index 18 %2 = constant 2 : index 19 %3 = constant 3 : index 20 %4 = constant 4 : index 21 %5 = constant 5 : index 22 memref.subview %arg0[%0, %1][%2, %3][%4, %5] : memref<?x?xf32> to memref<?x?xf32, offset: ?, strides: [?, ?]> 23 return 24 } 25 """, ctx) 26 func_body = module.body.operations[0].regions[0].blocks[0] 27 subview = func_body.operations[6] 28 29 assert subview.source == subview.operands[0] 30 assert len(subview.offsets) == 2 31 assert len(subview.sizes) == 2 32 assert len(subview.strides) == 2 33 assert subview.result == subview.results[0] 34 35 # CHECK: SubViewOp 36 print(type(subview).__name__) 37 38 # CHECK: constant 0 39 print(subview.offsets[0]) 40 # CHECK: constant 1 41 print(subview.offsets[1]) 42 # CHECK: constant 2 43 print(subview.sizes[0]) 44 # CHECK: constant 3 45 print(subview.sizes[1]) 46 # CHECK: constant 4 47 print(subview.strides[0]) 48 # CHECK: constant 5 49 print(subview.strides[1]) 50 51 52run(testSubViewAccessors) 53 54