1*9880d681SAndroid Build Coastguard Worker(*===-- llvm_target.ml - LLVM OCaml Interface ------------------*- OCaml -*-===* 2*9880d681SAndroid Build Coastguard Worker * 3*9880d681SAndroid Build Coastguard Worker * The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker * 5*9880d681SAndroid Build Coastguard Worker * This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker * License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker * 8*9880d681SAndroid Build Coastguard Worker *===----------------------------------------------------------------------===*) 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workermodule Endian = struct 11*9880d681SAndroid Build Coastguard Worker type t = 12*9880d681SAndroid Build Coastguard Worker | Big 13*9880d681SAndroid Build Coastguard Worker | Little 14*9880d681SAndroid Build Coastguard Workerend 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workermodule CodeGenOptLevel = struct 17*9880d681SAndroid Build Coastguard Worker type t = 18*9880d681SAndroid Build Coastguard Worker | None 19*9880d681SAndroid Build Coastguard Worker | Less 20*9880d681SAndroid Build Coastguard Worker | Default 21*9880d681SAndroid Build Coastguard Worker | Aggressive 22*9880d681SAndroid Build Coastguard Workerend 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workermodule RelocMode = struct 25*9880d681SAndroid Build Coastguard Worker type t = 26*9880d681SAndroid Build Coastguard Worker | Default 27*9880d681SAndroid Build Coastguard Worker | Static 28*9880d681SAndroid Build Coastguard Worker | PIC 29*9880d681SAndroid Build Coastguard Worker | DynamicNoPIC 30*9880d681SAndroid Build Coastguard Workerend 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workermodule CodeModel = struct 33*9880d681SAndroid Build Coastguard Worker type t = 34*9880d681SAndroid Build Coastguard Worker | Default 35*9880d681SAndroid Build Coastguard Worker | JITDefault 36*9880d681SAndroid Build Coastguard Worker | Small 37*9880d681SAndroid Build Coastguard Worker | Kernel 38*9880d681SAndroid Build Coastguard Worker | Medium 39*9880d681SAndroid Build Coastguard Worker | Large 40*9880d681SAndroid Build Coastguard Workerend 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workermodule CodeGenFileType = struct 43*9880d681SAndroid Build Coastguard Worker type t = 44*9880d681SAndroid Build Coastguard Worker | AssemblyFile 45*9880d681SAndroid Build Coastguard Worker | ObjectFile 46*9880d681SAndroid Build Coastguard Workerend 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerexception Error of string 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerlet () = Callback.register_exception "Llvm_target.Error" (Error "") 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Workermodule DataLayout = struct 53*9880d681SAndroid Build Coastguard Worker type t 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker external of_string : string -> t = "llvm_datalayout_of_string" 56*9880d681SAndroid Build Coastguard Worker external as_string : t -> string = "llvm_datalayout_as_string" 57*9880d681SAndroid Build Coastguard Worker external byte_order : t -> Endian.t = "llvm_datalayout_byte_order" 58*9880d681SAndroid Build Coastguard Worker external pointer_size : t -> int = "llvm_datalayout_pointer_size" 59*9880d681SAndroid Build Coastguard Worker external intptr_type : Llvm.llcontext -> t -> Llvm.lltype 60*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_intptr_type" 61*9880d681SAndroid Build Coastguard Worker external qualified_pointer_size : int -> t -> int 62*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_qualified_pointer_size" 63*9880d681SAndroid Build Coastguard Worker external qualified_intptr_type : Llvm.llcontext -> int -> t -> Llvm.lltype 64*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_qualified_intptr_type" 65*9880d681SAndroid Build Coastguard Worker external size_in_bits : Llvm.lltype -> t -> Int64.t 66*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_size_in_bits" 67*9880d681SAndroid Build Coastguard Worker external store_size : Llvm.lltype -> t -> Int64.t 68*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_store_size" 69*9880d681SAndroid Build Coastguard Worker external abi_size : Llvm.lltype -> t -> Int64.t 70*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_abi_size" 71*9880d681SAndroid Build Coastguard Worker external abi_align : Llvm.lltype -> t -> int 72*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_abi_align" 73*9880d681SAndroid Build Coastguard Worker external stack_align : Llvm.lltype -> t -> int 74*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_stack_align" 75*9880d681SAndroid Build Coastguard Worker external preferred_align : Llvm.lltype -> t -> int 76*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_preferred_align" 77*9880d681SAndroid Build Coastguard Worker external preferred_align_of_global : Llvm.llvalue -> t -> int 78*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_preferred_align_of_global" 79*9880d681SAndroid Build Coastguard Worker external element_at_offset : Llvm.lltype -> Int64.t -> t -> int 80*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_element_at_offset" 81*9880d681SAndroid Build Coastguard Worker external offset_of_element : Llvm.lltype -> int -> t -> Int64.t 82*9880d681SAndroid Build Coastguard Worker = "llvm_datalayout_offset_of_element" 83*9880d681SAndroid Build Coastguard Workerend 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workermodule Target = struct 86*9880d681SAndroid Build Coastguard Worker type t 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Worker external default_triple : unit -> string = "llvm_target_default_triple" 89*9880d681SAndroid Build Coastguard Worker external first : unit -> t option = "llvm_target_first" 90*9880d681SAndroid Build Coastguard Worker external succ : t -> t option = "llvm_target_succ" 91*9880d681SAndroid Build Coastguard Worker external by_name : string -> t option = "llvm_target_by_name" 92*9880d681SAndroid Build Coastguard Worker external by_triple : string -> t = "llvm_target_by_triple" 93*9880d681SAndroid Build Coastguard Worker external name : t -> string = "llvm_target_name" 94*9880d681SAndroid Build Coastguard Worker external description : t -> string = "llvm_target_description" 95*9880d681SAndroid Build Coastguard Worker external has_jit : t -> bool = "llvm_target_has_jit" 96*9880d681SAndroid Build Coastguard Worker external has_target_machine : t -> bool = "llvm_target_has_target_machine" 97*9880d681SAndroid Build Coastguard Worker external has_asm_backend : t -> bool = "llvm_target_has_asm_backend" 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Worker let all () = 100*9880d681SAndroid Build Coastguard Worker let rec step elem lst = 101*9880d681SAndroid Build Coastguard Worker match elem with 102*9880d681SAndroid Build Coastguard Worker | Some target -> step (succ target) (target :: lst) 103*9880d681SAndroid Build Coastguard Worker | None -> lst 104*9880d681SAndroid Build Coastguard Worker in 105*9880d681SAndroid Build Coastguard Worker step (first ()) [] 106*9880d681SAndroid Build Coastguard Workerend 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Workermodule TargetMachine = struct 109*9880d681SAndroid Build Coastguard Worker type t 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Worker external create : triple:string -> ?cpu:string -> ?features:string -> 112*9880d681SAndroid Build Coastguard Worker ?level:CodeGenOptLevel.t -> ?reloc_mode:RelocMode.t -> 113*9880d681SAndroid Build Coastguard Worker ?code_model:CodeModel.t -> Target.t -> t 114*9880d681SAndroid Build Coastguard Worker = "llvm_create_targetmachine_bytecode" 115*9880d681SAndroid Build Coastguard Worker "llvm_create_targetmachine_native" 116*9880d681SAndroid Build Coastguard Worker external target : t -> Target.t 117*9880d681SAndroid Build Coastguard Worker = "llvm_targetmachine_target" 118*9880d681SAndroid Build Coastguard Worker external triple : t -> string 119*9880d681SAndroid Build Coastguard Worker = "llvm_targetmachine_triple" 120*9880d681SAndroid Build Coastguard Worker external cpu : t -> string 121*9880d681SAndroid Build Coastguard Worker = "llvm_targetmachine_cpu" 122*9880d681SAndroid Build Coastguard Worker external features : t -> string 123*9880d681SAndroid Build Coastguard Worker = "llvm_targetmachine_features" 124*9880d681SAndroid Build Coastguard Worker external data_layout : t -> DataLayout.t 125*9880d681SAndroid Build Coastguard Worker = "llvm_targetmachine_data_layout" 126*9880d681SAndroid Build Coastguard Worker external add_analysis_passes : [< Llvm.PassManager.any ] Llvm.PassManager.t -> t -> unit 127*9880d681SAndroid Build Coastguard Worker = "llvm_targetmachine_add_analysis_passes" 128*9880d681SAndroid Build Coastguard Worker external set_verbose_asm : bool -> t -> unit 129*9880d681SAndroid Build Coastguard Worker = "llvm_targetmachine_set_verbose_asm" 130*9880d681SAndroid Build Coastguard Worker external emit_to_file : Llvm.llmodule -> CodeGenFileType.t -> string -> 131*9880d681SAndroid Build Coastguard Worker t -> unit 132*9880d681SAndroid Build Coastguard Worker = "llvm_targetmachine_emit_to_file" 133*9880d681SAndroid Build Coastguard Worker external emit_to_memory_buffer : Llvm.llmodule -> CodeGenFileType.t -> 134*9880d681SAndroid Build Coastguard Worker t -> Llvm.llmemorybuffer 135*9880d681SAndroid Build Coastguard Worker = "llvm_targetmachine_emit_to_memory_buffer" 136*9880d681SAndroid Build Coastguard Workerend 137