code: def test_conv_tiling():
      HSTR = WSTR = 1
      in_channel = 128
      kernel_height = kernel_width = 3
      out_channel = 64
      batch_size = 1
      in_height = in_width = 64
      out_height = out_width = in_height - kernel_height + 1
      data = te.placeholder(
          (batch_size, in_channel, in_height, in_width), name="data"
      )
      kernel = te.placeholder(
          (kernel_height, kernel_width, in_channel, out_channel),
          name="kernel",
      )
      ic = te.reduce_axis((0, in_channel), name="ic")
      kh = te.reduce_axis((0, kernel_height), name="kh")
      kw = te.reduce_axis((0, kernel_width), name="kw")
      conv = te.compute(
          (batch_size, out_channel, out_height, out_width),
          lambda n, oc, oh, ow: te.sum(
              data[n, ic, oh * HSTR + kh, ow * WSTR + kw]
              * kernel[kh, kw, ic, oc],
              axis=[ic, kh, kw],
          ),
          name="conv2d",
      )
      s = te.create_schedule(conv.op)
  
      n, oc, oh, ow = conv.op.axis
      oho, owo, ohi, owi = s[conv].tile(oh, ow, 16, 16)
      bounds = tvm.te.schedule.InferBound(s)
      stmt = tvm.te.schedule.ScheduleOps(s, bounds)
      mod = tvm.IRModule.from_expr(
          tvm.tir.PrimFunc([], stmt).with_attr("global_symbol", "main")
      )
      with tvm.transform.PassContext(
          config={"tir.LoopPartition": {"partition_const_loop": True}}
      ):
          mod = tvm.tir.transform.LoopPartition()(mod)
          stmt = tvm.tir.transform.Simplify()(mod)["main"].body
  
      assert not any(
          collect_visit(
              stmt, lambda x: isinstance(x, tvm.tir.IfThenElse)
          )
      )
  
imports: import pytest
  import tvm
  import tvm.testing
  from tvm import te
  from tvm.ir.module import IRModule
  from tvm.script import tir
  import numpy
label_desc: Use image node_id 19 for calling a global function with example usage: test_conv_tiling() without return types