e43caef9a341eff11e779179e2c1c424b6070522
[oota-llvm.git] / bindings / ocaml / target / llvm_target.ml
1 (*===-- llvm_target.ml - 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 module Endian = struct
11   type t =
12   | Big
13   | Little
14 end
15
16 module DataLayout = struct
17   type t
18
19   external of_string : string -> t = "llvm_datalayout_of_string"
20   external as_string : t -> string = "llvm_datalayout_as_string"
21   external add_to_pass_manager : [<Llvm.PassManager.any]
22                                  Llvm.PassManager.t -> t -> unit
23                                = "llvm_datalayout_add_to_pass_manager"
24   external byte_order : t -> Endian.t = "llvm_datalayout_byte_order"
25   external pointer_size : t -> int = "llvm_datalayout_pointer_size"
26   external intptr_type : Llvm.llcontext -> t -> Llvm.lltype
27                        = "llvm_datalayout_intptr_type"
28   external qualified_pointer_size : int -> t -> int
29                                   = "llvm_datalayout_qualified_pointer_size"
30   external qualified_intptr_type : Llvm.llcontext -> int -> t -> Llvm.lltype
31                                  = "llvm_datalayout_qualified_intptr_type"
32   external size_in_bits : Llvm.lltype -> t -> Int64.t
33                         = "llvm_datalayout_size_in_bits"
34   external store_size : Llvm.lltype -> t -> Int64.t
35                       = "llvm_datalayout_store_size"
36   external abi_size : Llvm.lltype -> t -> Int64.t
37                     = "llvm_datalayout_abi_size"
38   external abi_align : Llvm.lltype -> t -> int
39                      = "llvm_datalayout_abi_align"
40   external stack_align : Llvm.lltype -> t -> int
41                        = "llvm_datalayout_stack_align"
42   external preferred_align : Llvm.lltype -> t -> int
43                            = "llvm_datalayout_preferred_align"
44   external preferred_align_of_global : Llvm.llvalue -> t -> int
45                                    = "llvm_datalayout_preferred_align_of_global"
46   external element_at_offset : Llvm.lltype -> Int64.t -> t -> int
47                              = "llvm_datalayout_element_at_offset"
48   external offset_of_element : Llvm.lltype -> int -> t -> Int64.t
49                              = "llvm_datalayout_offset_of_element"
50 end
51