@@ -32,7 +32,10 @@ def _ensure_target_machine():
3232        binding .initialize_native_asmprinter ()
3333
3434        target  =  binding .Target .from_default_triple ()
35-         _target_machine  =  target .create_target_machine ()
35+         _target_machine  =  target .create_target_machine (
36+             opt = 3 ,
37+             features = "+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+avx,+avx2" 
38+         )
3639    except  Exception  as  e :
3740        raise  RuntimeError (f"Failed to initialize LLVM target machine: { e }  )
3841
@@ -110,7 +113,7 @@ def _build_bubble_sort_ir(dtype: str) -> str:
110113    if  isinstance (T , ir .IntType ):
111114        should_swap  =  b .icmp_signed (">" , val_j , val_jp1 )
112115    else :
113-         should_swap  =  b .fcmp_ordered (">" , val_j , val_jp1 )
116+         should_swap  =  b .fcmp_ordered (">" , val_j , val_jp1 ,  fastmath = True )
114117
115118    b .cbranch (should_swap , b_swap , b_inner_latch )
116119
@@ -145,6 +148,32 @@ def _materialize(dtype: str) -> int:
145148        mod  =  binding .parse_assembly (llvm_ir )
146149        mod .verify ()
147150
151+         pmb  =  binding .PassManagerBuilder ()
152+         pmb .opt_level  =  3 
153+         pmb .loop_vectorize  =  True 
154+         pmb .slp_vectorize  =  True 
155+ 
156+         fpm  =  binding .create_function_pass_manager (mod )
157+         pm  =  binding .create_module_pass_manager ()
158+ 
159+         pm .add_basic_alias_analysis_pass ()
160+         pm .add_type_based_alias_analysis_pass ()
161+         pm .add_instruction_combining_pass ()
162+         pm .add_gvn_pass ()
163+         pm .add_cfg_simplification_pass ()
164+         pm .add_loop_unroll_pass ()
165+         pm .add_loop_unswitch_pass ()
166+ 
167+         pmb .populate (fpm )
168+         pmb .populate (pm )
169+ 
170+         fpm .initialize ()
171+         for  func  in  mod .functions :
172+             fpm .run (func )
173+         fpm .finalize ()
174+ 
175+         pm .run (mod )
176+ 
148177        engine  =  binding .create_mcjit_compiler (mod , _target_machine )
149178        engine .finalize_object ()
150179        engine .run_static_constructors ()
0 commit comments