19f3f6d7bSStella Laurenzo# RUN: %PYTHON %s | FileCheck %s 29f3f6d7bSStella Laurenzo 39f3f6d7bSStella Laurenzoimport gc 49f3f6d7bSStella Laurenzofrom mlir.ir import * 59f3f6d7bSStella Laurenzo 6f9008e63STobias Hieta 79f3f6d7bSStella Laurenzodef run(f): 89f3f6d7bSStella Laurenzo print("\nTEST:", f.__name__) 99f3f6d7bSStella Laurenzo f() 109f3f6d7bSStella Laurenzo gc.collect() 119f3f6d7bSStella Laurenzo assert Context._get_live_count() == 0 1278f2dae0SAlex Zinenko return f 139f3f6d7bSStella Laurenzo 149f3f6d7bSStella Laurenzo 159f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprCapsule 1678f2dae0SAlex Zinenko@run 179f3f6d7bSStella Laurenzodef testAffineExprCapsule(): 189f3f6d7bSStella Laurenzo with Context() as ctx: 199f3f6d7bSStella Laurenzo affine_expr = AffineExpr.get_constant(42) 209f3f6d7bSStella Laurenzo 219f3f6d7bSStella Laurenzo affine_expr_capsule = affine_expr._CAPIPtr 229f3f6d7bSStella Laurenzo # CHECK: capsule object 239f3f6d7bSStella Laurenzo # CHECK: mlir.ir.AffineExpr._CAPIPtr 249f3f6d7bSStella Laurenzo print(affine_expr_capsule) 259f3f6d7bSStella Laurenzo 269f3f6d7bSStella Laurenzo affine_expr_2 = AffineExpr._CAPICreate(affine_expr_capsule) 279f3f6d7bSStella Laurenzo assert affine_expr == affine_expr_2 289f3f6d7bSStella Laurenzo assert affine_expr_2.context == ctx 299f3f6d7bSStella Laurenzo 309f3f6d7bSStella Laurenzo 319f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprEq 3278f2dae0SAlex Zinenko@run 339f3f6d7bSStella Laurenzodef testAffineExprEq(): 349f3f6d7bSStella Laurenzo with Context(): 359f3f6d7bSStella Laurenzo a1 = AffineExpr.get_constant(42) 369f3f6d7bSStella Laurenzo a2 = AffineExpr.get_constant(42) 379f3f6d7bSStella Laurenzo a3 = AffineExpr.get_constant(43) 389f3f6d7bSStella Laurenzo # CHECK: True 399f3f6d7bSStella Laurenzo print(a1 == a1) 409f3f6d7bSStella Laurenzo # CHECK: True 419f3f6d7bSStella Laurenzo print(a1 == a2) 429f3f6d7bSStella Laurenzo # CHECK: False 439f3f6d7bSStella Laurenzo print(a1 == a3) 449f3f6d7bSStella Laurenzo # CHECK: False 45*fd45dccaSEisuke Kawashima print(a1 is None) 469f3f6d7bSStella Laurenzo # CHECK: False 479f3f6d7bSStella Laurenzo print(a1 == "foo") 489f3f6d7bSStella Laurenzo 499f3f6d7bSStella Laurenzo 509f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprContext 5178f2dae0SAlex Zinenko@run 529f3f6d7bSStella Laurenzodef testAffineExprContext(): 539f3f6d7bSStella Laurenzo with Context(): 549f3f6d7bSStella Laurenzo a1 = AffineExpr.get_constant(42) 559f3f6d7bSStella Laurenzo with Context(): 569f3f6d7bSStella Laurenzo a2 = AffineExpr.get_constant(42) 579f3f6d7bSStella Laurenzo 589f3f6d7bSStella Laurenzo # CHECK: False 599f3f6d7bSStella Laurenzo print(a1 == a2) 609f3f6d7bSStella Laurenzo 61f9008e63STobias Hieta 629f3f6d7bSStella Laurenzorun(testAffineExprContext) 639f3f6d7bSStella Laurenzo 649f3f6d7bSStella Laurenzo 659f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprConstant 6678f2dae0SAlex Zinenko@run 679f3f6d7bSStella Laurenzodef testAffineExprConstant(): 689f3f6d7bSStella Laurenzo with Context(): 699f3f6d7bSStella Laurenzo a1 = AffineExpr.get_constant(42) 709f3f6d7bSStella Laurenzo # CHECK: 42 719f3f6d7bSStella Laurenzo print(a1.value) 729f3f6d7bSStella Laurenzo # CHECK: 42 739f3f6d7bSStella Laurenzo print(a1) 749f3f6d7bSStella Laurenzo 759f3f6d7bSStella Laurenzo a2 = AffineConstantExpr.get(42) 769f3f6d7bSStella Laurenzo # CHECK: 42 779f3f6d7bSStella Laurenzo print(a2.value) 789f3f6d7bSStella Laurenzo # CHECK: 42 799f3f6d7bSStella Laurenzo print(a2) 809f3f6d7bSStella Laurenzo 819f3f6d7bSStella Laurenzo assert a1 == a2 829f3f6d7bSStella Laurenzo 839f3f6d7bSStella Laurenzo 849f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprDim 8578f2dae0SAlex Zinenko@run 869f3f6d7bSStella Laurenzodef testAffineExprDim(): 879f3f6d7bSStella Laurenzo with Context(): 889f3f6d7bSStella Laurenzo d1 = AffineExpr.get_dim(1) 899f3f6d7bSStella Laurenzo d11 = AffineDimExpr.get(1) 909f3f6d7bSStella Laurenzo d2 = AffineDimExpr.get(2) 919f3f6d7bSStella Laurenzo 929f3f6d7bSStella Laurenzo # CHECK: 1 939f3f6d7bSStella Laurenzo print(d1.position) 949f3f6d7bSStella Laurenzo # CHECK: d1 959f3f6d7bSStella Laurenzo print(d1) 969f3f6d7bSStella Laurenzo 979f3f6d7bSStella Laurenzo # CHECK: 2 989f3f6d7bSStella Laurenzo print(d2.position) 999f3f6d7bSStella Laurenzo # CHECK: d2 1009f3f6d7bSStella Laurenzo print(d2) 1019f3f6d7bSStella Laurenzo 1029f3f6d7bSStella Laurenzo assert d1 == d11 1039f3f6d7bSStella Laurenzo assert d1 != d2 1049f3f6d7bSStella Laurenzo 1059f3f6d7bSStella Laurenzo 1069f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprSymbol 10778f2dae0SAlex Zinenko@run 1089f3f6d7bSStella Laurenzodef testAffineExprSymbol(): 1099f3f6d7bSStella Laurenzo with Context(): 1109f3f6d7bSStella Laurenzo s1 = AffineExpr.get_symbol(1) 1119f3f6d7bSStella Laurenzo s11 = AffineSymbolExpr.get(1) 1129f3f6d7bSStella Laurenzo s2 = AffineSymbolExpr.get(2) 1139f3f6d7bSStella Laurenzo 1149f3f6d7bSStella Laurenzo # CHECK: 1 1159f3f6d7bSStella Laurenzo print(s1.position) 1169f3f6d7bSStella Laurenzo # CHECK: s1 1179f3f6d7bSStella Laurenzo print(s1) 1189f3f6d7bSStella Laurenzo 1199f3f6d7bSStella Laurenzo # CHECK: 2 1209f3f6d7bSStella Laurenzo print(s2.position) 121a7fa5febSZequan Wu # CHECK: s2 1229f3f6d7bSStella Laurenzo print(s2) 1239f3f6d7bSStella Laurenzo 1249f3f6d7bSStella Laurenzo assert s1 == s11 1259f3f6d7bSStella Laurenzo assert s1 != s2 1269f3f6d7bSStella Laurenzo 1279f3f6d7bSStella Laurenzo 1289f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineAddExpr 12978f2dae0SAlex Zinenko@run 1309f3f6d7bSStella Laurenzodef testAffineAddExpr(): 1319f3f6d7bSStella Laurenzo with Context(): 1329f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 1339f3f6d7bSStella Laurenzo d2 = AffineDimExpr.get(2) 1349f3f6d7bSStella Laurenzo d12 = AffineExpr.get_add(d1, d2) 1359f3f6d7bSStella Laurenzo # CHECK: d1 + d2 1369f3f6d7bSStella Laurenzo print(d12) 1379f3f6d7bSStella Laurenzo 1389f3f6d7bSStella Laurenzo d12op = d1 + d2 1399f3f6d7bSStella Laurenzo # CHECK: d1 + d2 1409f3f6d7bSStella Laurenzo print(d12op) 1419f3f6d7bSStella Laurenzo 142fc7594ccSAlex Zinenko d1cst_op = d1 + 2 143fc7594ccSAlex Zinenko # CHECK: d1 + 2 144fc7594ccSAlex Zinenko print(d1cst_op) 145fc7594ccSAlex Zinenko 146fc7594ccSAlex Zinenko d1cst_op2 = 2 + d1 147fc7594ccSAlex Zinenko # CHECK: d1 + 2 148fc7594ccSAlex Zinenko print(d1cst_op2) 149fc7594ccSAlex Zinenko 1509f3f6d7bSStella Laurenzo assert d12 == d12op 1519f3f6d7bSStella Laurenzo assert d12.lhs == d1 1529f3f6d7bSStella Laurenzo assert d12.rhs == d2 1539f3f6d7bSStella Laurenzo 1549f3f6d7bSStella Laurenzo 1559f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineMulExpr 15678f2dae0SAlex Zinenko@run 1579f3f6d7bSStella Laurenzodef testAffineMulExpr(): 1589f3f6d7bSStella Laurenzo with Context(): 1599f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 1609f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 1619f3f6d7bSStella Laurenzo expr = AffineExpr.get_mul(d1, c2) 1629f3f6d7bSStella Laurenzo # CHECK: d1 * 2 1639f3f6d7bSStella Laurenzo print(expr) 1649f3f6d7bSStella Laurenzo 1659f3f6d7bSStella Laurenzo # CHECK: d1 * 2 1669f3f6d7bSStella Laurenzo op = d1 * c2 1679f3f6d7bSStella Laurenzo print(op) 1689f3f6d7bSStella Laurenzo 169fc7594ccSAlex Zinenko # CHECK: d1 * 2 170fc7594ccSAlex Zinenko op_cst = d1 * 2 171fc7594ccSAlex Zinenko print(op_cst) 172fc7594ccSAlex Zinenko 173fc7594ccSAlex Zinenko # CHECK: d1 * 2 174fc7594ccSAlex Zinenko op_cst2 = 2 * d1 175fc7594ccSAlex Zinenko print(op_cst2) 176fc7594ccSAlex Zinenko 1779f3f6d7bSStella Laurenzo assert expr == op 178fc7594ccSAlex Zinenko assert expr == op_cst 1799f3f6d7bSStella Laurenzo assert expr.lhs == d1 1809f3f6d7bSStella Laurenzo assert expr.rhs == c2 1819f3f6d7bSStella Laurenzo 1829f3f6d7bSStella Laurenzo 1839f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineModExpr 18478f2dae0SAlex Zinenko@run 1859f3f6d7bSStella Laurenzodef testAffineModExpr(): 1869f3f6d7bSStella Laurenzo with Context(): 1879f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 1889f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 1899f3f6d7bSStella Laurenzo expr = AffineExpr.get_mod(d1, c2) 1909f3f6d7bSStella Laurenzo # CHECK: d1 mod 2 1919f3f6d7bSStella Laurenzo print(expr) 1929f3f6d7bSStella Laurenzo 1939f3f6d7bSStella Laurenzo # CHECK: d1 mod 2 1949f3f6d7bSStella Laurenzo op = d1 % c2 1959f3f6d7bSStella Laurenzo print(op) 1969f3f6d7bSStella Laurenzo 197fc7594ccSAlex Zinenko # CHECK: d1 mod 2 198fc7594ccSAlex Zinenko op_cst = d1 % 2 199fc7594ccSAlex Zinenko print(op_cst) 200fc7594ccSAlex Zinenko 201fc7594ccSAlex Zinenko # CHECK: 2 mod d1 202fc7594ccSAlex Zinenko print(2 % d1) 203fc7594ccSAlex Zinenko 2049f3f6d7bSStella Laurenzo assert expr == op 205fc7594ccSAlex Zinenko assert expr == op_cst 2069f3f6d7bSStella Laurenzo assert expr.lhs == d1 2079f3f6d7bSStella Laurenzo assert expr.rhs == c2 2089f3f6d7bSStella Laurenzo 209fc7594ccSAlex Zinenko expr2 = AffineExpr.get_mod(c2, d1) 210fc7594ccSAlex Zinenko expr3 = AffineExpr.get_mod(2, d1) 211fc7594ccSAlex Zinenko expr4 = AffineExpr.get_mod(d1, 2) 212fc7594ccSAlex Zinenko 213fc7594ccSAlex Zinenko # CHECK: 2 mod d1 214fc7594ccSAlex Zinenko print(expr2) 215fc7594ccSAlex Zinenko # CHECK: 2 mod d1 216fc7594ccSAlex Zinenko print(expr3) 217fc7594ccSAlex Zinenko # CHECK: d1 mod 2 218fc7594ccSAlex Zinenko print(expr4) 219fc7594ccSAlex Zinenko 220fc7594ccSAlex Zinenko assert expr2 == expr3 221fc7594ccSAlex Zinenko assert expr4 == expr 222fc7594ccSAlex Zinenko 2239f3f6d7bSStella Laurenzo 2249f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineFloorDivExpr 22578f2dae0SAlex Zinenko@run 2269f3f6d7bSStella Laurenzodef testAffineFloorDivExpr(): 2279f3f6d7bSStella Laurenzo with Context(): 2289f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 2299f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 2309f3f6d7bSStella Laurenzo expr = AffineExpr.get_floor_div(d1, c2) 2319f3f6d7bSStella Laurenzo # CHECK: d1 floordiv 2 2329f3f6d7bSStella Laurenzo print(expr) 2339f3f6d7bSStella Laurenzo 2349f3f6d7bSStella Laurenzo assert expr.lhs == d1 2359f3f6d7bSStella Laurenzo assert expr.rhs == c2 2369f3f6d7bSStella Laurenzo 237fc7594ccSAlex Zinenko expr2 = AffineExpr.get_floor_div(c2, d1) 238fc7594ccSAlex Zinenko expr3 = AffineExpr.get_floor_div(2, d1) 239fc7594ccSAlex Zinenko expr4 = AffineExpr.get_floor_div(d1, 2) 240fc7594ccSAlex Zinenko 241fc7594ccSAlex Zinenko # CHECK: 2 floordiv d1 242fc7594ccSAlex Zinenko print(expr2) 243fc7594ccSAlex Zinenko # CHECK: 2 floordiv d1 244fc7594ccSAlex Zinenko print(expr3) 245fc7594ccSAlex Zinenko # CHECK: d1 floordiv 2 246fc7594ccSAlex Zinenko print(expr4) 247fc7594ccSAlex Zinenko 248fc7594ccSAlex Zinenko assert expr2 == expr3 249fc7594ccSAlex Zinenko assert expr4 == expr 250fc7594ccSAlex Zinenko 2519f3f6d7bSStella Laurenzo 2529f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineCeilDivExpr 25378f2dae0SAlex Zinenko@run 2549f3f6d7bSStella Laurenzodef testAffineCeilDivExpr(): 2559f3f6d7bSStella Laurenzo with Context(): 2569f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 2579f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 2589f3f6d7bSStella Laurenzo expr = AffineExpr.get_ceil_div(d1, c2) 2599f3f6d7bSStella Laurenzo # CHECK: d1 ceildiv 2 2609f3f6d7bSStella Laurenzo print(expr) 2619f3f6d7bSStella Laurenzo 2629f3f6d7bSStella Laurenzo assert expr.lhs == d1 2639f3f6d7bSStella Laurenzo assert expr.rhs == c2 2649f3f6d7bSStella Laurenzo 265fc7594ccSAlex Zinenko expr2 = AffineExpr.get_ceil_div(c2, d1) 266fc7594ccSAlex Zinenko expr3 = AffineExpr.get_ceil_div(2, d1) 267fc7594ccSAlex Zinenko expr4 = AffineExpr.get_ceil_div(d1, 2) 268fc7594ccSAlex Zinenko 269fc7594ccSAlex Zinenko # CHECK: 2 ceildiv d1 270fc7594ccSAlex Zinenko print(expr2) 271fc7594ccSAlex Zinenko # CHECK: 2 ceildiv d1 272fc7594ccSAlex Zinenko print(expr3) 273fc7594ccSAlex Zinenko # CHECK: d1 ceildiv 2 274fc7594ccSAlex Zinenko print(expr4) 275fc7594ccSAlex Zinenko 276fc7594ccSAlex Zinenko assert expr2 == expr3 277fc7594ccSAlex Zinenko assert expr4 == expr 278fc7594ccSAlex Zinenko 2799f3f6d7bSStella Laurenzo 2809f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testAffineExprSub 28178f2dae0SAlex Zinenko@run 2829f3f6d7bSStella Laurenzodef testAffineExprSub(): 2839f3f6d7bSStella Laurenzo with Context(): 2849f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 2859f3f6d7bSStella Laurenzo d2 = AffineDimExpr.get(2) 2869f3f6d7bSStella Laurenzo expr = d1 - d2 2879f3f6d7bSStella Laurenzo # CHECK: d1 - d2 2889f3f6d7bSStella Laurenzo print(expr) 2899f3f6d7bSStella Laurenzo 2909f3f6d7bSStella Laurenzo assert expr.lhs == d1 2919f3f6d7bSStella Laurenzo rhs = AffineMulExpr(expr.rhs) 2929f3f6d7bSStella Laurenzo # CHECK: d2 2939f3f6d7bSStella Laurenzo print(rhs.lhs) 2949f3f6d7bSStella Laurenzo # CHECK: -1 2959f3f6d7bSStella Laurenzo print(rhs.rhs) 2969f3f6d7bSStella Laurenzo 297fc7594ccSAlex Zinenko # CHECK: d1 - 42 298fc7594ccSAlex Zinenko print(d1 - 42) 299fc7594ccSAlex Zinenko # CHECK: -d1 + 42 300fc7594ccSAlex Zinenko print(42 - d1) 301fc7594ccSAlex Zinenko 302fc7594ccSAlex Zinenko c42 = AffineConstantExpr.get(42) 303fc7594ccSAlex Zinenko assert d1 - 42 == d1 - c42 304fc7594ccSAlex Zinenko assert 42 - d1 == c42 - d1 305fc7594ccSAlex Zinenko 306f9008e63STobias Hieta 30778f2dae0SAlex Zinenko# CHECK-LABEL: TEST: testClassHierarchy 30878f2dae0SAlex Zinenko@run 3099f3f6d7bSStella Laurenzodef testClassHierarchy(): 3109f3f6d7bSStella Laurenzo with Context(): 3119f3f6d7bSStella Laurenzo d1 = AffineDimExpr.get(1) 3129f3f6d7bSStella Laurenzo c2 = AffineConstantExpr.get(2) 3139f3f6d7bSStella Laurenzo add = AffineAddExpr.get(d1, c2) 3149f3f6d7bSStella Laurenzo mul = AffineMulExpr.get(d1, c2) 3159f3f6d7bSStella Laurenzo mod = AffineModExpr.get(d1, c2) 3169f3f6d7bSStella Laurenzo floor_div = AffineFloorDivExpr.get(d1, c2) 3179f3f6d7bSStella Laurenzo ceil_div = AffineCeilDivExpr.get(d1, c2) 3189f3f6d7bSStella Laurenzo 3199f3f6d7bSStella Laurenzo # CHECK: False 3209f3f6d7bSStella Laurenzo print(isinstance(d1, AffineBinaryExpr)) 3219f3f6d7bSStella Laurenzo # CHECK: False 3229f3f6d7bSStella Laurenzo print(isinstance(c2, AffineBinaryExpr)) 3239f3f6d7bSStella Laurenzo # CHECK: True 3249f3f6d7bSStella Laurenzo print(isinstance(add, AffineBinaryExpr)) 3259f3f6d7bSStella Laurenzo # CHECK: True 3269f3f6d7bSStella Laurenzo print(isinstance(mul, AffineBinaryExpr)) 3279f3f6d7bSStella Laurenzo # CHECK: True 3289f3f6d7bSStella Laurenzo print(isinstance(mod, AffineBinaryExpr)) 3299f3f6d7bSStella Laurenzo # CHECK: True 3309f3f6d7bSStella Laurenzo print(isinstance(floor_div, AffineBinaryExpr)) 3319f3f6d7bSStella Laurenzo # CHECK: True 3329f3f6d7bSStella Laurenzo print(isinstance(ceil_div, AffineBinaryExpr)) 3339f3f6d7bSStella Laurenzo 3349f3f6d7bSStella Laurenzo try: 3359f3f6d7bSStella Laurenzo AffineBinaryExpr(d1) 3369f3f6d7bSStella Laurenzo except ValueError as e: 3379f3f6d7bSStella Laurenzo # CHECK: Cannot cast affine expression to AffineBinaryExpr 3389f3f6d7bSStella Laurenzo print(e) 3399f3f6d7bSStella Laurenzo 3409f3f6d7bSStella Laurenzo try: 3419f3f6d7bSStella Laurenzo AffineBinaryExpr(c2) 3429f3f6d7bSStella Laurenzo except ValueError as e: 3439f3f6d7bSStella Laurenzo # CHECK: Cannot cast affine expression to AffineBinaryExpr 3449f3f6d7bSStella Laurenzo print(e) 3459f3f6d7bSStella Laurenzo 346f9008e63STobias Hieta 34778f2dae0SAlex Zinenko# CHECK-LABEL: TEST: testIsInstance 34878f2dae0SAlex Zinenko@run 34978f2dae0SAlex Zinenkodef testIsInstance(): 35078f2dae0SAlex Zinenko with Context(): 35178f2dae0SAlex Zinenko d1 = AffineDimExpr.get(1) 35278f2dae0SAlex Zinenko c2 = AffineConstantExpr.get(2) 35378f2dae0SAlex Zinenko add = AffineAddExpr.get(d1, c2) 35478f2dae0SAlex Zinenko mul = AffineMulExpr.get(d1, c2) 35578f2dae0SAlex Zinenko 35678f2dae0SAlex Zinenko # CHECK: True 35778f2dae0SAlex Zinenko print(AffineDimExpr.isinstance(d1)) 35878f2dae0SAlex Zinenko # CHECK: False 35978f2dae0SAlex Zinenko print(AffineConstantExpr.isinstance(d1)) 36078f2dae0SAlex Zinenko # CHECK: True 36178f2dae0SAlex Zinenko print(AffineConstantExpr.isinstance(c2)) 36278f2dae0SAlex Zinenko # CHECK: False 36378f2dae0SAlex Zinenko print(AffineMulExpr.isinstance(c2)) 36478f2dae0SAlex Zinenko # CHECK: True 36578f2dae0SAlex Zinenko print(AffineAddExpr.isinstance(add)) 36678f2dae0SAlex Zinenko # CHECK: False 36778f2dae0SAlex Zinenko print(AffineMulExpr.isinstance(add)) 36878f2dae0SAlex Zinenko # CHECK: True 36978f2dae0SAlex Zinenko print(AffineMulExpr.isinstance(mul)) 37078f2dae0SAlex Zinenko # CHECK: False 37178f2dae0SAlex Zinenko print(AffineAddExpr.isinstance(mul)) 372fc7594ccSAlex Zinenko 373fc7594ccSAlex Zinenko 374fc7594ccSAlex Zinenko# CHECK-LABEL: TEST: testCompose 375fc7594ccSAlex Zinenko@run 376fc7594ccSAlex Zinenkodef testCompose(): 377fc7594ccSAlex Zinenko with Context(): 378fc7594ccSAlex Zinenko # d0 + d2. 379fc7594ccSAlex Zinenko expr = AffineAddExpr.get(AffineDimExpr.get(0), AffineDimExpr.get(2)) 380fc7594ccSAlex Zinenko 381fc7594ccSAlex Zinenko # (d0, d1, d2)[s0, s1] -> (d0 + s1, d1 + s0, d0 + d1 + d2) 382fc7594ccSAlex Zinenko map1 = AffineAddExpr.get(AffineDimExpr.get(0), AffineSymbolExpr.get(1)) 383fc7594ccSAlex Zinenko map2 = AffineAddExpr.get(AffineDimExpr.get(1), AffineSymbolExpr.get(0)) 384fc7594ccSAlex Zinenko map3 = AffineAddExpr.get( 385fc7594ccSAlex Zinenko AffineAddExpr.get(AffineDimExpr.get(0), AffineDimExpr.get(1)), 386f9008e63STobias Hieta AffineDimExpr.get(2), 387f9008e63STobias Hieta ) 388fc7594ccSAlex Zinenko map = AffineMap.get(3, 2, [map1, map2, map3]) 389fc7594ccSAlex Zinenko 390fc7594ccSAlex Zinenko # CHECK: d0 + s1 + d0 + d1 + d2 391fc7594ccSAlex Zinenko print(expr.compose(map)) 392fc7594ccSAlex Zinenko 393fc7594ccSAlex Zinenko 394fc7594ccSAlex Zinenko# CHECK-LABEL: TEST: testHash 395fc7594ccSAlex Zinenko@run 396fc7594ccSAlex Zinenkodef testHash(): 397fc7594ccSAlex Zinenko with Context(): 398fc7594ccSAlex Zinenko d0 = AffineDimExpr.get(0) 399fc7594ccSAlex Zinenko s1 = AffineSymbolExpr.get(1) 400fc7594ccSAlex Zinenko assert hash(d0) == hash(AffineDimExpr.get(0)) 401fc7594ccSAlex Zinenko assert hash(d0 + s1) == hash(AffineAddExpr.get(d0, s1)) 402fc7594ccSAlex Zinenko 403fc7594ccSAlex Zinenko dictionary = dict() 404fc7594ccSAlex Zinenko dictionary[d0] = 0 405fc7594ccSAlex Zinenko dictionary[s1] = 1 406fc7594ccSAlex Zinenko assert d0 in dictionary 407fc7594ccSAlex Zinenko assert s1 in dictionary 408