code: def __init__(self, device: str):
      llvm.initialize()
      llvm.initialize_native_target()
      llvm.initialize_native_asmprinter()
      llvm.initialize_native_asmparser()
      self.optimizer: llvm.passmanagers.ModulePassManager = (
          llvm.create_module_pass_manager()
      )
      # this opt actually can change things. ex: opt=3 means no FMA, opt=2 means FMA
      self.target_machine: llvm.targets.TargetMachine = (
          llvm.Target.from_triple(
              llvm.get_process_triple()
          ).create_target_machine(opt=2)
      )
      self.target_machine.add_analysis_passes(self.optimizer)
      self.target_machine.set_asm_verbosity(True)
      backing_mod = llvm.parse_assembly(str())
      backing_mod.triple = llvm.get_process_triple()
      self.engine: llvm.executionengine.ExecutionEngine = (
          llvm.create_mcjit_compiler(backing_mod, self.target_machine)
      )
      super().__init__(
          MallocAllocator,
          LinearizerOptions(
              "LLVM",
              supports_float4=False,
              has_local=False,
              has_shared=False,
          ),
          uops_to_llvm_ir,
          functools.partial(compile_llvm, self),
          "compile_llvm",
          functools.partial(LLVMProgram, self),
      )
  
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 LLVMDevice object from inherited base classes: Compiled with example: obj = LLVMDevice(device)