code: def test_llvm_overloaded_intrin():
      # Name lookup for overloaded intrinsics in LLVM 4- requires a name
      # that includes the overloaded types.
      if tvm.target.codegen.llvm_version_major() < 5:
          return
  
      def use_llvm_intrinsic(A, C):
          ib = tvm.tir.ir_builder.create()
          L = A.vload((0, 0))
          I = tvm.tir.call_llvm_pure_intrin(
              "int32",
              "llvm.ctlz",
              tvm.tir.const(2, "uint32"),
              L,
              tvm.tir.const(0, "int1"),
          )
          S = C.vstore((0, 0), I)
          ib.emit(S)
          return ib.get()
  
      A = tvm.te.placeholder((1, 1), dtype="int32", name="A")
      C = tvm.te.extern(
          (1, 1),
          [A],
          lambda ins, outs: use_llvm_intrinsic(ins[0], outs[0]),
          name="C",
          dtype="int32",
      )
      s = tvm.te.create_schedule(C.op)
      f = tvm.build(s, [A, C], target="llvm")
  
imports: import collections
  import ctypes
  import json
  import math
  import numpy
  import pytest
  import re
  import sys
  import tvm
  import tvm.testing
  from tvm import te
  from tvm.contrib import clang, utils
  from tvm.relay.backend import Runtime
  from tvm.script import tir, ir
  from tvm.target.codegen import llvm_get_intrinsic_name, llvm_lookup_intrinsic_id
label_desc: Use image node_id 4 for calling a global function with example usage: test_llvm_overloaded_intrin() and returns: ib