code: def test_local_stage_predicate2():
      A = tvm.te.placeholder((128,), name="A")
      B = tvm.te.compute((128,), lambda bi: A[bi] + 1, name="B")
      C = tvm.te.compute((128,), lambda ci: B[ci] + 2, name="C")
      s = tvm.te.create_schedule(C.op)
      AA = s.cache_read(A, "local", [B])
      s[B].set_scope("shared")
      block_x = tvm.te.thread_axis("blockIdx.x")
      thread_x = tvm.te.thread_axis((0, 32), "threadIdx.x")
      oc, ic = s[C].split(s[C].op.axis[0], factor=64)
      ooc, ioc = s[C].split(oc, factor=2)
      oic, iic = s[C].split(ic, factor=32)
      s[C].bind(ooc, block_x)
      s[C].bind(iic, thread_x)
      s[B].compute_at(s[C], ioc)
      ob, ib = s[B].split(s[B].op.axis[0], factor=32)
      s[B].bind(ib, thread_x)
      s[AA].compute_root()
      s[AA].compute_at(s[C], ooc)
      oaa, iaa = s[AA].split(s[AA].op.axis[0], factor=32)
      s[AA].bind(iaa, thread_x)
      lowered_body = tvm.lower(s, [A, C])["main"].body
  
      def collect_visit(stmt, f):
          ret = []
          tvm.tir.stmt_functor.post_order_visit(
              stmt, lambda x: ret.append(f(x))
          )
          return ret
  
      def visit_stmt(op):
          if isinstance(op, tvm.tir.Allocate):
              return op.extents[0].value == 97
          return False
  
      assert not any(
          collect_visit(
              lowered_body, lambda x: isinstance(x, tvm.tir.IfThenElse)
          )
      )
      assert any(collect_visit(lowered_body, visit_stmt))
  
imports: import numpy
  import tvm
  from tvm import te
  from tvm.driver.build_module import schedule_to_module
label_desc: Use image node_id 28 for calling a global function with example usage: test_local_stage_predicate2() and returns: ret, False, unknown