class_docstr: Convert expressions to LLVM IR
code: def _print_Pow(self, expr):
      base0 = self._print(expr.base)
      if expr.exp == S.NegativeOne:
          return self.builder.fdiv(
              ll.Constant(self.fp_type, 1.0), base0
          )
      if expr.exp == S.Half:
          fn = self.ext_fn.get("sqrt")
          if not fn:
              fn_type = ll.FunctionType(self.fp_type, [self.fp_type])
              fn = ll.Function(self.module, fn_type, "sqrt")
              self.ext_fn["sqrt"] = fn
          return self.builder.call(fn, [base0], "sqrt")
      if expr.exp == 2:
          return self.builder.fmul(base0, base0)
  
      exp0 = self._print(expr.exp)
      fn = self.ext_fn.get("pow")
      if not fn:
          fn_type = ll.FunctionType(
              self.fp_type, [self.fp_type, self.fp_type]
          )
          fn = ll.Function(self.module, fn_type, "pow")
          self.ext_fn["pow"] = fn
      return self.builder.call(fn, [base0, exp0], "pow")
  
imports: import ctypes
  from sympy.external import import_module
  from sympy.printing.printer import Printer
  from sympy.core.singleton import S
  from sympy.tensor.indexed import IndexedBase
  from sympy.utilities.decorator import doctest_depends_on
label_desc: Use image node_id 6 for calling the LLVMJitPrinter obj's underlying member method code with example usage: obj._print_Pow(expr) and returns: self, self, self, self