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