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