1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
# 2 "asmcomp/power/arch.mli"
(**************************************************************************)
(* *)
(* OCaml *)
(* *)
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 1996 Institut National de Recherche en Informatique et *)
(* en Automatique. *)
(* *)
(* All rights reserved. This file is distributed under the terms of *)
(* the GNU Lesser General Public License version 2.1, with the *)
(* special exception on linking described in the file LICENSE. *)
(* *)
(**************************************************************************)
(* Specific operations for the PowerPC processor *)
type cmm_label = int
(* Do not introduce a dependency to Cmm *)
(* Machine-specific command-line options *)
val command_line_options : (string * Arg.spec * string) list
(* Specific operations *)
type specific_operation =
Imultaddf (* multiply and add *)
| Imultsubf (* multiply and subtract *)
| Ialloc_far of (* allocation in large functions *)
{ bytes : int; dbginfo : Debuginfo.alloc_dbginfo }
| Ipoll_far of { return_label : cmm_label option }
(* poll point in large functions *)
| Icheckbound_far (* bounds check in large functions *)
| Icheckbound_imm_far of int (* bounds check in large functions *)
(* Addressing modes *)
type addressing_mode =
Ibased of string * int (* symbol + displ *)
| Iindexed of int (* reg + displ *)
| Iindexed2 (* reg + reg *)
(* Sizes, endianness *)
val big_endian : bool
val size_addr : int
val size_int : int
val size_float : int
val allow_unaligned_access : bool
(* Behavior of division *)
val division_crashes_on_overflow : bool
(* Operations on addressing modes *)
val identity_addressing : addressing_mode
val offset_addressing : addressing_mode -> int -> addressing_mode
(* Printing operations and addressing modes *)
val print_addressing :
(Format.formatter -> 'a -> unit) -> addressing_mode ->
Format.formatter -> 'a array -> unit
val print_specific_operation :
(Format.formatter -> 'a -> unit) -> specific_operation ->
Format.formatter -> 'a array -> unit
(* Specific operations that are pure *)
val operation_is_pure : specific_operation -> bool
(* Specific operations that can raise *)
val operation_can_raise : specific_operation -> bool
|