diff options
author | Torok Edwin <edwintorok@gmail.com> | 2011-10-14 20:38:33 +0000 |
---|---|---|
committer | Torok Edwin <edwintorok@gmail.com> | 2011-10-14 20:38:33 +0000 |
commit | ff616cb440d696b2663d55494e0a5aedfab20726 (patch) | |
tree | 0ea5a0b2564ba93558d120cfd276bb535104083c /bindings/ocaml/transforms | |
parent | 0be167bab219cb178f7a6e91186c700ad48aa047 (diff) | |
download | external_llvm-ff616cb440d696b2663d55494e0a5aedfab20726.zip external_llvm-ff616cb440d696b2663d55494e0a5aedfab20726.tar.gz external_llvm-ff616cb440d696b2663d55494e0a5aedfab20726.tar.bz2 |
OCaml bindings: add some missing functions and testcases.
The C bindings exposed some APIs that weren't covered by the OCaml bindings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141997 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/ocaml/transforms')
-rw-r--r-- | bindings/ocaml/transforms/scalar/llvm_scalar_opts.ml | 39 | ||||
-rw-r--r-- | bindings/ocaml/transforms/scalar/llvm_scalar_opts.mli | 46 | ||||
-rw-r--r-- | bindings/ocaml/transforms/scalar/scalar_opts_ocaml.c | 57 |
3 files changed, 141 insertions, 1 deletions
diff --git a/bindings/ocaml/transforms/scalar/llvm_scalar_opts.ml b/bindings/ocaml/transforms/scalar/llvm_scalar_opts.ml index 276e118..93ab1de 100644 --- a/bindings/ocaml/transforms/scalar/llvm_scalar_opts.ml +++ b/bindings/ocaml/transforms/scalar/llvm_scalar_opts.ml @@ -20,6 +20,15 @@ external add_aggressive_dce : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit external add_scalar_repl_aggregation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_scalar_repl_aggregation" + +external +add_scalar_repl_aggregation_ssa : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_scalar_repl_aggregation_ssa" + +external +add_scalar_repl_aggregation_with_threshold : int -> [<Llvm.PassManager.any] Llvm.PassManager.t + -> unit + = "llvm_add_scalar_repl_aggregation_with_threshold" external add_ind_var_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_ind_var_simplification" @@ -67,6 +76,36 @@ external add_memcpy_opt : [<Llvm.PassManager.any] Llvm.PassManager.t external add_loop_deletion : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_loop_deletion" + +external add_loop_idiom : [<Llvm.PassManager.any] Llvm.PassManager.t + -> unit + = "llvm_add_loop_idiom" + external add_lib_call_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_lib_call_simplification" + +external +add_verifier : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_verifier" + +external +add_correlated_value_propagation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_correlated_value_propagation" + +external +add_early_cse : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_early_cse" + +external +add_lower_expect_intrinsic : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_lower_expect_intrinsic" + +external +add_type_based_alias_analysis : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_type_based_alias_analysis" + +external +add_basic_alias_analysis : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_basic_alias_analysis" + diff --git a/bindings/ocaml/transforms/scalar/llvm_scalar_opts.mli b/bindings/ocaml/transforms/scalar/llvm_scalar_opts.mli index d7162c7..121b376 100644 --- a/bindings/ocaml/transforms/scalar/llvm_scalar_opts.mli +++ b/bindings/ocaml/transforms/scalar/llvm_scalar_opts.mli @@ -35,6 +35,17 @@ external add_scalar_repl_aggregation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_scalar_repl_aggregation" +(** See the [llvm::createScalarReplAggregatesPassSSA] function. *) +external +add_scalar_repl_aggregation_ssa : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_scalar_repl_aggregation_ssa" + +(** See the [llvm::createScalarReplAggregatesWithThreshold] function. *) +external +add_scalar_repl_aggregation_with_threshold : int -> [<Llvm.PassManager.any] Llvm.PassManager.t + -> unit + = "llvm_add_scalar_repl_aggregation_with_threshold" + (** See the [llvm::createIndVarSimplifyPass] function. *) external add_ind_var_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit @@ -112,7 +123,42 @@ external add_loop_deletion : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_loop_deletion" +external add_loop_idiom : [<Llvm.PassManager.any] Llvm.PassManager.t + -> unit + = "llvm_add_loop_idiom" + (** See the [llvm::createSimplifyLibCallsPass] function. *) external add_lib_call_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_lib_call_simplification" + +(** See the [llvm::createVerifierPass] function. *) +external +add_verifier : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_verifier" + +(** See the [llvm::createCorrelatedValuePropagationPass] function. *) +external +add_correlated_value_propagation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_correlated_value_propagation" + +(** See the [llvm::createEarlyCSE] function. *) +external +add_early_cse : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_early_cse" + +(** See the [llvm::createLowerExpectIntrinsicPass] function. *) +external +add_lower_expect_intrinsic : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_lower_expect_intrinsic" + +(** See the [llvm::createTypeBasedAliasAnalysisPass] function. *) +external +add_type_based_alias_analysis : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_type_based_alias_analysis" + +(** See the [llvm::createBasicAliasAnalysisPass] function. *) +external +add_basic_alias_analysis : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit + = "llvm_add_basic_alias_analysis" + diff --git a/bindings/ocaml/transforms/scalar/scalar_opts_ocaml.c b/bindings/ocaml/transforms/scalar/scalar_opts_ocaml.c index df44807..2db6456 100644 --- a/bindings/ocaml/transforms/scalar/scalar_opts_ocaml.c +++ b/bindings/ocaml/transforms/scalar/scalar_opts_ocaml.c @@ -50,6 +50,19 @@ CAMLprim value llvm_add_scalar_repl_aggregation(LLVMPassManagerRef PM) { } /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_scalar_repl_aggregation_ssa(LLVMPassManagerRef PM) { + LLVMAddScalarReplAggregatesPassSSA(PM); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> int -> unit */ +CAMLprim value llvm_add_scalar_repl_aggregation_with_threshold(value threshold, + LLVMPassManagerRef PM) { + LLVMAddScalarReplAggregatesPassWithThreshold(PM, Int_val(threshold)); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ CAMLprim value llvm_add_ind_var_simplification(LLVMPassManagerRef PM) { LLVMAddIndVarSimplifyPass(PM); return Val_unit; @@ -69,7 +82,7 @@ CAMLprim value llvm_add_licm(LLVMPassManagerRef PM) { /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ CAMLprim value llvm_add_loop_unswitch(LLVMPassManagerRef PM) { - LLVMAddLoopUnrollPass(PM); + LLVMAddLoopUnswitchPass(PM); return Val_unit; } @@ -140,7 +153,49 @@ CAMLprim value llvm_add_loop_deletion(LLVMPassManagerRef PM) { } /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_loop_idiom(LLVMPassManagerRef PM) { + LLVMAddLoopIdiomPass(PM); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ CAMLprim value llvm_add_lib_call_simplification(LLVMPassManagerRef PM) { LLVMAddSimplifyLibCallsPass(PM); return Val_unit; } + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_verifier(LLVMPassManagerRef PM) { + LLVMAddVerifierPass(PM); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_correlated_value_propagation(LLVMPassManagerRef PM) { + LLVMAddCorrelatedValuePropagationPass(PM); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_early_cse(LLVMPassManagerRef PM) { + LLVMAddEarlyCSEPass(PM); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_lower_expect_intrinsic(LLVMPassManagerRef PM) { + LLVMAddLowerExpectIntrinsicPass(PM); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_type_based_alias_analysis(LLVMPassManagerRef PM) { + LLVMAddTypeBasedAliasAnalysisPass(PM); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_basic_alias_analysis(LLVMPassManagerRef PM) { + LLVMAddBasicAliasAnalysisPass(PM); + return Val_unit; +} |