Example #1
0
    def _pass_manager_builder(self):
        """
        Create a PassManagerBuilder.

        Note: a PassManagerBuilder seems good only for one use, so you
        should call this method each time you want to populate a module
        or function pass manager.  Otherwise some optimizations will be
        missed...
        """
        pmb = lp.create_pass_manager_builder(opt=config.OPT, loop_vectorize=config.LOOP_VECTORIZE)
        return pmb
Example #2
0
    def _pass_manager_builder(self):
        """
        Create a PassManagerBuilder.

        Note: a PassManagerBuilder seems good only for one use, so you
        should call this method each time you want to populate a module
        or function pass manager.  Otherwise some optimizations will be
        missed...
        """
        pmb = lp.create_pass_manager_builder(
            opt=config.OPT, loop_vectorize=config.LOOP_VECTORIZE)
        return pmb
Example #3
0
    def _pass_manager_builder(self, **kwargs):
        """
        Create a PassManagerBuilder.

        Note: a PassManagerBuilder seems good only for one use, so you
        should call this method each time you want to populate a module
        or function pass manager.  Otherwise some optimizations will be
        missed...
        """
        opt_level = kwargs.pop('opt', config.OPT)
        loop_vectorize = kwargs.pop('loop_vectorize', config.LOOP_VECTORIZE)
        slp_vectorize = kwargs.pop('slp_vectorize', config.SLP_VECTORIZE)

        pmb = lp.create_pass_manager_builder(opt=opt_level,
                                             loop_vectorize=loop_vectorize,
                                             slp_vectorize=slp_vectorize,
                                             **kwargs)

        return pmb
Example #4
0
 def jit(self, name, *args, optimize=False, llvmdump=True):
     if llvmdump:
         print('======== Unoptimized LLVM IR')
         print(str(self.codegen.module))
     llvmmod = llvm.parse_assembly(str(self.codegen.module))
     target_machine = self.target.create_target_machine(opt=3)
     if optimize:
         pmb = lp.create_pass_manager_builder(opt=2)
         pm = llvm.create_module_pass_manager()
         pmb.populate(pm)
         pm.run(llvmmod)
         if llvmdump:
             print('======== Optimized LLVM IR')
             print(str(llvmmod))
     with llvm.create_mcjit_compiler(llvmmod, target_machine) as ee:
         ee.finalize_object()
         fptr = CFUNCTYPE(c_int)(ee.get_function_address(name))
         result = fptr(*args)
         return result