Skip to content

Commit

Permalink
Add jl_simpliy pass
Browse files Browse the repository at this point in the history
  • Loading branch information
wsmoses committed May 16, 2024
1 parent d582308 commit c02f635
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/compiler/optimize.jl
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,10 @@ function pre_attr!(mod::LLVM.Module)
return nothing
end

function jl_inst_simplify!(PM)
ccall((:LLVMAddJLInstSimplifyPass, API.libEnzyme), Cvoid, (LLVM.API.LLVMPassManagerRef,), PM)
end

function post_attr!(mod::LLVM.Module)
end

Expand Down Expand Up @@ -1597,6 +1601,7 @@ function removeDeadArgs!(mod::LLVM.Module)
propagate_returned!(mod)
ModulePassManager() do pm
instruction_combining!(pm)
jl_inst_simplify!(pm)
alloc_opt!(pm)
scalar_repl_aggregates_ssa!(pm) # SSA variant?
cse!(pm)
Expand All @@ -1615,6 +1620,7 @@ function removeDeadArgs!(mod::LLVM.Module)
propagate_returned!(mod)
ModulePassManager() do pm
instruction_combining!(pm)
jl_inst_simplify!(pm)
alloc_opt!(pm)
scalar_repl_aggregates_ssa!(pm) # SSA variant?
if RunAttributor[]
Expand Down Expand Up @@ -1676,12 +1682,15 @@ end
LLVM.API.LLVMAddGlobalOptimizerPass(pm) # Extra
gvn!(pm) # Extra
instruction_combining!(pm)
jl_inst_simplify!(pm)
cfgsimplification!(pm)
scalar_repl_aggregates_ssa!(pm) # SSA variant?
instruction_combining!(pm)
jl_inst_simplify!(pm)
jump_threading!(pm)
correlated_value_propagation!(pm)
instruction_combining!(pm)
jl_inst_simplify!(pm)
reassociate!(pm)
early_cse!(pm)
alloc_opt!(pm)
Expand All @@ -1695,6 +1704,7 @@ end
loop_unswitch!(pm)
end
instruction_combining!(pm)
jl_inst_simplify!(pm)
ind_var_simplify!(pm)
loop_deletion!(pm)
loop_unroll!(pm)
Expand All @@ -1705,9 +1715,11 @@ end
# This InstCombine needs to be after GVN
# Otherwise it will generate load chains in GPU code...
instruction_combining!(pm)
jl_inst_simplify!(pm)
mem_cpy_opt!(pm)
sccp!(pm)
instruction_combining!(pm)
jl_inst_simplify!(pm)
jump_threading!(pm)
dead_store_elimination!(pm)
alloc_opt!(pm)
Expand All @@ -1722,6 +1734,7 @@ end

aggressive_dce!(pm)
instruction_combining!(pm)
jl_inst_simplify!(pm)
# Loop Vectorize -- not for Enzyme
# InstCombine

Expand All @@ -1732,6 +1745,7 @@ end
# FIXME: Currently crashes printing
cfgsimplification!(pm)
instruction_combining!(pm) # Extra for Enzyme
jl_inst_simplify!(pm)
LLVM.API.LLVMAddGlobalOptimizerPass(pm) # Exxtra
gvn!(pm) # Exxtra
run!(pm, mod)
Expand Down Expand Up @@ -1773,9 +1787,11 @@ function addOptimizationPasses!(pm)
# consider AggressiveInstCombinePass at optlevel > 2

instruction_combining!(pm)
jl_inst_simplify!(pm)
cfgsimplification!(pm)
scalar_repl_aggregates!(pm)
instruction_combining!(pm) # TODO: createInstSimplifyLegacy
jl_inst_simplify!(pm)
jump_threading!(pm)
correlated_value_propagation!(pm)

Expand All @@ -1796,6 +1812,7 @@ function addOptimizationPasses!(pm)
julia_licm!(pm)
# Subsequent passes not stripping metadata from terminator
instruction_combining!(pm) # TODO: createInstSimplifyLegacy
jl_inst_simplify!(pm)
ind_var_simplify!(pm)
loop_deletion!(pm)
loop_unroll!(pm) # TODO: in Julia createSimpleLoopUnroll
Expand All @@ -1806,6 +1823,7 @@ function addOptimizationPasses!(pm)
# over the structure of an aggregate)
scalar_repl_aggregates!(pm)
instruction_combining!(pm) # TODO: createInstSimplifyLegacy
jl_inst_simplify!(pm)

gvn!(pm)
mem_cpy_opt!(pm)
Expand All @@ -1816,6 +1834,7 @@ function addOptimizationPasses!(pm)
# This needs to be InstCombine instead of InstSimplify to allow
# loops over Union-typed arrays to vectorize.
instruction_combining!(pm)
jl_inst_simplify!(pm)
jump_threading!(pm)
dead_store_elimination!(pm)

Expand All @@ -1829,6 +1848,7 @@ function addOptimizationPasses!(pm)
cfgsimplification!(pm)
loop_deletion!(pm)
instruction_combining!(pm)
jl_inst_simplify!(pm)
loop_vectorize!(pm)
# TODO: createLoopLoadEliminationPass
cfgsimplification!(pm)
Expand Down Expand Up @@ -1873,6 +1893,7 @@ function addJuliaLegalizationPasses!(pm, lower_intrinsics=true)
dce!(pm)
lower_ptls!(pm, #=dump_native=# false)
instruction_combining!(pm)
jl_inst_simplify!(pm)
# Clean up write barrier and ptls lowering
cfgsimplification!(pm)
else
Expand Down

0 comments on commit c02f635

Please sign in to comment.