code: def rewrite_compute_body(compute_tensor, new_layout):
      """Rewrite the body of a ComputeOp according to a new layout of a placeholder"""
      op = compute_tensor.op
  
      # Get layout free placeholders
      layout_free_placeholders = op.attrs["layout_free_placeholders"]
      assert (
          len(layout_free_placeholders) == 1
      ), "Only support one layout free placeholder"
      placeholder_op = layout_free_placeholders[0].op
  
      # Rewrite the index expression in body
      body = []
      for b in op.body:
          body.append(
              _ffi_api.RewriteIndexForNewLayout(
                  placeholder_op, new_layout, b
              )
          )
      op_node = tvm.te._ffi_api.ComputeOp(
          op.name, op.tag, op.attrs, op.axis, body
      )
  
      num = op_node.num_outputs
      outputs = tuple(op_node.output(i) for i in range(num))
      return outputs[0] if num == 1 else outputs
  
imports: import json
  import logging
  import threading
  import traceback
  import tvm
  from tvm import autotvm, transform
  from tvm._ffi.base import TVMError
  from tvm.ir.transform import PassContext
  from tvm.runtime import convert_to_object
  from tvm.target import Target
  from tvm.te.tensor import ComputeOp, PlaceholderOp, Tensor
  from tvm.tir import Reduce
  from tvm.tir import expr
  from .None import _ffi_api
  from .compute_dag import ComputeDAG, LayoutRewriteOption
  from .dispatcher import DispatchContext
  from .search_task import SearchTask
  from .utils import get_const_tuple
  from .workload_registry import register_workload_tensors
label_desc: Use image node_id 10 for calling a global function with example usage: rewrite_compute_body(compute_tensor, new_layout) and returns: unknown