code: def __init__(self, device: LLVMDevice, name: str, lib: bytes):
      self.name, self.lib = name, lib
      device.engine.add_object_file(
          llvm.object_file.ObjectFileRef.from_data(lib)
      )
      self.fxn = device.engine.get_function_address(name)
  
file_path: tinygrad/tinygrad/runtime/ops_llvm.py
imports: from __future__ import annotations
  import ctypes, functools
  from typing import Tuple
  from tinygrad.device import Compiled, MallocAllocator
  from tinygrad.helpers import DEBUG, cpu_time_execution
  from tinygrad.codegen.kernel import LinearizerOptions
  from tinygrad.renderer.llvmir import uops_to_llvm_ir
  import llvmlite.binding
label_desc: Use image node_id 1 to create a new LLVMProgram object  with example: obj = LLVMProgram(device, name, lib)