Skip to content

Commit 7d8d768

Browse files
authored
Merge pull request #38437 from JuliaLang/vc/llvm_api
add more missing LLVM passes to C-API
2 parents 7cb2582 + 083b325 commit 7d8d768

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

src/llvm-api.cpp

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
#include <llvm/IR/Module.h>
2828
#include <llvm/Support/TargetSelect.h>
2929
#include <llvm/Transforms/IPO.h>
30+
#include <llvm/Transforms/Scalar.h>
31+
#include <llvm/Transforms/Vectorize.h>
32+
#if JL_LLVM_VERSION < 120000
33+
#include <llvm/Transforms/Scalar/InstSimplifyPass.h>
34+
#endif
3035
#include <llvm/Transforms/Utils/ModuleUtils.h>
3136

3237
#include "julia.h"
@@ -90,13 +95,43 @@ extern "C" JL_DLLEXPORT LLVMBool LLVMExtraInitializeNativeDisassembler()
9095
return InitializeNativeTargetDisassembler();
9196
}
9297

93-
// Exporting the Barrier LLVM pass
98+
// Various missing passes (being upstreamed)
9499

95100
extern "C" JL_DLLEXPORT void LLVMExtraAddBarrierNoopPass(LLVMPassManagerRef PM)
96101
{
97102
unwrap(PM)->add(createBarrierNoopPass());
98103
}
99104

105+
extern "C" JL_DLLEXPORT void LLVMExtraAddDivRemPairsPass(LLVMPassManagerRef PM) {
106+
unwrap(PM)->add(createDivRemPairsPass());
107+
}
108+
109+
extern "C" JL_DLLEXPORT void LLVMExtraAddLoopDistributePass(LLVMPassManagerRef PM) {
110+
unwrap(PM)->add(createLoopDistributePass());
111+
}
112+
113+
extern "C" JL_DLLEXPORT void LLVMExtraAddLoopFusePass(LLVMPassManagerRef PM) {
114+
unwrap(PM)->add(createLoopFusePass());
115+
}
116+
117+
extern "C" JL_DLLEXPORT void LLVMExtraLoopLoadEliminationPass(LLVMPassManagerRef PM) {
118+
unwrap(PM)->add(createLoopLoadEliminationPass());
119+
}
120+
121+
extern "C" JL_DLLEXPORT void LLVMExtraAddLoadStoreVectorizerPass(LLVMPassManagerRef PM) {
122+
unwrap(PM)->add(createLoadStoreVectorizerPass());
123+
}
124+
125+
extern "C" JL_DLLEXPORT void LLVMExtraAddVectorCombinePass(LLVMPassManagerRef PM) {
126+
unwrap(PM)->add(createVectorCombinePass());
127+
}
128+
129+
// Can be removed in LLVM 12
130+
extern "C" JL_DLLEXPORT void LLVMExtraAddInstructionSimplifyPass(LLVMPassManagerRef PM) {
131+
unwrap(PM)->add(createInstSimplifyLegacyPass());
132+
}
133+
134+
100135
// Infrastructure for writing LLVM passes in Julia
101136

102137
typedef struct LLVMOpaquePass *LLVMPassRef;

0 commit comments

Comments
 (0)