Home | History | Annotate | Download | only in scalar
      1 (*===-- llvm_scalar_opts.mli - LLVM Ocaml Interface ------------*- OCaml -*-===*
      2  *
      3  *                     The LLVM Compiler Infrastructure
      4  *
      5  * This file is distributed under the University of Illinois Open Source
      6  * License. See LICENSE.TXT for details.
      7  *
      8  *===----------------------------------------------------------------------===*)
      9 
     10 (** Scalar Transforms.
     11 
     12     This interface provides an ocaml API for LLVM scalar transforms, the
     13     classes in the [LLVMScalarOpts] library. *)
     14 
     15 (** See the [llvm::createConstantPropogationPass] function. *)
     16 external add_constant_propagation : [<Llvm.PassManager.any] Llvm.PassManager.t
     17                                     -> unit
     18                                   = "llvm_add_constant_propagation"
     19 
     20 (** See the [llvm::createSCCPPass] function. *)
     21 external add_sccp : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
     22                   = "llvm_add_sccp"
     23 
     24 (** See [llvm::createDeadStoreEliminationPass] function. *)
     25 external add_dead_store_elimination : [<Llvm.PassManager.any] Llvm.PassManager.t
     26                                       -> unit
     27                                     = "llvm_add_dead_store_elimination"
     28 
     29 (** See The [llvm::createAggressiveDCEPass] function. *)
     30 external add_aggressive_dce : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
     31                             = "llvm_add_aggressive_dce"
     32 
     33 (** See the [llvm::createScalarReplAggregatesPass] function. *)
     34 external
     35 add_scalar_repl_aggregation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
     36                             = "llvm_add_scalar_repl_aggregation"
     37 
     38 (** See the [llvm::createScalarReplAggregatesPassSSA] function. *)
     39 external
     40 add_scalar_repl_aggregation_ssa : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
     41                             = "llvm_add_scalar_repl_aggregation_ssa"
     42 
     43 (** See the [llvm::createScalarReplAggregatesWithThreshold] function. *)
     44 external
     45 add_scalar_repl_aggregation_with_threshold : int -> [<Llvm.PassManager.any] Llvm.PassManager.t
     46                                              -> unit
     47                             = "llvm_add_scalar_repl_aggregation_with_threshold"
     48 
     49 (** See the [llvm::createIndVarSimplifyPass] function. *)
     50 external add_ind_var_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t
     51                                       -> unit
     52                                     = "llvm_add_ind_var_simplification"
     53 
     54 (** See the [llvm::createInstructionCombiningPass] function. *)
     55 external
     56 add_instruction_combination : [<Llvm.PassManager.any] Llvm.PassManager.t
     57                               -> unit
     58                             = "llvm_add_instruction_combination"
     59 
     60 (** See the [llvm::createLICMPass] function. *)
     61 external add_licm : [<Llvm.PassManager.any] Llvm.PassManager.t
     62                                 -> unit
     63                               = "llvm_add_licm"
     64 
     65 (** See the [llvm::createLoopUnswitchPass] function. *)
     66 external add_loop_unswitch : [<Llvm.PassManager.any] Llvm.PassManager.t
     67                                 -> unit
     68                               = "llvm_add_loop_unswitch"
     69 
     70 (** See the [llvm::createLoopUnrollPass] function. *)
     71 external add_loop_unroll : [<Llvm.PassManager.any] Llvm.PassManager.t
     72                                 -> unit
     73                               = "llvm_add_loop_unroll"
     74 
     75 (** See the [llvm::createLoopRotatePass] function. *)
     76 external add_loop_rotation : [<Llvm.PassManager.any] Llvm.PassManager.t
     77                              -> unit
     78                            = "llvm_add_loop_rotation"
     79 
     80 (** See the [llvm::createPromoteMemoryToRegisterPass] function. *)
     81 external
     82 add_memory_to_register_promotion : [<Llvm.PassManager.any] Llvm.PassManager.t
     83                                    -> unit
     84                                  = "llvm_add_memory_to_register_promotion"
     85 
     86 (** See the [llvm::createDemoteMemoryToRegisterPass] function. *)
     87 external
     88 add_memory_to_register_demotion : [<Llvm.PassManager.any] Llvm.PassManager.t
     89                                   -> unit
     90                                 = "llvm_add_memory_to_register_demotion"
     91 
     92 (** See the [llvm::createReassociatePass] function. *)
     93 external add_reassociation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
     94                            = "llvm_add_reassociation"
     95 
     96 (** See the [llvm::createJumpThreadingPass] function. *)
     97 external add_jump_threading : [<Llvm.PassManager.any] Llvm.PassManager.t
     98                                 -> unit
     99                               = "llvm_add_jump_threading"
    100 
    101 (** See the [llvm::createCFGSimplificationPass] function. *)
    102 external add_cfg_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t
    103                                   -> unit
    104                                 = "llvm_add_cfg_simplification"
    105 
    106 (** See the [llvm::createTailCallEliminationPass] function. *)
    107 external
    108 add_tail_call_elimination : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
    109                           = "llvm_add_tail_call_elimination" 
    110 
    111 (** See the [llvm::createGVNPass] function. *)
    112 external add_gvn : [<Llvm.PassManager.any] Llvm.PassManager.t
    113                    -> unit
    114                  = "llvm_add_gvn"
    115 
    116 (** See the [llvm::createMemCpyOptPass] function. *)
    117 external add_memcpy_opt : [<Llvm.PassManager.any] Llvm.PassManager.t
    118                                 -> unit
    119                               = "llvm_add_memcpy_opt"
    120 
    121 (** See the [llvm::createLoopDeletionPass] function. *)
    122 external add_loop_deletion : [<Llvm.PassManager.any] Llvm.PassManager.t
    123                              -> unit
    124                            = "llvm_add_loop_deletion"
    125 
    126 external add_loop_idiom : [<Llvm.PassManager.any] Llvm.PassManager.t
    127                              -> unit
    128                            = "llvm_add_loop_idiom"
    129 
    130 (** See the [llvm::createSimplifyLibCallsPass] function. *)
    131 external
    132 add_lib_call_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
    133                             = "llvm_add_lib_call_simplification"
    134 
    135 (** See the [llvm::createVerifierPass] function. *)
    136 external
    137 add_verifier : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
    138         = "llvm_add_verifier"
    139 
    140 (** See the [llvm::createCorrelatedValuePropagationPass] function. *)
    141 external
    142 add_correlated_value_propagation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
    143         = "llvm_add_correlated_value_propagation"
    144 
    145 (** See the [llvm::createEarlyCSE] function. *)
    146 external
    147 add_early_cse : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
    148         = "llvm_add_early_cse"
    149 
    150 (** See the [llvm::createLowerExpectIntrinsicPass] function. *)
    151 external
    152 add_lower_expect_intrinsic : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
    153         = "llvm_add_lower_expect_intrinsic"
    154 
    155 (** See the [llvm::createTypeBasedAliasAnalysisPass] function. *)
    156 external
    157 add_type_based_alias_analysis : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
    158         = "llvm_add_type_based_alias_analysis"
    159 
    160 (** See the [llvm::createBasicAliasAnalysisPass] function. *)
    161 external
    162 add_basic_alias_analysis : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
    163         = "llvm_add_basic_alias_analysis"
    164 
    165