Skip to content

Commit 3817c60

Browse files
authored
Merge pull request #272 from maleadt/tb/passes
Add a couple of missing passes.
2 parents 790a3d4 + 9d5a91e commit 3817c60

File tree

7 files changed

+38
-4
lines changed

7 files changed

+38
-4
lines changed

Manifest.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ version = "1.3.0"
3434

3535
[[LLVMExtra_jll]]
3636
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
37-
git-tree-sha1 = "6a2af408fe809c4f1a54d2b3f188fdd3698549d6"
37+
git-tree-sha1 = "9436f02a0c9f726d914cc6539f87850701be18fc"
3838
uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab"
39-
version = "0.0.11+0"
39+
version = "0.0.12+0"
4040

4141
[[LibCURL]]
4242
deps = ["LibCURL_jll", "MozillaCACerts_jll"]

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ Unicode = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
1111

1212
[compat]
1313
CEnum = "0.2, 0.3, 0.4"
14-
LLVMExtra_jll = "~0.0.11"
14+
LLVMExtra_jll = "~0.0.12"
1515
julia = "1.6"

deps/LLVMExtra/include/LLVMExtra.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ void LLVMAddLoopFusePass(LLVMPassManagerRef PM);
3333
void LLVMAddLoopLoadEliminationPass(LLVMPassManagerRef PM);
3434
void LLVMAddLoadStoreVectorizerPass(LLVMPassManagerRef PM);
3535
void LLVMAddVectorCombinePass(LLVMPassManagerRef PM);
36+
void LLVMAddSpeculativeExecutionIfHasBranchDivergencePass(LLVMPassManagerRef PM);
37+
void LLVMAddSimpleLoopUnrollPass(LLVMPassManagerRef PM);
38+
void LLVMAddInductiveRangeCheckEliminationPass(LLVMPassManagerRef PM);
3639

3740
#if LLVM_VERSION_MAJOR < 12
3841
void LLVMAddInstructionSimplifyPass(LLVMPassManagerRef PM);

deps/LLVMExtra/lib/llvm-api.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,21 @@ void LLVMAddVectorCombinePass(LLVMPassManagerRef PM)
116116
unwrap(PM)->add(createVectorCombinePass());
117117
}
118118

119+
void LLVMAddSpeculativeExecutionIfHasBranchDivergencePass(LLVMPassManagerRef PM)
120+
{
121+
unwrap(PM)->add(createSpeculativeExecutionIfHasBranchDivergencePass());
122+
}
123+
124+
void LLVMAddSimpleLoopUnrollPass(LLVMPassManagerRef PM)
125+
{
126+
unwrap(PM)->add(createSimpleLoopUnrollPass());
127+
}
128+
129+
void LLVMAddInductiveRangeCheckEliminationPass(LLVMPassManagerRef PM)
130+
{
131+
unwrap(PM)->add(createInductiveRangeCheckEliminationPass());
132+
}
133+
119134
#if LLVM_VERSION_MAJOR < 12
120135
void LLVMAddInstructionSimplifyPass(LLVMPassManagerRef PM)
121136
{

lib/libLLVM_extra.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,18 @@ function LLVMAddVectorCombinePass(PM)
7575
ccall((:LLVMAddVectorCombinePass, libLLVMExtra), Cvoid, (LLVMPassManagerRef,), PM)
7676
end
7777

78+
function LLVMAddSpeculativeExecutionIfHasBranchDivergencePass(PM)
79+
ccall((:LLVMAddSpeculativeExecutionIfHasBranchDivergencePass, libLLVMExtra), Cvoid, (LLVMPassManagerRef,), PM)
80+
end
81+
82+
function LLVMAddSimpleLoopUnrollPass(PM)
83+
ccall((:LLVMAddSimpleLoopUnrollPass, libLLVMExtra), Cvoid, (LLVMPassManagerRef,), PM)
84+
end
85+
86+
function LLVMAddInductiveRangeCheckEliminationPass(PM)
87+
ccall((:LLVMAddInductiveRangeCheckEliminationPass, libLLVMExtra), Cvoid, (LLVMPassManagerRef,), PM)
88+
end
89+
7890
if version() < v"12"
7991
function LLVMAddInstructionSimplifyPass(PM)
8092
ccall((:LLVMAddInstructionSimplifyPass, libLLVMExtra), Cvoid, (LLVMPassManagerRef,), PM)

src/transform.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ define_transforms([
103103
:SimplifyLibCalls, :TailCallElimination, :ConstantPropagation, :DemoteMemoryToRegister,
104104
:Verifier, :CorrelatedValuePropagation, :EarlyCSE, :EarlyCSEMemSSA,
105105
:LowerExpectIntrinsic, :TypeBasedAliasAnalysis, :ScopedNoAliasAA, :BasicAliasAnalysis,
106-
:MergeFunctions
106+
:MergeFunctions, :SpeculativeExecutionIfHasBranchDivergence, :SimpleLoopUnroll,
107+
:InductiveRangeCheckElimination
107108
])
108109

109110
export scalar_repl_aggregates!, scalar_repl_aggregates_ssa!, cfgsimplification!

test/transform.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ ModulePassManager() do pm
8484
loop_vectorize!(pm)
8585
slpvectorize!(pm)
8686
load_store_vectorizer!(pm)
87+
speculative_execution_if_has_branch_divergence!(pm)
88+
simple_loop_unroll!(pm)
89+
inductive_range_check_elimination!(pm)
8790

8891
argument_promotion!(pm)
8992
constant_merge!(pm)

0 commit comments

Comments
 (0)