Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/MLRISC/mltree/machine-int.sig
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/mltree/machine-int.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 744 - (view) (download) (as text)

1 : leunga 744 (*
2 :     * How to evaluate constants for various widths.
3 :     * The widths are dynamic.
4 :     *)
5 :     signature MACHINE_INT =
6 :     sig
7 :    
8 :     type machine_int = IntInf.int
9 :     type ty = int
10 :    
11 :     exception MLTreeArith
12 :    
13 :     (* some common constants *)
14 :     val int_0 : machine_int
15 :     val int_1 : machine_int
16 :     val int_2 : machine_int
17 :     val int_3 : machine_int
18 :     val int_4 : machine_int
19 :     val int_7 : machine_int
20 :     val int_8 : machine_int
21 :     val int_m1 : machine_int (* ~1 *)
22 :     val int_m2 : machine_int (* ~2 *)
23 :     val int_m3 : machine_int (* ~3 *)
24 :     val int_m4 : machine_int (* ~4 *)
25 :     val int_15 : machine_int
26 :     val int_16 : machine_int
27 :     val int_31 : machine_int
28 :     val int_32 : machine_int
29 :     val int_63 : machine_int
30 :     val int_64 : machine_int
31 :     val int_0xff : machine_int
32 :     val int_0x100 : machine_int
33 :     val int_0xffff : machine_int
34 :     val int_0x10000 : machine_int
35 :     val int_0xffffffff : machine_int
36 :     val int_0x100000000 : machine_int
37 :    
38 :     (* machine_int <-> other types *)
39 :     val fromString : ty * string -> machine_int (* raises MLTreeArith *)
40 :     val fromInt : ty * int -> machine_int
41 :     val fromWord : ty * word -> machine_int
42 :     val fromWord32 : ty * Word32.word -> machine_int
43 :     val toString : ty * machine_int -> string
44 :     val toHexString : ty * machine_int -> string
45 :     val toBinString : ty * machine_int -> string
46 :     val toInt : ty * machine_int -> int
47 :     val toWord : ty * machine_int -> word
48 :     val toWord32 : ty * machine_int -> Word32.word
49 :    
50 :     (* when in doubt, use this! *)
51 :     val narrowToType : ty * IntInf.int -> machine_int
52 :    
53 :     (* queries *)
54 :     val isNeg : machine_int -> bool
55 :     val isPos : machine_int -> bool
56 :     val isZero : machine_int -> bool
57 :     val isNonNeg : machine_int -> bool
58 :     val isNonPos : machine_int -> bool
59 :     val isEven : machine_int -> bool
60 :     val isOdd : machine_int -> bool
61 :    
62 :     (* two's complement operators *)
63 :     val NEG : ty * machine_int -> machine_int
64 :     val ABS : ty * machine_int -> machine_int
65 :     val ADD : ty * machine_int * machine_int -> machine_int
66 :     val SUB : ty * machine_int * machine_int -> machine_int
67 :     val MULS : ty * machine_int * machine_int -> machine_int
68 :     val DIVS : ty * machine_int * machine_int -> machine_int
69 :     val QUOTS : ty * machine_int * machine_int -> machine_int
70 :     val REMS : ty * machine_int * machine_int -> machine_int
71 :     val MULU : ty * machine_int * machine_int -> machine_int
72 :     val DIVU : ty * machine_int * machine_int -> machine_int
73 :     val QUOTU : ty * machine_int * machine_int -> machine_int
74 :     val REMU : ty * machine_int * machine_int -> machine_int
75 :     val ABST : ty * machine_int -> machine_int
76 :     val NEGT : ty * machine_int -> machine_int
77 :     val ADDT : ty * machine_int * machine_int -> machine_int
78 :     val SUBT : ty * machine_int * machine_int -> machine_int
79 :     val MULT : ty * machine_int * machine_int -> machine_int
80 :     val DIVT : ty * machine_int * machine_int -> machine_int
81 :     val QUOTT : ty * machine_int * machine_int -> machine_int
82 :     val REMT : ty * machine_int * machine_int -> machine_int
83 :    
84 :     (* bit operators *)
85 :     val NOTB : ty * machine_int -> machine_int
86 :     val ANDB : ty * machine_int * machine_int -> machine_int
87 :     val ORB : ty * machine_int * machine_int -> machine_int
88 :     val XORB : ty * machine_int * machine_int -> machine_int
89 :     val EQVB : ty * machine_int * machine_int -> machine_int
90 :     val SLL : ty * machine_int * machine_int -> machine_int
91 :     val SRL : ty * machine_int * machine_int -> machine_int
92 :     val SRA : ty * machine_int * machine_int -> machine_int
93 :     val BITSLICE : ty * (int * int) list * machine_int -> machine_int
94 :    
95 :     (* Other useful operators *)
96 :     val Sll : ty * machine_int * int -> machine_int
97 :     val Srl : ty * machine_int * int -> machine_int
98 :     val Sra : ty * machine_int * int -> machine_int
99 :     val pow2 : int -> machine_int
100 :     val maxOfType : ty -> machine_int
101 :     val minOfType : ty -> machine_int
102 :     val isInTypeRange : ty * machine_int -> bool
103 :    
104 :     val bitOf : ty * machine_int * int -> word (* 0w0 or 0w1 *)
105 :     val byteOf : ty * machine_int * int -> word (* 8 bits *)
106 :     val halfOf : ty * machine_int * int -> word (* 16 bits *)
107 :     val wordOf : ty * machine_int * int -> Word32.word (* 32 bits *)
108 :    
109 :     (* type promotion *)
110 :     val SX : ty * ty * machine_int -> machine_int
111 :     val ZX : ty * ty * machine_int -> machine_int
112 :    
113 :     (* comparisions *)
114 :     val EQ : ty * machine_int * machine_int -> bool
115 :     val NE : ty * machine_int * machine_int -> bool
116 :     val GT : ty * machine_int * machine_int -> bool
117 :     val GE : ty * machine_int * machine_int -> bool
118 :     val LT : ty * machine_int * machine_int -> bool
119 :     val LE : ty * machine_int * machine_int -> bool
120 :     val LTU : ty * machine_int * machine_int -> bool
121 :     val GTU : ty * machine_int * machine_int -> bool
122 :     val LEU : ty * machine_int * machine_int -> bool
123 :     val GEU : ty * machine_int * machine_int -> bool
124 :     end

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0