xref: /llvm-project/mlir/test/python/dialects/shape.py (revision f9008e6366c2496b1ca1785b891d5578174ad63e)
13f2891dbSJacques Pienaar# RUN: %PYTHON %s | FileCheck %s
23f2891dbSJacques Pienaar
33f2891dbSJacques Pienaarfrom mlir.ir import *
43f2891dbSJacques Pienaarimport numpy as np
536550692SRiver Riddleimport mlir.dialects.func as func
63f2891dbSJacques Pienaarimport mlir.dialects.shape as shape
73f2891dbSJacques Pienaar
83f2891dbSJacques Pienaar
93f2891dbSJacques Pienaardef run(f):
103f2891dbSJacques Pienaar    print("\nTEST:", f.__name__)
113f2891dbSJacques Pienaar    f()
123f2891dbSJacques Pienaar    return f
133f2891dbSJacques Pienaar
143f2891dbSJacques Pienaar
153f2891dbSJacques Pienaar# CHECK-LABEL: TEST: testConstShape
163f2891dbSJacques Pienaar@run
173f2891dbSJacques Pienaardef testConstShape():
183f2891dbSJacques Pienaar    with Context() as ctx, Location.unknown():
193f2891dbSJacques Pienaar        module = Module.create()
203f2891dbSJacques Pienaar        f32 = F32Type.get()
213f2891dbSJacques Pienaar        with InsertionPoint(module.body):
22*f9008e63STobias Hieta
2336550692SRiver Riddle            @func.FuncOp.from_py_func(
24*f9008e63STobias Hieta                RankedTensorType.get((12, ShapedType.get_dynamic_size()), f32)
25*f9008e63STobias Hieta            )
263f2891dbSJacques Pienaar            def const_shape_tensor(arg):
27b57acb9aSJacques Pienaar                shape.ConstWitnessOp(False)
28b57acb9aSJacques Pienaar                shape.ConstSizeOp(30)
29b57acb9aSJacques Pienaar                shape.ConstSizeOp(IntegerAttr.get(IndexType.get(), 40))
3016a776ffSJacques Pienaar                x = shape.ConstShapeOp([1, 2])
3116a776ffSJacques Pienaar                shape.MeetOp(x, x, error="impossible")
32ace1d0adSStella Laurenzo                return shape.ConstShapeOp(
33b57acb9aSJacques Pienaar                    DenseElementsAttr.get(
34*f9008e63STobias Hieta                        np.array([3, 4], dtype=np.int64), type=IndexType.get()
35*f9008e63STobias Hieta                    )
36*f9008e63STobias Hieta                )
3716a776ffSJacques Pienaar
383f2891dbSJacques Pienaar        # CHECK-LABEL: func @const_shape_tensor(%arg0: tensor<12x?xf32>)
39b57acb9aSJacques Pienaar        # CHECK-DAG: shape.const_witness false
40b57acb9aSJacques Pienaar        # CHECK-DAG: shape.const_size 30
41b57acb9aSJacques Pienaar        # CHECK-DAG: shape.const_size 40
42b57acb9aSJacques Pienaar        # CHECK-DAG: shape.const_shape [1, 2] : tensor<2xindex>
43b57acb9aSJacques Pienaar        # CHECK-DAG: shape.const_shape [3, 4] : tensor<2xindex>
443f2891dbSJacques Pienaar        print(module)
45