19f3f6d7bSStella Laurenzo# RUN: %PYTHON %s | FileCheck %s 29f3f6d7bSStella Laurenzo 39f3f6d7bSStella Laurenzoimport gc 49f3f6d7bSStella Laurenzofrom mlir.ir import * 59f3f6d7bSStella Laurenzo 69f3f6d7bSStella Laurenzodef run(f): 79f3f6d7bSStella Laurenzo print("\nTEST:", f.__name__) 89f3f6d7bSStella Laurenzo f() 99f3f6d7bSStella Laurenzo gc.collect() 109f3f6d7bSStella Laurenzo assert Context._get_live_count() == 0 1178f2dae0SAlex Zinenko return f 129f3f6d7bSStella Laurenzo 139f3f6d7bSStella Laurenzo 149f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprCapsule 1578f2dae0SAlex Zinenko@run 169f3f6d7bSStella Laurenzodef testAffineExprCapsule(): 179f3f6d7bSStella Laurenzo with Context() as ctx: 189f3f6d7bSStella Laurenzo affine_expr = AffineExpr.get_constant(42) 199f3f6d7bSStella Laurenzo 209f3f6d7bSStella Laurenzo affine_expr_capsule = affine_expr._CAPIPtr 219f3f6d7bSStella Laurenzo # CHECK: capsule object 229f3f6d7bSStella Laurenzo # CHECK: mlir.ir.AffineExpr._CAPIPtr 239f3f6d7bSStella Laurenzo print(affine_expr_capsule) 249f3f6d7bSStella Laurenzo 259f3f6d7bSStella Laurenzo affine_expr_2 = AffineExpr._CAPICreate(affine_expr_capsule) 269f3f6d7bSStella Laurenzo assert affine_expr == affine_expr_2 279f3f6d7bSStella Laurenzo assert affine_expr_2.context == ctx 289f3f6d7bSStella Laurenzo 299f3f6d7bSStella Laurenzo 309f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprEq 3178f2dae0SAlex Zinenko@run 329f3f6d7bSStella Laurenzodef testAffineExprEq(): 339f3f6d7bSStella Laurenzo with Context(): 349f3f6d7bSStella Laurenzo a1 = AffineExpr.get_constant(42) 359f3f6d7bSStella Laurenzo a2 = AffineExpr.get_constant(42) 369f3f6d7bSStella Laurenzo a3 = AffineExpr.get_constant(43) 379f3f6d7bSStella Laurenzo # CHECK: True 389f3f6d7bSStella Laurenzo print(a1 == a1) 399f3f6d7bSStella Laurenzo # CHECK: True 409f3f6d7bSStella Laurenzo print(a1 == a2) 419f3f6d7bSStella Laurenzo # CHECK: False 429f3f6d7bSStella Laurenzo print(a1 == a3) 439f3f6d7bSStella Laurenzo # CHECK: False 449f3f6d7bSStella Laurenzo print(a1 == None) 459f3f6d7bSStella Laurenzo # CHECK: False 469f3f6d7bSStella Laurenzo print(a1 == "foo") 479f3f6d7bSStella Laurenzo 489f3f6d7bSStella Laurenzo 499f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprContext 5078f2dae0SAlex Zinenko@run 519f3f6d7bSStella Laurenzodef testAffineExprContext(): 529f3f6d7bSStella Laurenzo with Context(): 539f3f6d7bSStella Laurenzo a1 = AffineExpr.get_constant(42) 549f3f6d7bSStella Laurenzo with Context(): 559f3f6d7bSStella Laurenzo a2 = AffineExpr.get_constant(42) 569f3f6d7bSStella Laurenzo 579f3f6d7bSStella Laurenzo # CHECK: False 589f3f6d7bSStella Laurenzo print(a1 == a2) 599f3f6d7bSStella Laurenzo 609f3f6d7bSStella Laurenzorun(testAffineExprContext) 619f3f6d7bSStella Laurenzo 629f3f6d7bSStella Laurenzo 639f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprConstant 6478f2dae0SAlex Zinenko@run 659f3f6d7bSStella Laurenzodef testAffineExprConstant(): 669f3f6d7bSStella Laurenzo with Context(): 679f3f6d7bSStella Laurenzo a1 = AffineExpr.get_constant(42) 689f3f6d7bSStella Laurenzo # CHECK: 42 699f3f6d7bSStella Laurenzo print(a1.value) 709f3f6d7bSStella Laurenzo # CHECK: 42 719f3f6d7bSStella Laurenzo print(a1) 729f3f6d7bSStella Laurenzo 739f3f6d7bSStella Laurenzo a2 = AffineConstantExpr.get(42) 749f3f6d7bSStella Laurenzo # CHECK: 42 759f3f6d7bSStella Laurenzo print(a2.value) 769f3f6d7bSStella Laurenzo # CHECK: 42 779f3f6d7bSStella Laurenzo print(a2) 789f3f6d7bSStella Laurenzo 799f3f6d7bSStella Laurenzo assert a1 == a2 809f3f6d7bSStella Laurenzo 819f3f6d7bSStella Laurenzo 829f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprDim 8378f2dae0SAlex Zinenko@run 849f3f6d7bSStella Laurenzodef testAffineExprDim(): 859f3f6d7bSStella Laurenzo with Context(): 869f3f6d7bSStella Laurenzo d1 = AffineExpr.get_dim(1) 879f3f6d7bSStella Laurenzo d11 = AffineDimExpr.get(1) 889f3f6d7bSStella Laurenzo d2 = AffineDimExpr.get(2) 899f3f6d7bSStella Laurenzo 909f3f6d7bSStella Laurenzo # CHECK: 1 919f3f6d7bSStella Laurenzo print(d1.position) 929f3f6d7bSStella Laurenzo # CHECK: d1 939f3f6d7bSStella Laurenzo print(d1) 949f3f6d7bSStella Laurenzo 959f3f6d7bSStella Laurenzo # CHECK: 2 969f3f6d7bSStella Laurenzo print(d2.position) 979f3f6d7bSStella Laurenzo # CHECK: d2 989f3f6d7bSStella Laurenzo print(d2) 999f3f6d7bSStella Laurenzo 1009f3f6d7bSStella Laurenzo assert d1 == d11 1019f3f6d7bSStella Laurenzo assert d1 != d2 1029f3f6d7bSStella Laurenzo 1039f3f6d7bSStella Laurenzo 1049f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprSymbol 10578f2dae0SAlex Zinenko@run 1069f3f6d7bSStella Laurenzodef testAffineExprSymbol(): 1079f3f6d7bSStella Laurenzo with Context(): 1089f3f6d7bSStella Laurenzo s1 = AffineExpr.get_symbol(1) 1099f3f6d7bSStella Laurenzo s11 = AffineSymbolExpr.get(1) 1109f3f6d7bSStella Laurenzo s2 = AffineSymbolExpr.get(2) 1119f3f6d7bSStella Laurenzo 1129f3f6d7bSStella Laurenzo # CHECK: 1 1139f3f6d7bSStella Laurenzo print(s1.position) 1149f3f6d7bSStella Laurenzo # CHECK: s1 1159f3f6d7bSStella Laurenzo print(s1) 1169f3f6d7bSStella Laurenzo 1179f3f6d7bSStella Laurenzo # CHECK: 2 1189f3f6d7bSStella Laurenzo print(s2.position) 1199f3f6d7bSStella Laurenzo # CHEKC: s2 1209f3f6d7bSStella Laurenzo print(s2) 1219f3f6d7bSStella Laurenzo 1229f3f6d7bSStella Laurenzo assert s1 == s11 1239f3f6d7bSStella Laurenzo assert s1 != s2 1249f3f6d7bSStella Laurenzo 1259f3f6d7bSStella Laurenzo 1269f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineAddExpr 12778f2dae0SAlex Zinenko@run 1289f3f6d7bSStella Laurenzodef testAffineAddExpr(): 1299f3f6d7bSStella Laurenzo with Context(): 1309f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 1319f3f6d7bSStella Laurenzo d2 = AffineDimExpr.get(2) 1329f3f6d7bSStella Laurenzo d12 = AffineExpr.get_add(d1, d2) 1339f3f6d7bSStella Laurenzo # CHECK: d1 + d2 1349f3f6d7bSStella Laurenzo print(d12) 1359f3f6d7bSStella Laurenzo 1369f3f6d7bSStella Laurenzo d12op = d1 + d2 1379f3f6d7bSStella Laurenzo # CHECK: d1 + d2 1389f3f6d7bSStella Laurenzo print(d12op) 1399f3f6d7bSStella Laurenzo 140*fc7594ccSAlex Zinenko d1cst_op = d1 + 2 141*fc7594ccSAlex Zinenko # CHECK: d1 + 2 142*fc7594ccSAlex Zinenko print(d1cst_op) 143*fc7594ccSAlex Zinenko 144*fc7594ccSAlex Zinenko d1cst_op2 = 2 + d1 145*fc7594ccSAlex Zinenko # CHECK: d1 + 2 146*fc7594ccSAlex Zinenko print(d1cst_op2) 147*fc7594ccSAlex Zinenko 1489f3f6d7bSStella Laurenzo assert d12 == d12op 1499f3f6d7bSStella Laurenzo assert d12.lhs == d1 1509f3f6d7bSStella Laurenzo assert d12.rhs == d2 1519f3f6d7bSStella Laurenzo 1529f3f6d7bSStella Laurenzo 1539f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineMulExpr 15478f2dae0SAlex Zinenko@run 1559f3f6d7bSStella Laurenzodef testAffineMulExpr(): 1569f3f6d7bSStella Laurenzo with Context(): 1579f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 1589f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 1599f3f6d7bSStella Laurenzo expr = AffineExpr.get_mul(d1, c2) 1609f3f6d7bSStella Laurenzo # CHECK: d1 * 2 1619f3f6d7bSStella Laurenzo print(expr) 1629f3f6d7bSStella Laurenzo 1639f3f6d7bSStella Laurenzo # CHECK: d1 * 2 1649f3f6d7bSStella Laurenzo op = d1 * c2 1659f3f6d7bSStella Laurenzo print(op) 1669f3f6d7bSStella Laurenzo 167*fc7594ccSAlex Zinenko # CHECK: d1 * 2 168*fc7594ccSAlex Zinenko op_cst = d1 * 2 169*fc7594ccSAlex Zinenko print(op_cst) 170*fc7594ccSAlex Zinenko 171*fc7594ccSAlex Zinenko # CHECK: d1 * 2 172*fc7594ccSAlex Zinenko op_cst2 = 2 * d1 173*fc7594ccSAlex Zinenko print(op_cst2) 174*fc7594ccSAlex Zinenko 1759f3f6d7bSStella Laurenzo assert expr == op 176*fc7594ccSAlex Zinenko assert expr == op_cst 1779f3f6d7bSStella Laurenzo assert expr.lhs == d1 1789f3f6d7bSStella Laurenzo assert expr.rhs == c2 1799f3f6d7bSStella Laurenzo 1809f3f6d7bSStella Laurenzo 1819f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineModExpr 18278f2dae0SAlex Zinenko@run 1839f3f6d7bSStella Laurenzodef testAffineModExpr(): 1849f3f6d7bSStella Laurenzo with Context(): 1859f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 1869f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 1879f3f6d7bSStella Laurenzo expr = AffineExpr.get_mod(d1, c2) 1889f3f6d7bSStella Laurenzo # CHECK: d1 mod 2 1899f3f6d7bSStella Laurenzo print(expr) 1909f3f6d7bSStella Laurenzo 1919f3f6d7bSStella Laurenzo # CHECK: d1 mod 2 1929f3f6d7bSStella Laurenzo op = d1 % c2 1939f3f6d7bSStella Laurenzo print(op) 1949f3f6d7bSStella Laurenzo 195*fc7594ccSAlex Zinenko # CHECK: d1 mod 2 196*fc7594ccSAlex Zinenko op_cst = d1 % 2 197*fc7594ccSAlex Zinenko print(op_cst) 198*fc7594ccSAlex Zinenko 199*fc7594ccSAlex Zinenko # CHECK: 2 mod d1 200*fc7594ccSAlex Zinenko print(2 % d1) 201*fc7594ccSAlex Zinenko 2029f3f6d7bSStella Laurenzo assert expr == op 203*fc7594ccSAlex Zinenko assert expr == op_cst 2049f3f6d7bSStella Laurenzo assert expr.lhs == d1 2059f3f6d7bSStella Laurenzo assert expr.rhs == c2 2069f3f6d7bSStella Laurenzo 207*fc7594ccSAlex Zinenko expr2 = AffineExpr.get_mod(c2, d1) 208*fc7594ccSAlex Zinenko expr3 = AffineExpr.get_mod(2, d1) 209*fc7594ccSAlex Zinenko expr4 = AffineExpr.get_mod(d1, 2) 210*fc7594ccSAlex Zinenko 211*fc7594ccSAlex Zinenko # CHECK: 2 mod d1 212*fc7594ccSAlex Zinenko print(expr2) 213*fc7594ccSAlex Zinenko # CHECK: 2 mod d1 214*fc7594ccSAlex Zinenko print(expr3) 215*fc7594ccSAlex Zinenko # CHECK: d1 mod 2 216*fc7594ccSAlex Zinenko print(expr4) 217*fc7594ccSAlex Zinenko 218*fc7594ccSAlex Zinenko assert expr2 == expr3 219*fc7594ccSAlex Zinenko assert expr4 == expr 220*fc7594ccSAlex Zinenko 2219f3f6d7bSStella Laurenzo 2229f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineFloorDivExpr 22378f2dae0SAlex Zinenko@run 2249f3f6d7bSStella Laurenzodef testAffineFloorDivExpr(): 2259f3f6d7bSStella Laurenzo with Context(): 2269f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 2279f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 2289f3f6d7bSStella Laurenzo expr = AffineExpr.get_floor_div(d1, c2) 2299f3f6d7bSStella Laurenzo # CHECK: d1 floordiv 2 2309f3f6d7bSStella Laurenzo print(expr) 2319f3f6d7bSStella Laurenzo 2329f3f6d7bSStella Laurenzo assert expr.lhs == d1 2339f3f6d7bSStella Laurenzo assert expr.rhs == c2 2349f3f6d7bSStella Laurenzo 235*fc7594ccSAlex Zinenko expr2 = AffineExpr.get_floor_div(c2, d1) 236*fc7594ccSAlex Zinenko expr3 = AffineExpr.get_floor_div(2, d1) 237*fc7594ccSAlex Zinenko expr4 = AffineExpr.get_floor_div(d1, 2) 238*fc7594ccSAlex Zinenko 239*fc7594ccSAlex Zinenko # CHECK: 2 floordiv d1 240*fc7594ccSAlex Zinenko print(expr2) 241*fc7594ccSAlex Zinenko # CHECK: 2 floordiv d1 242*fc7594ccSAlex Zinenko print(expr3) 243*fc7594ccSAlex Zinenko # CHECK: d1 floordiv 2 244*fc7594ccSAlex Zinenko print(expr4) 245*fc7594ccSAlex Zinenko 246*fc7594ccSAlex Zinenko assert expr2 == expr3 247*fc7594ccSAlex Zinenko assert expr4 == expr 248*fc7594ccSAlex Zinenko 2499f3f6d7bSStella Laurenzo 2509f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineCeilDivExpr 25178f2dae0SAlex Zinenko@run 2529f3f6d7bSStella Laurenzodef testAffineCeilDivExpr(): 2539f3f6d7bSStella Laurenzo with Context(): 2549f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 2559f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 2569f3f6d7bSStella Laurenzo expr = AffineExpr.get_ceil_div(d1, c2) 2579f3f6d7bSStella Laurenzo # CHECK: d1 ceildiv 2 2589f3f6d7bSStella Laurenzo print(expr) 2599f3f6d7bSStella Laurenzo 2609f3f6d7bSStella Laurenzo assert expr.lhs == d1 2619f3f6d7bSStella Laurenzo assert expr.rhs == c2 2629f3f6d7bSStella Laurenzo 263*fc7594ccSAlex Zinenko expr2 = AffineExpr.get_ceil_div(c2, d1) 264*fc7594ccSAlex Zinenko expr3 = AffineExpr.get_ceil_div(2, d1) 265*fc7594ccSAlex Zinenko expr4 = AffineExpr.get_ceil_div(d1, 2) 266*fc7594ccSAlex Zinenko 267*fc7594ccSAlex Zinenko # CHECK: 2 ceildiv d1 268*fc7594ccSAlex Zinenko print(expr2) 269*fc7594ccSAlex Zinenko # CHECK: 2 ceildiv d1 270*fc7594ccSAlex Zinenko print(expr3) 271*fc7594ccSAlex Zinenko # CHECK: d1 ceildiv 2 272*fc7594ccSAlex Zinenko print(expr4) 273*fc7594ccSAlex Zinenko 274*fc7594ccSAlex Zinenko assert expr2 == expr3 275*fc7594ccSAlex Zinenko assert expr4 == expr 276*fc7594ccSAlex Zinenko 2779f3f6d7bSStella Laurenzo 2789f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprSub 27978f2dae0SAlex Zinenko@run 2809f3f6d7bSStella Laurenzodef testAffineExprSub(): 2819f3f6d7bSStella Laurenzo with Context(): 2829f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 2839f3f6d7bSStella Laurenzo d2 = AffineDimExpr.get(2) 2849f3f6d7bSStella Laurenzo expr = d1 - d2 2859f3f6d7bSStella Laurenzo # CHECK: d1 - d2 2869f3f6d7bSStella Laurenzo print(expr) 2879f3f6d7bSStella Laurenzo 2889f3f6d7bSStella Laurenzo assert expr.lhs == d1 2899f3f6d7bSStella Laurenzo rhs = AffineMulExpr(expr.rhs) 2909f3f6d7bSStella Laurenzo # CHECK: d2 2919f3f6d7bSStella Laurenzo print(rhs.lhs) 2929f3f6d7bSStella Laurenzo # CHECK: -1 2939f3f6d7bSStella Laurenzo print(rhs.rhs) 2949f3f6d7bSStella Laurenzo 295*fc7594ccSAlex Zinenko # CHECK: d1 - 42 296*fc7594ccSAlex Zinenko print(d1 - 42) 297*fc7594ccSAlex Zinenko # CHECK: -d1 + 42 298*fc7594ccSAlex Zinenko print(42 - d1) 299*fc7594ccSAlex Zinenko 300*fc7594ccSAlex Zinenko c42 = AffineConstantExpr.get(42) 301*fc7594ccSAlex Zinenko assert d1 - 42 == d1 - c42 302*fc7594ccSAlex Zinenko assert 42 - d1 == c42 - d1 303*fc7594ccSAlex Zinenko 30478f2dae0SAlex Zinenko# CHECK-LABEL: TEST: testClassHierarchy 30578f2dae0SAlex Zinenko@run 3069f3f6d7bSStella Laurenzodef testClassHierarchy(): 3079f3f6d7bSStella Laurenzo with Context(): 3089f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 3099f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 3109f3f6d7bSStella Laurenzo add = AffineAddExpr.get(d1, c2) 3119f3f6d7bSStella Laurenzo mul = AffineMulExpr.get(d1, c2) 3129f3f6d7bSStella Laurenzo mod = AffineModExpr.get(d1, c2) 3139f3f6d7bSStella Laurenzo floor_div = AffineFloorDivExpr.get(d1, c2) 3149f3f6d7bSStella Laurenzo ceil_div = AffineCeilDivExpr.get(d1, c2) 3159f3f6d7bSStella Laurenzo 3169f3f6d7bSStella Laurenzo # CHECK: False 3179f3f6d7bSStella Laurenzo print(isinstance(d1, AffineBinaryExpr)) 3189f3f6d7bSStella Laurenzo # CHECK: False 3199f3f6d7bSStella Laurenzo print(isinstance(c2, AffineBinaryExpr)) 3209f3f6d7bSStella Laurenzo # CHECK: True 3219f3f6d7bSStella Laurenzo print(isinstance(add, AffineBinaryExpr)) 3229f3f6d7bSStella Laurenzo # CHECK: True 3239f3f6d7bSStella Laurenzo print(isinstance(mul, AffineBinaryExpr)) 3249f3f6d7bSStella Laurenzo # CHECK: True 3259f3f6d7bSStella Laurenzo print(isinstance(mod, AffineBinaryExpr)) 3269f3f6d7bSStella Laurenzo # CHECK: True 3279f3f6d7bSStella Laurenzo print(isinstance(floor_div, AffineBinaryExpr)) 3289f3f6d7bSStella Laurenzo # CHECK: True 3299f3f6d7bSStella Laurenzo print(isinstance(ceil_div, AffineBinaryExpr)) 3309f3f6d7bSStella Laurenzo 3319f3f6d7bSStella Laurenzo try: 3329f3f6d7bSStella Laurenzo AffineBinaryExpr(d1) 3339f3f6d7bSStella Laurenzo except ValueError as e: 3349f3f6d7bSStella Laurenzo # CHECK: Cannot cast affine expression to AffineBinaryExpr 3359f3f6d7bSStella Laurenzo print(e) 3369f3f6d7bSStella Laurenzo 3379f3f6d7bSStella Laurenzo try: 3389f3f6d7bSStella Laurenzo AffineBinaryExpr(c2) 3399f3f6d7bSStella Laurenzo except ValueError as e: 3409f3f6d7bSStella Laurenzo # CHECK: Cannot cast affine expression to AffineBinaryExpr 3419f3f6d7bSStella Laurenzo print(e) 3429f3f6d7bSStella Laurenzo 34378f2dae0SAlex Zinenko# CHECK-LABEL: TEST: testIsInstance 34478f2dae0SAlex Zinenko@run 34578f2dae0SAlex Zinenkodef testIsInstance(): 34678f2dae0SAlex Zinenko with Context(): 34778f2dae0SAlex Zinenko d1 = AffineDimExpr.get(1) 34878f2dae0SAlex Zinenko c2 = AffineConstantExpr.get(2) 34978f2dae0SAlex Zinenko add = AffineAddExpr.get(d1, c2) 35078f2dae0SAlex Zinenko mul = AffineMulExpr.get(d1, c2) 35178f2dae0SAlex Zinenko 35278f2dae0SAlex Zinenko # CHECK: True 35378f2dae0SAlex Zinenko print(AffineDimExpr.isinstance(d1)) 35478f2dae0SAlex Zinenko # CHECK: False 35578f2dae0SAlex Zinenko print(AffineConstantExpr.isinstance(d1)) 35678f2dae0SAlex Zinenko # CHECK: True 35778f2dae0SAlex Zinenko print(AffineConstantExpr.isinstance(c2)) 35878f2dae0SAlex Zinenko # CHECK: False 35978f2dae0SAlex Zinenko print(AffineMulExpr.isinstance(c2)) 36078f2dae0SAlex Zinenko # CHECK: True 36178f2dae0SAlex Zinenko print(AffineAddExpr.isinstance(add)) 36278f2dae0SAlex Zinenko # CHECK: False 36378f2dae0SAlex Zinenko print(AffineMulExpr.isinstance(add)) 36478f2dae0SAlex Zinenko # CHECK: True 36578f2dae0SAlex Zinenko print(AffineMulExpr.isinstance(mul)) 36678f2dae0SAlex Zinenko # CHECK: False 36778f2dae0SAlex Zinenko print(AffineAddExpr.isinstance(mul)) 368*fc7594ccSAlex Zinenko 369*fc7594ccSAlex Zinenko 370*fc7594ccSAlex Zinenko# CHECK-LABEL: TEST: testCompose 371*fc7594ccSAlex Zinenko@run 372*fc7594ccSAlex Zinenkodef testCompose(): 373*fc7594ccSAlex Zinenko with Context(): 374*fc7594ccSAlex Zinenko # d0 + d2. 375*fc7594ccSAlex Zinenko expr = AffineAddExpr.get(AffineDimExpr.get(0), AffineDimExpr.get(2)) 376*fc7594ccSAlex Zinenko 377*fc7594ccSAlex Zinenko # (d0, d1, d2)[s0, s1] -> (d0 + s1, d1 + s0, d0 + d1 + d2) 378*fc7594ccSAlex Zinenko map1 = AffineAddExpr.get(AffineDimExpr.get(0), AffineSymbolExpr.get(1)) 379*fc7594ccSAlex Zinenko map2 = AffineAddExpr.get(AffineDimExpr.get(1), AffineSymbolExpr.get(0)) 380*fc7594ccSAlex Zinenko map3 = AffineAddExpr.get( 381*fc7594ccSAlex Zinenko AffineAddExpr.get(AffineDimExpr.get(0), AffineDimExpr.get(1)), 382*fc7594ccSAlex Zinenko AffineDimExpr.get(2)) 383*fc7594ccSAlex Zinenko map = AffineMap.get(3, 2, [map1, map2, map3]) 384*fc7594ccSAlex Zinenko 385*fc7594ccSAlex Zinenko # CHECK: d0 + s1 + d0 + d1 + d2 386*fc7594ccSAlex Zinenko print(expr.compose(map)) 387*fc7594ccSAlex Zinenko 388*fc7594ccSAlex Zinenko 389*fc7594ccSAlex Zinenko# CHECK-LABEL: TEST: testHash 390*fc7594ccSAlex Zinenko@run 391*fc7594ccSAlex Zinenkodef testHash(): 392*fc7594ccSAlex Zinenko with Context(): 393*fc7594ccSAlex Zinenko d0 = AffineDimExpr.get(0) 394*fc7594ccSAlex Zinenko s1 = AffineSymbolExpr.get(1) 395*fc7594ccSAlex Zinenko assert hash(d0) == hash(AffineDimExpr.get(0)) 396*fc7594ccSAlex Zinenko assert hash(d0 + s1) == hash(AffineAddExpr.get(d0, s1)) 397*fc7594ccSAlex Zinenko 398*fc7594ccSAlex Zinenko dictionary = dict() 399*fc7594ccSAlex Zinenko dictionary[d0] = 0 400*fc7594ccSAlex Zinenko dictionary[s1] = 1 401*fc7594ccSAlex Zinenko assert d0 in dictionary 402*fc7594ccSAlex Zinenko assert s1 in dictionary 403