You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.205
Former-commit-id: 7f59f7e792705db773f1caecdaa823092f4e2927
This commit is contained in:
parent
5cd5df71cc
commit
8e12397d70
5
external/llvm/bindings/ocaml/transforms/CMakeLists.txt
vendored
Normal file
5
external/llvm/bindings/ocaml/transforms/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
add_subdirectory(ipo)
|
||||
add_subdirectory(passmgr_builder)
|
||||
add_subdirectory(scalar_opts)
|
||||
add_subdirectory(utils)
|
||||
add_subdirectory(vectorize)
|
5
external/llvm/bindings/ocaml/transforms/ipo/CMakeLists.txt
vendored
Normal file
5
external/llvm/bindings/ocaml/transforms/ipo/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
add_ocaml_library(llvm_ipo
|
||||
OCAML llvm_ipo
|
||||
OCAMLDEP llvm
|
||||
C ipo_ocaml
|
||||
LLVM ipo)
|
104
external/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
vendored
Normal file
104
external/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
/*===-- ipo_ocaml.c - LLVM OCaml Glue ---------------------------*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file glues LLVM's OCaml interface to its C interface. These functions *|
|
||||
|* are by and large transparent wrappers to the corresponding C functions. *|
|
||||
|* *|
|
||||
|* Note that these functions intentionally take liberties with the CAMLparamX *|
|
||||
|* macros, since most of the parameters are not GC heap objects. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#include "llvm-c/Transforms/IPO.h"
|
||||
#include "caml/mlvalues.h"
|
||||
#include "caml/misc.h"
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_argument_promotion(LLVMPassManagerRef PM) {
|
||||
LLVMAddArgumentPromotionPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_constant_merge(LLVMPassManagerRef PM) {
|
||||
LLVMAddConstantMergePass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_dead_arg_elimination(LLVMPassManagerRef PM) {
|
||||
LLVMAddDeadArgEliminationPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_function_attrs(LLVMPassManagerRef PM) {
|
||||
LLVMAddFunctionAttrsPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_function_inlining(LLVMPassManagerRef PM) {
|
||||
LLVMAddFunctionInliningPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_always_inliner(LLVMPassManagerRef PM) {
|
||||
LLVMAddAlwaysInlinerPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_global_dce(LLVMPassManagerRef PM) {
|
||||
LLVMAddGlobalDCEPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_global_optimizer(LLVMPassManagerRef PM) {
|
||||
LLVMAddGlobalOptimizerPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_ip_constant_propagation(LLVMPassManagerRef PM) {
|
||||
LLVMAddIPConstantPropagationPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_prune_eh(LLVMPassManagerRef PM) {
|
||||
LLVMAddPruneEHPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_ipsccp(LLVMPassManagerRef PM) {
|
||||
LLVMAddIPSCCPPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> all_but_main:bool -> unit */
|
||||
CAMLprim value llvm_add_internalize(LLVMPassManagerRef PM, value AllButMain) {
|
||||
LLVMAddInternalizePass(PM, Bool_val(AllButMain));
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_strip_dead_prototypes(LLVMPassManagerRef PM) {
|
||||
LLVMAddStripDeadPrototypesPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [`Module] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_strip_symbols(LLVMPassManagerRef PM) {
|
||||
LLVMAddStripSymbolsPass(PM);
|
||||
return Val_unit;
|
||||
}
|
51
external/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
vendored
Normal file
51
external/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
(*===-- llvm_ipo.ml - LLVM OCaml Interface --------------------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
external add_argument_promotion
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_argument_promotion"
|
||||
external add_constant_merge
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_constant_merge"
|
||||
external add_dead_arg_elimination
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_dead_arg_elimination"
|
||||
external add_function_attrs
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_function_attrs"
|
||||
external add_function_inlining
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_function_inlining"
|
||||
external add_always_inliner
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_always_inliner"
|
||||
external add_global_dce
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_global_dce"
|
||||
external add_global_optimizer
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_global_optimizer"
|
||||
external add_ipc_propagation
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_ip_constant_propagation"
|
||||
external add_prune_eh
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_prune_eh"
|
||||
external add_ipsccp
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_ipsccp"
|
||||
external add_internalize
|
||||
: [ `Module ] Llvm.PassManager.t -> all_but_main:bool -> unit
|
||||
= "llvm_add_internalize"
|
||||
external add_strip_dead_prototypes
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_strip_dead_prototypes"
|
||||
external add_strip_symbols
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_strip_symbols"
|
83
external/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
vendored
Normal file
83
external/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
vendored
Normal file
@ -0,0 +1,83 @@
|
||||
(*===-- llvm_ipo.mli - LLVM OCaml Interface -------------------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
(** IPO Transforms.
|
||||
|
||||
This interface provides an OCaml API for LLVM interprocedural optimizations, the
|
||||
classes in the [LLVMIPO] library. *)
|
||||
|
||||
(** See the [llvm::createAddArgumentPromotionPass] function. *)
|
||||
external add_argument_promotion
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_argument_promotion"
|
||||
|
||||
(** See the [llvm::createConstantMergePass] function. *)
|
||||
external add_constant_merge
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_constant_merge"
|
||||
|
||||
(** See the [llvm::createDeadArgEliminationPass] function. *)
|
||||
external add_dead_arg_elimination
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_dead_arg_elimination"
|
||||
|
||||
(** See the [llvm::createFunctionAttrsPass] function. *)
|
||||
external add_function_attrs
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_function_attrs"
|
||||
|
||||
(** See the [llvm::createFunctionInliningPass] function. *)
|
||||
external add_function_inlining
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_function_inlining"
|
||||
|
||||
(** See the [llvm::createAlwaysInlinerPass] function. *)
|
||||
external add_always_inliner
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_always_inliner"
|
||||
|
||||
(** See the [llvm::createGlobalDCEPass] function. *)
|
||||
external add_global_dce
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_global_dce"
|
||||
|
||||
(** See the [llvm::createGlobalOptimizerPass] function. *)
|
||||
external add_global_optimizer
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_global_optimizer"
|
||||
|
||||
(** See the [llvm::createIPConstantPropagationPass] function. *)
|
||||
external add_ipc_propagation
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_ip_constant_propagation"
|
||||
|
||||
(** See the [llvm::createPruneEHPass] function. *)
|
||||
external add_prune_eh
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_prune_eh"
|
||||
|
||||
(** See the [llvm::createIPSCCPPass] function. *)
|
||||
external add_ipsccp
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_ipsccp"
|
||||
|
||||
(** See the [llvm::createInternalizePass] function. *)
|
||||
external add_internalize
|
||||
: [ `Module ] Llvm.PassManager.t -> all_but_main:bool -> unit
|
||||
= "llvm_add_internalize"
|
||||
|
||||
(** See the [llvm::createStripDeadPrototypesPass] function. *)
|
||||
external add_strip_dead_prototypes
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_strip_dead_prototypes"
|
||||
|
||||
(** See the [llvm::createStripSymbolsPass] function. *)
|
||||
external add_strip_symbols
|
||||
: [ `Module ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_strip_symbols"
|
5
external/llvm/bindings/ocaml/transforms/passmgr_builder/CMakeLists.txt
vendored
Normal file
5
external/llvm/bindings/ocaml/transforms/passmgr_builder/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
add_ocaml_library(llvm_passmgr_builder
|
||||
OCAML llvm_passmgr_builder
|
||||
OCAMLDEP llvm
|
||||
C passmgr_builder_ocaml
|
||||
LLVM ipo)
|
32
external/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.ml
vendored
Normal file
32
external/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.ml
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
(*===-- llvm_passmgr_builder.ml - LLVM OCaml Interface --------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
type t
|
||||
|
||||
external create : unit -> t
|
||||
= "llvm_pmbuilder_create"
|
||||
external set_opt_level : int -> t -> unit
|
||||
= "llvm_pmbuilder_set_opt_level"
|
||||
external set_size_level : int -> t -> unit
|
||||
= "llvm_pmbuilder_set_size_level"
|
||||
external set_disable_unit_at_a_time : bool -> t -> unit
|
||||
= "llvm_pmbuilder_set_disable_unit_at_a_time"
|
||||
external set_disable_unroll_loops : bool -> t -> unit
|
||||
= "llvm_pmbuilder_set_disable_unroll_loops"
|
||||
external use_inliner_with_threshold : int -> t -> unit
|
||||
= "llvm_pmbuilder_use_inliner_with_threshold"
|
||||
external populate_function_pass_manager
|
||||
: [ `Function ] Llvm.PassManager.t -> t -> unit
|
||||
= "llvm_pmbuilder_populate_function_pass_manager"
|
||||
external populate_module_pass_manager
|
||||
: [ `Module ] Llvm.PassManager.t -> t -> unit
|
||||
= "llvm_pmbuilder_populate_module_pass_manager"
|
||||
external populate_lto_pass_manager
|
||||
: [ `Module ] Llvm.PassManager.t -> internalize:bool -> run_inliner:bool -> t -> unit
|
||||
= "llvm_pmbuilder_populate_lto_pass_manager"
|
54
external/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli
vendored
Normal file
54
external/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
(*===-- llvm_passmgr_builder.mli - LLVM OCaml Interface -------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
(** Pass Manager Builder.
|
||||
|
||||
This interface provides an OCaml API for LLVM pass manager builder
|
||||
from the [LLVMCore] library. *)
|
||||
|
||||
type t
|
||||
|
||||
(** See the [llvm::PassManagerBuilder] function. *)
|
||||
external create : unit -> t
|
||||
= "llvm_pmbuilder_create"
|
||||
|
||||
(** See the [llvm::PassManagerBuilder::OptLevel] function. *)
|
||||
external set_opt_level : int -> t -> unit
|
||||
= "llvm_pmbuilder_set_opt_level"
|
||||
|
||||
(** See the [llvm::PassManagerBuilder::SizeLevel] function. *)
|
||||
external set_size_level : int -> t -> unit
|
||||
= "llvm_pmbuilder_set_size_level"
|
||||
|
||||
(** See the [llvm::PassManagerBuilder::DisableUnitAtATime] function. *)
|
||||
external set_disable_unit_at_a_time : bool -> t -> unit
|
||||
= "llvm_pmbuilder_set_disable_unit_at_a_time"
|
||||
|
||||
(** See the [llvm::PassManagerBuilder::DisableUnrollLoops] function. *)
|
||||
external set_disable_unroll_loops : bool -> t -> unit
|
||||
= "llvm_pmbuilder_set_disable_unroll_loops"
|
||||
|
||||
(** See the [llvm::PassManagerBuilder::Inliner] function. *)
|
||||
external use_inliner_with_threshold : int -> t -> unit
|
||||
= "llvm_pmbuilder_use_inliner_with_threshold"
|
||||
|
||||
(** See the [llvm::PassManagerBuilder::populateFunctionPassManager] function. *)
|
||||
external populate_function_pass_manager
|
||||
: [ `Function ] Llvm.PassManager.t -> t -> unit
|
||||
= "llvm_pmbuilder_populate_function_pass_manager"
|
||||
|
||||
(** See the [llvm::PassManagerBuilder::populateModulePassManager] function. *)
|
||||
external populate_module_pass_manager
|
||||
: [ `Module ] Llvm.PassManager.t -> t -> unit
|
||||
= "llvm_pmbuilder_populate_module_pass_manager"
|
||||
|
||||
(** See the [llvm::PassManagerBuilder::populateLTOPassManager] function. *)
|
||||
external populate_lto_pass_manager
|
||||
: [ `Module ] Llvm.PassManager.t -> internalize:bool -> run_inliner:bool -> t -> unit
|
||||
= "llvm_pmbuilder_populate_lto_pass_manager"
|
111
external/llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c
vendored
Normal file
111
external/llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c
vendored
Normal file
@ -0,0 +1,111 @@
|
||||
/*===-- passmgr_builder_ocaml.c - LLVM OCaml Glue ---------------*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file glues LLVM's OCaml interface to its C interface. These functions *|
|
||||
|* are by and large transparent wrappers to the corresponding C functions. *|
|
||||
|* *|
|
||||
|* Note that these functions intentionally take liberties with the CAMLparamX *|
|
||||
|* macros, since most of the parameters are not GC heap objects. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#include "llvm-c/Transforms/PassManagerBuilder.h"
|
||||
#include "caml/mlvalues.h"
|
||||
#include "caml/custom.h"
|
||||
#include "caml/misc.h"
|
||||
|
||||
#define PMBuilder_val(v) (*(LLVMPassManagerBuilderRef *)(Data_custom_val(v)))
|
||||
|
||||
static void llvm_finalize_pmbuilder(value PMB) {
|
||||
LLVMPassManagerBuilderDispose(PMBuilder_val(PMB));
|
||||
}
|
||||
|
||||
static struct custom_operations pmbuilder_ops = {
|
||||
(char *) "Llvm_passmgr_builder.t",
|
||||
llvm_finalize_pmbuilder,
|
||||
custom_compare_default,
|
||||
custom_hash_default,
|
||||
custom_serialize_default,
|
||||
custom_deserialize_default,
|
||||
custom_compare_ext_default
|
||||
};
|
||||
|
||||
static value alloc_pmbuilder(LLVMPassManagerBuilderRef Ref) {
|
||||
value Val = alloc_custom(&pmbuilder_ops,
|
||||
sizeof(LLVMPassManagerBuilderRef), 0, 1);
|
||||
PMBuilder_val(Val) = Ref;
|
||||
return Val;
|
||||
}
|
||||
|
||||
/* t -> unit */
|
||||
CAMLprim value llvm_pmbuilder_create(value Unit) {
|
||||
return alloc_pmbuilder(LLVMPassManagerBuilderCreate());
|
||||
}
|
||||
|
||||
/* int -> t -> unit */
|
||||
CAMLprim value llvm_pmbuilder_set_opt_level(value OptLevel, value PMB) {
|
||||
LLVMPassManagerBuilderSetOptLevel(PMBuilder_val(PMB), Int_val(OptLevel));
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* int -> t -> unit */
|
||||
CAMLprim value llvm_pmbuilder_set_size_level(value SizeLevel, value PMB) {
|
||||
LLVMPassManagerBuilderSetSizeLevel(PMBuilder_val(PMB), Int_val(SizeLevel));
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* int -> t -> unit */
|
||||
CAMLprim value llvm_pmbuilder_use_inliner_with_threshold(
|
||||
value Threshold, value PMB) {
|
||||
LLVMPassManagerBuilderSetOptLevel(PMBuilder_val(PMB), Int_val(Threshold));
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* bool -> t -> unit */
|
||||
CAMLprim value llvm_pmbuilder_set_disable_unit_at_a_time(
|
||||
value DisableUnitAtATime, value PMB) {
|
||||
LLVMPassManagerBuilderSetDisableUnitAtATime(
|
||||
PMBuilder_val(PMB), Bool_val(DisableUnitAtATime));
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* bool -> t -> unit */
|
||||
CAMLprim value llvm_pmbuilder_set_disable_unroll_loops(
|
||||
value DisableUnroll, value PMB) {
|
||||
LLVMPassManagerBuilderSetDisableUnrollLoops(
|
||||
PMBuilder_val(PMB), Bool_val(DisableUnroll));
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [ `Function ] Llvm.PassManager.t -> t -> unit */
|
||||
CAMLprim value llvm_pmbuilder_populate_function_pass_manager(
|
||||
LLVMPassManagerRef PM, value PMB) {
|
||||
LLVMPassManagerBuilderPopulateFunctionPassManager(
|
||||
PMBuilder_val(PMB), PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [ `Module ] Llvm.PassManager.t -> t -> unit */
|
||||
CAMLprim value llvm_pmbuilder_populate_module_pass_manager(
|
||||
LLVMPassManagerRef PM, value PMB) {
|
||||
LLVMPassManagerBuilderPopulateModulePassManager(
|
||||
PMBuilder_val(PMB), PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [ `Module ] Llvm.PassManager.t ->
|
||||
internalize:bool -> run_inliner:bool -> t -> unit */
|
||||
CAMLprim value llvm_pmbuilder_populate_lto_pass_manager(
|
||||
LLVMPassManagerRef PM, value Internalize, value RunInliner,
|
||||
value PMB) {
|
||||
LLVMPassManagerBuilderPopulateLTOPassManager(
|
||||
PMBuilder_val(PMB), PM,
|
||||
Bool_val(Internalize), Bool_val(RunInliner));
|
||||
return Val_unit;
|
||||
}
|
5
external/llvm/bindings/ocaml/transforms/scalar_opts/CMakeLists.txt
vendored
Normal file
5
external/llvm/bindings/ocaml/transforms/scalar_opts/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
add_ocaml_library(llvm_scalar_opts
|
||||
OCAML llvm_scalar_opts
|
||||
OCAMLDEP llvm
|
||||
C scalar_opts_ocaml
|
||||
LLVM scalaropts)
|
120
external/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml
vendored
Normal file
120
external/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
(*===-- llvm_scalar_opts.ml - LLVM OCaml Interface ------------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
external add_aggressive_dce
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_aggressive_dce"
|
||||
external add_alignment_from_assumptions
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_alignment_from_assumptions"
|
||||
external add_cfg_simplification
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_cfg_simplification"
|
||||
external add_dead_store_elimination
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_dead_store_elimination"
|
||||
external add_scalarizer
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scalarizer"
|
||||
external add_merged_load_store_motion
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_merged_load_store_motion"
|
||||
external add_gvn
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_gvn"
|
||||
external add_ind_var_simplification
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_ind_var_simplify"
|
||||
external add_instruction_combination
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_instruction_combining"
|
||||
external add_jump_threading
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_jump_threading"
|
||||
external add_licm
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_licm"
|
||||
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_loop_rotation
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_rotate"
|
||||
external add_loop_reroll
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_reroll"
|
||||
external add_loop_unroll
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_unroll"
|
||||
external add_loop_unswitch
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_unswitch"
|
||||
external add_memcpy_opt
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_memcpy_opt"
|
||||
external add_partially_inline_lib_calls
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_partially_inline_lib_calls"
|
||||
external add_lower_switch
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_lower_switch"
|
||||
external add_memory_to_register_promotion
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_promote_memory_to_register"
|
||||
external add_reassociation
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_reassociation"
|
||||
external add_sccp
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_sccp"
|
||||
external add_scalar_repl_aggregation
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scalar_repl_aggregates"
|
||||
external add_scalar_repl_aggregation_ssa
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scalar_repl_aggregates_ssa"
|
||||
external add_scalar_repl_aggregation_with_threshold
|
||||
: int -> [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scalar_repl_aggregates_with_threshold"
|
||||
external add_lib_call_simplification
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_simplify_lib_calls"
|
||||
external add_tail_call_elimination
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_tail_call_elimination"
|
||||
external add_constant_propagation
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_constant_propagation"
|
||||
external add_memory_to_register_demotion
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_demote_memory_to_register"
|
||||
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_scoped_no_alias_alias_analysis
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scoped_no_alias_aa"
|
||||
external add_basic_alias_analysis
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_basic_alias_analysis"
|
198
external/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli
vendored
Normal file
198
external/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli
vendored
Normal file
@ -0,0 +1,198 @@
|
||||
(*===-- llvm_scalar_opts.mli - LLVM OCaml Interface -----------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
(** Scalar Transforms.
|
||||
|
||||
This interface provides an OCaml API for LLVM scalar transforms, the
|
||||
classes in the [LLVMScalarOpts] library. *)
|
||||
|
||||
(** See the [llvm::createAggressiveDCEPass] function. *)
|
||||
external add_aggressive_dce
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_aggressive_dce"
|
||||
|
||||
(** See the [llvm::createAlignmentFromAssumptionsPass] function. *)
|
||||
external add_alignment_from_assumptions
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_alignment_from_assumptions"
|
||||
|
||||
(** See the [llvm::createCFGSimplificationPass] function. *)
|
||||
external add_cfg_simplification
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_cfg_simplification"
|
||||
|
||||
(** See [llvm::createDeadStoreEliminationPass] function. *)
|
||||
external add_dead_store_elimination
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_dead_store_elimination"
|
||||
|
||||
(** See [llvm::createScalarizerPass] function. *)
|
||||
external add_scalarizer
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scalarizer"
|
||||
|
||||
(** See [llvm::createMergedLoadStoreMotionPass] function. *)
|
||||
external add_merged_load_store_motion
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_merged_load_store_motion"
|
||||
|
||||
(** See the [llvm::createGVNPass] function. *)
|
||||
external add_gvn
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_gvn"
|
||||
|
||||
(** See the [llvm::createIndVarSimplifyPass] function. *)
|
||||
external add_ind_var_simplification
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_ind_var_simplify"
|
||||
|
||||
(** See the [llvm::createInstructionCombiningPass] function. *)
|
||||
external add_instruction_combination
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_instruction_combining"
|
||||
|
||||
(** See the [llvm::createJumpThreadingPass] function. *)
|
||||
external add_jump_threading
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_jump_threading"
|
||||
|
||||
(** See the [llvm::createLICMPass] function. *)
|
||||
external add_licm
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_licm"
|
||||
|
||||
(** See the [llvm::createLoopDeletionPass] function. *)
|
||||
external add_loop_deletion
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_deletion"
|
||||
|
||||
(** See the [llvm::createLoopIdiomPass] function. *)
|
||||
external add_loop_idiom
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_idiom"
|
||||
|
||||
(** See the [llvm::createLoopRotatePass] function. *)
|
||||
external add_loop_rotation
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_rotate"
|
||||
|
||||
(** See the [llvm::createLoopRerollPass] function. *)
|
||||
external add_loop_reroll
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_reroll"
|
||||
|
||||
(** See the [llvm::createLoopUnrollPass] function. *)
|
||||
external add_loop_unroll
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_unroll"
|
||||
|
||||
(** See the [llvm::createLoopUnswitchPass] function. *)
|
||||
external add_loop_unswitch
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_unswitch"
|
||||
|
||||
(** See the [llvm::createMemCpyOptPass] function. *)
|
||||
external add_memcpy_opt
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_memcpy_opt"
|
||||
|
||||
(** See the [llvm::createPartiallyInlineLibCallsPass] function. *)
|
||||
external add_partially_inline_lib_calls
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_partially_inline_lib_calls"
|
||||
|
||||
(** See the [llvm::createLowerSwitchPass] function. *)
|
||||
external add_lower_switch
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_lower_switch"
|
||||
|
||||
(** See the [llvm::createPromoteMemoryToRegisterPass] function. *)
|
||||
external add_memory_to_register_promotion
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_promote_memory_to_register"
|
||||
|
||||
(** See the [llvm::createReassociatePass] function. *)
|
||||
external add_reassociation
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_reassociation"
|
||||
|
||||
(** See the [llvm::createSCCPPass] function. *)
|
||||
external add_sccp
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_sccp"
|
||||
|
||||
(** See the [llvm::createSROAPass] function. *)
|
||||
external add_scalar_repl_aggregation
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scalar_repl_aggregates"
|
||||
|
||||
(** See the [llvm::createSROAPass] function. *)
|
||||
external add_scalar_repl_aggregation_ssa
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scalar_repl_aggregates_ssa"
|
||||
|
||||
(** See the [llvm::createSROAPass] function. *)
|
||||
external add_scalar_repl_aggregation_with_threshold
|
||||
: int -> [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scalar_repl_aggregates_with_threshold"
|
||||
|
||||
(** See the [llvm::createSimplifyLibCallsPass] function. *)
|
||||
external add_lib_call_simplification
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_simplify_lib_calls"
|
||||
|
||||
(** See the [llvm::createTailCallEliminationPass] function. *)
|
||||
external add_tail_call_elimination
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_tail_call_elimination"
|
||||
|
||||
(** See the [llvm::createConstantPropagationPass] function. *)
|
||||
external add_constant_propagation
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_constant_propagation"
|
||||
|
||||
(** See the [llvm::createDemoteMemoryToRegisterPass] function. *)
|
||||
external add_memory_to_register_demotion
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_demote_memory_to_register"
|
||||
|
||||
(** 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::createScopedNoAliasAAPass] function. *)
|
||||
external add_scoped_no_alias_alias_analysis
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_scoped_no_alias_aa"
|
||||
|
||||
(** See the [llvm::createBasicAliasAnalysisPass] function. *)
|
||||
external add_basic_alias_analysis
|
||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_basic_alias_analysis"
|
243
external/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c
vendored
Normal file
243
external/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c
vendored
Normal file
@ -0,0 +1,243 @@
|
||||
/*===-- scalar_opts_ocaml.c - LLVM OCaml Glue -------------------*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file glues LLVM's OCaml interface to its C interface. These functions *|
|
||||
|* are by and large transparent wrappers to the corresponding C functions. *|
|
||||
|* *|
|
||||
|* Note that these functions intentionally take liberties with the CAMLparamX *|
|
||||
|* macros, since most of the parameters are not GC heap objects. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#include "llvm-c/Transforms/Scalar.h"
|
||||
#include "caml/mlvalues.h"
|
||||
#include "caml/misc.h"
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_aggressive_dce(LLVMPassManagerRef PM) {
|
||||
LLVMAddAggressiveDCEPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_alignment_from_assumptions(LLVMPassManagerRef PM) {
|
||||
LLVMAddAlignmentFromAssumptionsPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_cfg_simplification(LLVMPassManagerRef PM) {
|
||||
LLVMAddCFGSimplificationPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_dead_store_elimination(LLVMPassManagerRef PM) {
|
||||
LLVMAddDeadStoreEliminationPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_scalarizer(LLVMPassManagerRef PM) {
|
||||
LLVMAddScalarizerPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_merged_load_store_motion(LLVMPassManagerRef PM) {
|
||||
LLVMAddMergedLoadStoreMotionPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_gvn(LLVMPassManagerRef PM) {
|
||||
LLVMAddGVNPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_ind_var_simplify(LLVMPassManagerRef PM) {
|
||||
LLVMAddIndVarSimplifyPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_instruction_combining(LLVMPassManagerRef PM) {
|
||||
LLVMAddInstructionCombiningPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_jump_threading(LLVMPassManagerRef PM) {
|
||||
LLVMAddJumpThreadingPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_licm(LLVMPassManagerRef PM) {
|
||||
LLVMAddLICMPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_loop_deletion(LLVMPassManagerRef PM) {
|
||||
LLVMAddLoopDeletionPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<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_loop_rotate(LLVMPassManagerRef PM) {
|
||||
LLVMAddLoopRotatePass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_loop_reroll(LLVMPassManagerRef PM) {
|
||||
LLVMAddLoopRerollPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_loop_unroll(LLVMPassManagerRef PM) {
|
||||
LLVMAddLoopUnrollPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_loop_unswitch(LLVMPassManagerRef PM) {
|
||||
LLVMAddLoopUnswitchPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_memcpy_opt(LLVMPassManagerRef PM) {
|
||||
LLVMAddMemCpyOptPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_partially_inline_lib_calls(LLVMPassManagerRef PM) {
|
||||
LLVMAddPartiallyInlineLibCallsPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_lower_switch(LLVMPassManagerRef PM) {
|
||||
LLVMAddLowerSwitchPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_promote_memory_to_register(LLVMPassManagerRef PM) {
|
||||
LLVMAddPromoteMemoryToRegisterPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_reassociation(LLVMPassManagerRef PM) {
|
||||
LLVMAddReassociatePass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_sccp(LLVMPassManagerRef PM) {
|
||||
LLVMAddSCCPPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_scalar_repl_aggregates(LLVMPassManagerRef PM) {
|
||||
LLVMAddScalarReplAggregatesPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_scalar_repl_aggregates_ssa(LLVMPassManagerRef PM) {
|
||||
LLVMAddScalarReplAggregatesPassSSA(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* int -> [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_scalar_repl_aggregates_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_simplify_lib_calls(LLVMPassManagerRef PM) {
|
||||
LLVMAddSimplifyLibCallsPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_tail_call_elimination(LLVMPassManagerRef PM) {
|
||||
LLVMAddTailCallEliminationPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_constant_propagation(LLVMPassManagerRef PM) {
|
||||
LLVMAddConstantPropagationPass(PM);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||
CAMLprim value llvm_add_demote_memory_to_register(LLVMPassManagerRef PM) {
|
||||
LLVMAddDemoteMemoryToRegisterPass(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_scoped_no_alias_aa(LLVMPassManagerRef PM) {
|
||||
LLVMAddScopedNoAliasAAPass(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;
|
||||
}
|
5
external/llvm/bindings/ocaml/transforms/utils/CMakeLists.txt
vendored
Normal file
5
external/llvm/bindings/ocaml/transforms/utils/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
add_ocaml_library(llvm_transform_utils
|
||||
OCAML llvm_transform_utils
|
||||
OCAMLDEP llvm
|
||||
C transform_utils_ocaml
|
||||
LLVM transformutils)
|
10
external/llvm/bindings/ocaml/transforms/utils/llvm_transform_utils.ml
vendored
Normal file
10
external/llvm/bindings/ocaml/transforms/utils/llvm_transform_utils.ml
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
(*===-- llvm_transform_utils.ml - LLVM OCaml Interface --------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
external clone_module : Llvm.llmodule -> Llvm.llmodule = "llvm_clone_module"
|
17
external/llvm/bindings/ocaml/transforms/utils/llvm_transform_utils.mli
vendored
Normal file
17
external/llvm/bindings/ocaml/transforms/utils/llvm_transform_utils.mli
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
(*===-- llvm_transform_utils.mli - LLVM OCaml Interface -------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
(** Transform Utilities.
|
||||
|
||||
This interface provides an OCaml API for LLVM transform utilities, the
|
||||
classes in the [LLVMTransformUtils] library. *)
|
||||
|
||||
(** [clone_module m] returns an exact copy of module [m].
|
||||
See the [llvm::CloneModule] function. *)
|
||||
external clone_module : Llvm.llmodule -> Llvm.llmodule = "llvm_clone_module"
|
31
external/llvm/bindings/ocaml/transforms/utils/transform_utils_ocaml.c
vendored
Normal file
31
external/llvm/bindings/ocaml/transforms/utils/transform_utils_ocaml.c
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
/*===-- vectorize_ocaml.c - LLVM OCaml Glue ---------------------*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file glues LLVM's OCaml interface to its C interface. These functions *|
|
||||
|* are by and large transparent wrappers to the corresponding C functions. *|
|
||||
|* *|
|
||||
|* Note that these functions intentionally take liberties with the CAMLparamX *|
|
||||
|* macros, since most of the parameters are not GC heap objects. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#include "llvm-c/Core.h"
|
||||
#include "caml/mlvalues.h"
|
||||
#include "caml/misc.h"
|
||||
|
||||
/*
|
||||
* Do not move directly into external. This function is here to pull in
|
||||
* -lLLVMTransformUtils, which would otherwise be not linked on static builds,
|
||||
* as ld can't see the reference from OCaml code.
|
||||
*/
|
||||
|
||||
/* llmodule -> llmodule */
|
||||
CAMLprim LLVMModuleRef llvm_clone_module(LLVMModuleRef M) {
|
||||
return LLVMCloneModule(M);
|
||||
}
|
5
external/llvm/bindings/ocaml/transforms/vectorize/CMakeLists.txt
vendored
Normal file
5
external/llvm/bindings/ocaml/transforms/vectorize/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
add_ocaml_library(llvm_vectorize
|
||||
OCAML llvm_vectorize
|
||||
OCAMLDEP llvm
|
||||
C vectorize_ocaml
|
||||
LLVM vectorize)
|
18
external/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.ml
vendored
Normal file
18
external/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.ml
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
(*===-- llvm_vectorize.ml - LLVM OCaml Interface --------------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
external add_bb_vectorize
|
||||
: [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_bb_vectorize"
|
||||
external add_loop_vectorize
|
||||
: [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_vectorize"
|
||||
external add_slp_vectorize
|
||||
: [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_slp_vectorize"
|
28
external/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.mli
vendored
Normal file
28
external/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.mli
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
(*===-- llvm_vectorize.mli - LLVM OCaml Interface -------------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
(** Vectorize Transforms.
|
||||
|
||||
This interface provides an OCaml API for LLVM vectorize transforms, the
|
||||
classes in the [LLVMVectorize] library. *)
|
||||
|
||||
(** See the [llvm::createBBVectorizePass] function. *)
|
||||
external add_bb_vectorize
|
||||
: [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_bb_vectorize"
|
||||
|
||||
(** See the [llvm::createLoopVectorizePass] function. *)
|
||||
external add_loop_vectorize
|
||||
: [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_loop_vectorize"
|
||||
|
||||
(** See the [llvm::createSLPVectorizerPass] function. *)
|
||||
external add_slp_vectorize
|
||||
: [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
|
||||
= "llvm_add_slp_vectorize"
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user