+ (** [of_string rep] parses the data layout string representation [rep].
+ See the constructor [llvm::DataLayout::DataLayout]. *)
+ val of_string : string -> t
+
+ (** [as_string dl] is the string representation of the data layout [dl].
+ See the method [llvm::DataLayout::getStringRepresentation]. *)
+ val as_string : t -> string
+
+ (** [add_to_pass_manager pm dl] adds the data layout [dl] to
+ the pass manager [pm].
+ See the method [llvm::PassManagerBase::add]. *)
+ val add_to_pass_manager : [<Llvm.PassManager.any] Llvm.PassManager.t ->
+ t -> unit
+
+ (** Returns the byte order of a target, either [Endian.Big] or
+ [Endian.Little].
+ See the method [llvm::DataLayout::isLittleEndian]. *)
+ val byte_order : t -> Endian.t
+
+ (** Returns the pointer size in bytes for a target.
+ See the method [llvm::DataLayout::getPointerSize]. *)
+ val pointer_size : t -> int
+
+ (** Returns the integer type that is the same size as a pointer on a target.
+ See the method [llvm::DataLayout::getIntPtrType]. *)
+ val intptr_type : Llvm.llcontext -> t -> Llvm.lltype
+
+ (** Returns the pointer size in bytes for a target in a given address space.
+ See the method [llvm::DataLayout::getPointerSize]. *)
+ val qualified_pointer_size : int -> t -> int
+
+ (** Returns the integer type that is the same size as a pointer on a target
+ in a given address space.
+ See the method [llvm::DataLayout::getIntPtrType]. *)
+ val qualified_intptr_type : Llvm.llcontext -> int -> t -> Llvm.lltype
+
+ (** Computes the size of a type in bits for a target.
+ See the method [llvm::DataLayout::getTypeSizeInBits]. *)
+ val size_in_bits : Llvm.lltype -> t -> Int64.t
+
+ (** Computes the storage size of a type in bytes for a target.
+ See the method [llvm::DataLayout::getTypeStoreSize]. *)
+ val store_size : Llvm.lltype -> t -> Int64.t
+
+ (** Computes the ABI size of a type in bytes for a target.
+ See the method [llvm::DataLayout::getTypeAllocSize]. *)
+ val abi_size : Llvm.lltype -> t -> Int64.t
+
+ (** Computes the ABI alignment of a type in bytes for a target.
+ See the method [llvm::DataLayout::getTypeABISize]. *)
+ val abi_align : Llvm.lltype -> t -> int
+
+ (** Computes the call frame alignment of a type in bytes for a target.
+ See the method [llvm::DataLayout::getTypeABISize]. *)
+ val stack_align : Llvm.lltype -> t -> int
+
+ (** Computes the preferred alignment of a type in bytes for a target.
+ See the method [llvm::DataLayout::getTypeABISize]. *)
+ val preferred_align : Llvm.lltype -> t -> int
+
+ (** Computes the preferred alignment of a global variable in bytes for
+ a target. See the method [llvm::DataLayout::getPreferredAlignment]. *)
+ val preferred_align_of_global : Llvm.llvalue -> t -> int
+
+ (** Computes the structure element that contains the byte offset for a target.
+ See the method [llvm::StructLayout::getElementContainingOffset]. *)
+ val element_at_offset : Llvm.lltype -> Int64.t -> t -> int
+
+ (** Computes the byte offset of the indexed struct element for a target.
+ See the method [llvm::StructLayout::getElementContainingOffset]. *)
+ val offset_of_element : Llvm.lltype -> int -> t -> Int64.t
+end
+
+(** {6 Target} *)
+
+module Target : sig
+ type t
+
+ (** [default_triple ()] returns the default target triple for current
+ platform. *)
+ val default_triple : unit -> string
+
+ (** [first ()] returns the first target in the registered targets
+ list, or [None]. *)
+ val first : unit -> t option