code: def create_llvm(inputs, output=None, options=None, cc=None):
      """Create llvm text ir.
  
      Parameters
      ----------
      inputs : list of str
          List of input files name or code source.
  
      output : str, optional
          Output file, if it is none
          a temporary file is created
  
      options : list
          The list of additional options string.
  
      cc : str, optional
          The clang compiler, if not specified,
          we will try to guess the matched clang version.
  
      Returns
      -------
      code : str
          The generated llvm text IR.
      """
      cc = cc if cc else find_clang()[0]
      cmd = [cc]
      cmd += ["-S", "-emit-llvm"]
      temp = utils.tempdir()
      output = output if output else temp.relpath("output.ll")
      inputs = [inputs] if isinstance(inputs, str) else inputs
      input_files = []
      for i, code in enumerate(inputs):
          if utils.is_source_path(code):
              input_files.append(code)
          else:
              temp_path = temp.relpath(f"input{i}.cc")
              with open(temp_path, "w") as output_file:
                  output_file.write(code)
              input_files.append(temp_path)
      if options:
          cmd += options
      cmd += ["-o", output]
      cmd += input_files
      proc = subprocess.Popen(
          cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT
      )
      (out, _) = proc.communicate()
      if proc.returncode != 0:
          msg = "Compilation error:\n"
          msg += py_str(out)
          raise RuntimeError(msg)
  
      return open(output).read()
  
imports: import subprocess
  from tvm._ffi.base import py_str
  import tvm.target
  from .None import utils
label_desc: Use image node_id 2 for calling a global function with example usage: create_llvm(inputs, output, options, cc) and returns: open