Home | History | Annotate | Download | only in scalar_opts
      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::createAggressiveDCEPass] function. *)
     16 external add_aggressive_dce
     17   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     18   = "llvm_add_aggressive_dce"
     19 
     20 (** See the [llvm::createAlignmentFromAssumptionsPass] function. *)
     21 external add_alignment_from_assumptions
     22   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     23   = "llvm_add_alignment_from_assumptions"
     24 
     25 (** See the [llvm::createCFGSimplificationPass] function. *)
     26 external add_cfg_simplification
     27   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     28   = "llvm_add_cfg_simplification"
     29 
     30 (** See [llvm::createDeadStoreEliminationPass] function. *)
     31 external add_dead_store_elimination
     32   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     33   = "llvm_add_dead_store_elimination"
     34 
     35 (** See [llvm::createScalarizerPass] function. *)
     36 external add_scalarizer
     37   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     38   = "llvm_add_scalarizer"
     39 
     40 (** See [llvm::createMergedLoadStoreMotionPass] function. *)
     41 external add_merged_load_store_motion
     42   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     43   = "llvm_add_merged_load_store_motion"
     44 
     45 (** See the [llvm::createGVNPass] function. *)
     46 external add_gvn
     47   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     48   = "llvm_add_gvn"
     49 
     50 (** See the [llvm::createIndVarSimplifyPass] function. *)
     51 external add_ind_var_simplification
     52   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     53   = "llvm_add_ind_var_simplify"
     54 
     55 (** See the [llvm::createInstructionCombiningPass] function. *)
     56 external add_instruction_combination
     57   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     58   = "llvm_add_instruction_combining"
     59 
     60 (** See the [llvm::createJumpThreadingPass] function. *)
     61 external add_jump_threading
     62   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     63   = "llvm_add_jump_threading"
     64 
     65 (** See the [llvm::createLICMPass] function. *)
     66 external add_licm
     67   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     68   = "llvm_add_licm"
     69 
     70 (** See the [llvm::createLoopDeletionPass] function. *)
     71 external add_loop_deletion
     72   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     73   = "llvm_add_loop_deletion"
     74 
     75 (** See the [llvm::createLoopIdiomPass] function. *)
     76 external add_loop_idiom
     77   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     78   = "llvm_add_loop_idiom"
     79 
     80 (** See the [llvm::createLoopRotatePass] function. *)
     81 external add_loop_rotation
     82   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     83   = "llvm_add_loop_rotate"
     84 
     85 (** See the [llvm::createLoopRerollPass] function. *)
     86 external add_loop_reroll
     87   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     88   = "llvm_add_loop_reroll"
     89 
     90 (** See the [llvm::createLoopUnrollPass] function. *)
     91 external add_loop_unroll
     92   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     93   = "llvm_add_loop_unroll"
     94 
     95 (** See the [llvm::createLoopUnswitchPass] function. *)
     96 external add_loop_unswitch
     97   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
     98   = "llvm_add_loop_unswitch"
     99 
    100 (** See the [llvm::createMemCpyOptPass] function. *)
    101 external add_memcpy_opt
    102   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    103   = "llvm_add_memcpy_opt"
    104 
    105 (** See the [llvm::createPartiallyInlineLibCallsPass] function. *)
    106 external add_partially_inline_lib_calls
    107   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    108   = "llvm_add_partially_inline_lib_calls"
    109 
    110 (** See the [llvm::createLowerSwitchPass] function. *)
    111 external add_lower_switch
    112   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    113   = "llvm_add_lower_switch"
    114 
    115 (** See the [llvm::createPromoteMemoryToRegisterPass] function. *)
    116 external add_memory_to_register_promotion
    117   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    118   = "llvm_add_promote_memory_to_register"
    119 
    120 (** See the [llvm::createReassociatePass] function. *)
    121 external add_reassociation
    122   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    123   = "llvm_add_reassociation"
    124 
    125 (** See the [llvm::createSCCPPass] function. *)
    126 external add_sccp
    127   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    128   = "llvm_add_sccp"
    129 
    130 (** See the [llvm::createSROAPass] function. *)
    131 external add_scalar_repl_aggregation
    132   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    133   = "llvm_add_scalar_repl_aggregates"
    134 
    135 (** See the [llvm::createSROAPass] function. *)
    136 external add_scalar_repl_aggregation_ssa
    137   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    138   = "llvm_add_scalar_repl_aggregates_ssa"
    139 
    140 (** See the [llvm::createSROAPass] function. *)
    141 external add_scalar_repl_aggregation_with_threshold
    142   : int -> [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    143   = "llvm_add_scalar_repl_aggregates_with_threshold"
    144 
    145 (** See the [llvm::createSimplifyLibCallsPass] function. *)
    146 external add_lib_call_simplification
    147   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    148   = "llvm_add_simplify_lib_calls"
    149 
    150 (** See the [llvm::createTailCallEliminationPass] function. *)
    151 external add_tail_call_elimination
    152   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    153   = "llvm_add_tail_call_elimination"
    154 
    155 (** See the [llvm::createConstantPropagationPass] function. *)
    156 external add_constant_propagation
    157   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    158   = "llvm_add_constant_propagation"
    159 
    160 (** See the [llvm::createDemoteMemoryToRegisterPass] function. *)
    161 external add_memory_to_register_demotion
    162   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    163   = "llvm_add_demote_memory_to_register"
    164 
    165 (** See the [llvm::createVerifierPass] function. *)
    166 external add_verifier
    167   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    168   = "llvm_add_verifier"
    169 
    170 (** See the [llvm::createCorrelatedValuePropagationPass] function. *)
    171 external add_correlated_value_propagation
    172   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    173   = "llvm_add_correlated_value_propagation"
    174 
    175 (** See the [llvm::createEarlyCSE] function. *)
    176 external add_early_cse
    177   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    178   = "llvm_add_early_cse"
    179 
    180 (** See the [llvm::createLowerExpectIntrinsicPass] function. *)
    181 external add_lower_expect_intrinsic
    182   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    183   = "llvm_add_lower_expect_intrinsic"
    184 
    185 (** See the [llvm::createTypeBasedAliasAnalysisPass] function. *)
    186 external add_type_based_alias_analysis
    187   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    188   = "llvm_add_type_based_alias_analysis"
    189 
    190 (** See the [llvm::createScopedNoAliasAAPass] function. *)
    191 external add_scoped_no_alias_alias_analysis
    192   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    193   = "llvm_add_scoped_no_alias_aa"
    194 
    195 (** See the [llvm::createBasicAliasAnalysisPass] function. *)
    196 external add_basic_alias_analysis
    197   : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
    198   = "llvm_add_basic_alias_analysis"
    199