code: def create_target_machine(self, cpu='', features='',
                                opt=2, reloc='default', codemodel='jitdefault',
                                jitdebug=False, printmc=False):
          
          assert 0 <= opt <= 3
          assert reloc in RELOC
          assert codemodel in CODEMODEL
          triple = self._triple
          # MCJIT under Windows only supports ELF objects, see
          # http://lists.llvm.org/pipermail/llvm-dev/2013-December/068341.html
          # Note we still want to produce regular COFF files in AOT mode.
          if os.name == 'nt' and codemodel == 'jitdefault':
              triple += '-elf'
          tm = ffi.lib.LLVMPY_CreateTargetMachine(self,
                                                  _encode_string(triple),
                                                  _encode_string(cpu),
                                                  _encode_string(features),
                                                  opt,
                                                  _encode_string(reloc),
                                                  _encode_string(codemodel),
                                                  int(jitdebug),
                                                  int(printmc),
          )
          if tm:
              return TargetMachine(tm)
          else:
              raise RuntimeError("Cannot create target machine")
docs: Create a new TargetMachine for this target and the given options.
  
          Specifying codemodel='default' will result in the use of the "small"
          code model. Specifying codemodel='jitdefault' will result in the code
          model being picked based on platform bitness (32="small", 64="large").