xref: /llvm-project/llvm/bindings/ocaml/transforms/passbuilder/llvm_passbuilder.ml (revision 49610edd49cfbf9962729cf39c13cab2ac3cb0f9)
1(*===-- llvm_passbuilder.ml - LLVM OCaml Interface -------------*- OCaml -*-===*
2 *
3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 * See https://llvm.org/LICENSE.txt for license information.
5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 *
7 *===----------------------------------------------------------------------===*)
8
9type llpassbuilder_options
10
11external run_passes
12  : Llvm.llmodule
13  -> string
14  -> Llvm_target.TargetMachine.t
15  -> llpassbuilder_options
16  -> (unit, string) result
17  = "llvm_run_passes"
18
19external create_passbuilder_options : unit -> llpassbuilder_options =
20  "llvm_create_passbuilder_options"
21
22external passbuilder_options_set_verify_each
23  : llpassbuilder_options -> bool -> unit =
24  "llvm_passbuilder_options_set_verify_each"
25
26external passbuilder_options_set_debug_logging
27  : llpassbuilder_options -> bool -> unit =
28  "llvm_passbuilder_options_set_debug_logging"
29
30external passbuilder_options_set_loop_interleaving
31  : llpassbuilder_options -> bool -> unit =
32  "llvm_passbuilder_options_set_loop_interleaving"
33
34external passbuilder_options_set_loop_vectorization
35  : llpassbuilder_options -> bool -> unit =
36  "llvm_passbuilder_options_set_loop_vectorization"
37
38external passbuilder_options_set_slp_vectorization
39  : llpassbuilder_options -> bool -> unit =
40  "llvm_passbuilder_options_set_slp_vectorization"
41
42external passbuilder_options_set_loop_unrolling
43  : llpassbuilder_options -> bool -> unit =
44  "llvm_passbuilder_options_set_loop_unrolling"
45
46external passbuilder_options_set_forget_all_scev_in_loop_unroll
47  : llpassbuilder_options -> bool -> unit =
48  "llvm_passbuilder_options_set_forget_all_scev_in_loop_unroll"
49
50external passbuilder_options_set_licm_mssa_opt_cap
51  : llpassbuilder_options -> int -> unit =
52  "llvm_passbuilder_options_set_licm_mssa_opt_cap"
53
54external passbuilder_options_set_licm_mssa_no_acc_for_promotion_cap
55  : llpassbuilder_options -> int -> unit =
56  "llvm_passbuilder_options_set_licm_mssa_opt_cap"
57
58external passbuilder_options_set_call_graph_profile
59  : llpassbuilder_options -> bool -> unit =
60  "llvm_passbuilder_options_set_call_graph_profile"
61
62external passbuilder_options_set_merge_functions
63  : llpassbuilder_options -> bool -> unit =
64  "llvm_passbuilder_options_set_merge_functions"
65
66external passbuilder_options_set_inliner_threshold
67  : llpassbuilder_options -> int -> unit =
68  "llvm_passbuilder_options_set_inliner_threshold"
69
70external dispose_passbuilder_options : llpassbuilder_options -> unit =
71  "llvm_dispose_passbuilder_options"
72