code: def test_split():
      x = tvm.tir.Var("x", "int32")
      y = tvm.tir.Var("y", "int32")
      c0 = tvm.tir.SizeVar("c0", "int32")
      c1 = tvm.tir.SizeVar("c1", "int32")
      fld = tvm.tir.floordiv
      flm = tvm.tir.floormod
  
      assert_iter_sum_pattern(
          {fld(x, 3): (8, 0), flm(x, 3) * 2 + c1: (3, c1, 2)},
          var_dom([(x, 24)]),
      )
  
      assert_iter_sum_pattern(
          {
              fld(x, 6): (4, 0),
              fld(flm(x, 6), 2): (3, 0),
              flm(x, 2): (2, 0),
          },
          var_dom([(x, 24)]),
      )
  
      # simple symbolic bound
      # TODO(tvm-team) improve symbolic divisible check to enable
      # more complicated symbolic bound
      assert_iter_sum_pattern(
          {fld(x, c0): (c1, 0), flm(x, c0): (c0, 0)},
          var_dom([(x, c1 * c0)]),
      )
  
      assert_iter_sum_pattern(
          {fld(x * 2, 4): (4, 0, 1), flm(x * 2, 4): (2, 0, 2)},
          var_dom([(x, 8)]),
      )
  
      assert_iter_sum_pattern(
          {
              fld(x * 2, 4) * 4 + flm(x * 2, 4): (8, 0, 2),
          },
          var_dom([(x, 8)]),
      )
  
      assert_iter_sum_failure(
          [fld(x, flm(flm(y, 8), 6))], var_dom([(x, 24), (y, 8)])
      )
  
      # domain of x is undefined
      assert_iter_sum_pattern(
          {fld(flm(x, 49) + y, 49): (1, fld(flm(x, 49) + y, 49))},
          var_dom([(y, 1)]),
      )
  
imports: import tvm
  import tvm.testing
  from tvm.tir import floordiv, floormod
label_desc: Use image node_id 10 for calling a global function with example usage: test_split() without return types