1 (* Copyright (C
) 1999-2007 Henry Cejtin
, Matthew Fluet
, Suresh
2 * Jagannathan
, and Stephen Weeks
.
3 * Copyright (C
) 1997-2000 NEC Research Institute
.
5 * MLton is released under a BSD
-style license
.
6 * See the file MLton
-LICENSE for details
.
9 (* Primitive names are special
-- see atoms
/prim
.fun. *)
16 val sizeInBits
: Primitive
.Int32
.int
17 val sizeInBitsWord
: Primitive
.Word32
.word
19 val + : word * word -> word
20 val andb
: word * word -> word
21 val <<?
: word * Primitive
.Word32
.word -> word
22 val * : word * word -> word
24 val notb
: word -> word
25 val orb
: word * word -> word
26 val quotUnsafe
: word * word -> word
27 val remUnsafe
: word * word -> word
28 val rolUnsafe
: word * Primitive
.Word32
.word -> word
29 val rorUnsafe
: word * Primitive
.Word32
.word -> word
30 val ~
>>?
: word * Primitive
.Word32
.word -> word
31 val >>?
: word * Primitive
.Word32
.word -> word
32 val - : word * word -> word
33 val xorb
: word * word -> word
35 val < : word * word -> bool
36 val <= : word * word -> bool
37 val > : word * word -> bool
38 val >= : word * word -> bool
39 val compare
: word * word -> Primitive
.Order
.order
40 val min
: word * word -> word
41 val max
: word * word -> word
44 structure Primitive
= struct
52 val fromBigUnsafe
= _prim
"WordU8_extdToWord1": big
-> word;
53 val toBig
= _prim
"WordU1_extdToWord8": word -> big
;
54 val sizeInBits
: Int32
.int = 1
60 val fromBigUnsafe
= _prim
"WordU8_extdToWord2": big
-> word;
61 val toBig
= _prim
"WordU2_extdToWord8": word -> big
;
62 val sizeInBits
: Int32
.int = 2
68 val fromBigUnsafe
= _prim
"WordU8_extdToWord3": big
-> word;
69 val toBig
= _prim
"WordU3_extdToWord8": word -> big
;
70 val sizeInBits
: Int32
.int = 3
76 val fromBigUnsafe
= _prim
"WordU8_extdToWord4": big
-> word;
77 val toBig
= _prim
"WordU4_extdToWord8": word -> big
;
78 val sizeInBits
: Int32
.int = 4
84 val fromBigUnsafe
= _prim
"WordU8_extdToWord5": big
-> word;
85 val toBig
= _prim
"WordU5_extdToWord8": word -> big
;
86 val sizeInBits
: Int32
.int = 5
92 val fromBigUnsafe
= _prim
"WordU8_extdToWord6": big
-> word;
93 val toBig
= _prim
"WordU6_extdToWord8": word -> big
;
94 val sizeInBits
: Int32
.int = 6
100 val fromBigUnsafe
= _prim
"WordU8_extdToWord7": big
-> word;
101 val toBig
= _prim
"WordU7_extdToWord8": word -> big
;
102 val sizeInBits
: Int32
.int = 7
108 val sizeInBits
: Int32
.int = 8
109 val sizeInBitsWord
: Word32
.word =
110 IntWordConv
.zextdFromInt32ToWord32 sizeInBits
112 val + = _prim
"Word8_add": word * word -> word;
113 val andb
= _prim
"Word8_andb": word * word -> word;
114 val <<?
= _prim
"Word8_lshift": word * Word32
.word -> word;
115 val * = _prim
"WordU8_mul": word * word -> word;
116 val ~
= _prim
"Word8_neg": word -> word;
117 val notb
= _prim
"Word8_notb": word -> word;
118 val orb
= _prim
"Word8_orb": word * word -> word;
119 val quotUnsafe
= _prim
"WordU8_quot": word * word -> word;
120 val remUnsafe
= _prim
"WordU8_rem": word * word -> word;
121 val rolUnsafe
= _prim
"Word8_rol": word * Word32
.word -> word;
122 val rorUnsafe
= _prim
"Word8_ror": word * Word32
.word -> word;
123 val ~
>>?
= _prim
"WordS8_rshift": word * Word32
.word -> word;
124 val >>?
= _prim
"WordU8_rshift": word * Word32
.word -> word;
125 val - = _prim
"Word8_sub": word * word -> word;
126 val xorb
= _prim
"Word8_xorb": word * word -> word;
128 val < = _prim
"WordU8_lt": word * word -> bool;
130 structure Word8 : PRIM_WORD
=
134 structure S
= IntegralComparisons(Word8)
142 type big
= Word16
.word
143 val fromBigUnsafe
= _prim
"WordU16_extdToWord9": big
-> word;
144 val toBig
= _prim
"WordU9_extdToWord16": word -> big
;
145 val sizeInBits
: Int32
.int = 9
150 type big
= Word16
.word
151 val fromBigUnsafe
= _prim
"WordU16_extdToWord10": big
-> word;
152 val toBig
= _prim
"WordU10_extdToWord16": word -> big
;
153 val sizeInBits
: Int32
.int = 10
158 type big
= Word16
.word
159 val fromBigUnsafe
= _prim
"WordU16_extdToWord11": big
-> word;
160 val toBig
= _prim
"WordU11_extdToWord16": word -> big
;
161 val sizeInBits
: Int32
.int = 11
166 type big
= Word16
.word
167 val fromBigUnsafe
= _prim
"WordU16_extdToWord12": big
-> word;
168 val toBig
= _prim
"WordU12_extdToWord16": word -> big
;
169 val sizeInBits
: Int32
.int = 12
174 type big
= Word16
.word
175 val fromBigUnsafe
= _prim
"WordU16_extdToWord13": big
-> word;
176 val toBig
= _prim
"WordU13_extdToWord16": word -> big
;
177 val sizeInBits
: Int32
.int = 13
182 type big
= Word16
.word
183 val fromBigUnsafe
= _prim
"WordU16_extdToWord14": big
-> word;
184 val toBig
= _prim
"WordU14_extdToWord16": word -> big
;
185 val sizeInBits
: Int32
.int = 14
190 type big
= Word16
.word
191 val fromBigUnsafe
= _prim
"WordU16_extdToWord15": big
-> word;
192 val toBig
= _prim
"WordU15_extdToWord16": word -> big
;
193 val sizeInBits
: Int32
.int = 15
199 val sizeInBits
: Int32
.int = 16
200 val sizeInBitsWord
: Word32
.word =
201 IntWordConv
.zextdFromInt32ToWord32 sizeInBits
203 val + = _prim
"Word16_add": word * word -> word;
204 val andb
= _prim
"Word16_andb": word * word -> word;
205 val <<?
= _prim
"Word16_lshift": word * Word32
.word -> word;
206 val * = _prim
"WordU16_mul": word * word -> word;
207 val ~
= _prim
"Word16_neg": word -> word;
208 val notb
= _prim
"Word16_notb": word -> word;
209 val orb
= _prim
"Word16_orb": word * word -> word;
210 val quotUnsafe
= _prim
"WordU16_quot": word * word -> word;
211 val remUnsafe
= _prim
"WordU16_rem": word * word -> word;
212 val rolUnsafe
= _prim
"Word16_rol": word * Word32
.word -> word;
213 val rorUnsafe
= _prim
"Word16_ror": word * Word32
.word -> word;
214 val ~
>>?
= _prim
"WordS16_rshift": word * Word32
.word -> word;
215 val >>?
= _prim
"WordU16_rshift": word * Word32
.word -> word;
216 val - = _prim
"Word16_sub": word * word -> word;
217 val xorb
= _prim
"Word16_xorb": word * word -> word;
219 val < = _prim
"WordU16_lt": word * word -> bool;
221 structure Word16
: PRIM_WORD
=
225 structure S
= IntegralComparisons(Word16
)
233 type big
= Word32
.word
234 val fromBigUnsafe
= _prim
"WordU32_extdToWord17": big
-> word;
235 val toBig
= _prim
"WordU17_extdToWord32": word -> big
;
236 val sizeInBits
: Int32
.int = 17
241 type big
= Word32
.word
242 val fromBigUnsafe
= _prim
"WordU32_extdToWord18": big
-> word;
243 val toBig
= _prim
"WordU18_extdToWord32": word -> big
;
244 val sizeInBits
: Int32
.int = 18
249 type big
= Word32
.word
250 val fromBigUnsafe
= _prim
"WordU32_extdToWord19": big
-> word;
251 val toBig
= _prim
"WordU19_extdToWord32": word -> big
;
252 val sizeInBits
: Int32
.int = 19
257 type big
= Word32
.word
258 val fromBigUnsafe
= _prim
"WordU32_extdToWord20": big
-> word;
259 val toBig
= _prim
"WordU20_extdToWord32": word -> big
;
260 val sizeInBits
: Int32
.int = 20
265 type big
= Word32
.word
266 val fromBigUnsafe
= _prim
"WordU32_extdToWord21": big
-> word;
267 val toBig
= _prim
"WordU21_extdToWord32": word -> big
;
268 val sizeInBits
: Int32
.int = 21
273 type big
= Word32
.word
274 val fromBigUnsafe
= _prim
"WordU32_extdToWord22": big
-> word;
275 val toBig
= _prim
"WordU22_extdToWord32": word -> big
;
276 val sizeInBits
: Int32
.int = 22
281 type big
= Word32
.word
282 val fromBigUnsafe
= _prim
"WordU32_extdToWord23": big
-> word;
283 val toBig
= _prim
"WordU23_extdToWord32": word -> big
;
284 val sizeInBits
: Int32
.int = 23
289 type big
= Word32
.word
290 val fromBigUnsafe
= _prim
"WordU32_extdToWord24": big
-> word;
291 val toBig
= _prim
"WordU24_extdToWord32": word -> big
;
292 val sizeInBits
: Int32
.int = 24
297 type big
= Word32
.word
298 val fromBigUnsafe
= _prim
"WordU32_extdToWord25": big
-> word;
299 val toBig
= _prim
"WordU25_extdToWord32": word -> big
;
300 val sizeInBits
: Int32
.int = 25
305 type big
= Word32
.word
306 val fromBigUnsafe
= _prim
"WordU32_extdToWord26": big
-> word;
307 val toBig
= _prim
"WordU26_extdToWord32": word -> big
;
308 val sizeInBits
: Int32
.int = 26
313 type big
= Word32
.word
314 val fromBigUnsafe
= _prim
"WordU32_extdToWord27": big
-> word;
315 val toBig
= _prim
"WordU27_extdToWord32": word -> big
;
316 val sizeInBits
: Int32
.int = 27
321 type big
= Word32
.word
322 val fromBigUnsafe
= _prim
"WordU32_extdToWord28": big
-> word;
323 val toBig
= _prim
"WordU28_extdToWord32": word -> big
;
324 val sizeInBits
: Int32
.int = 28
329 type big
= Word32
.word
330 val fromBigUnsafe
= _prim
"WordU32_extdToWord29": big
-> word;
331 val toBig
= _prim
"WordU29_extdToWord32": word -> big
;
332 val sizeInBits
: Int32
.int = 29
337 type big
= Word32
.word
338 val fromBigUnsafe
= _prim
"WordU32_extdToWord30": big
-> word;
339 val toBig
= _prim
"WordU30_extdToWord32": word -> big
;
340 val sizeInBits
: Int32
.int = 30
345 type big
= Word32
.word
346 val fromBigUnsafe
= _prim
"WordU32_extdToWord31": big
-> word;
347 val toBig
= _prim
"WordU31_extdToWord32": word -> big
;
348 val sizeInBits
: Int32
.int = 31
354 val sizeInBits
: Int32
.int = 32
355 val sizeInBitsWord
: Word32
.word =
356 IntWordConv
.zextdFromInt32ToWord32 sizeInBits
358 val + = _prim
"Word32_add": word * word -> word;
359 val andb
= _prim
"Word32_andb": word * word -> word;
360 val <<?
= _prim
"Word32_lshift": word * Word32
.word -> word;
361 val * = _prim
"WordU32_mul": word * word -> word;
362 val ~
= _prim
"Word32_neg": word -> word;
363 val notb
= _prim
"Word32_notb": word -> word;
364 val orb
= _prim
"Word32_orb": word * word -> word;
365 val quotUnsafe
= _prim
"WordU32_quot": word * word -> word;
366 val remUnsafe
= _prim
"WordU32_rem": word * word -> word;
367 val rolUnsafe
= _prim
"Word32_rol": word * Word32
.word -> word;
368 val rorUnsafe
= _prim
"Word32_ror": word * Word32
.word -> word;
369 val ~
>>?
= _prim
"WordS32_rshift": word * Word32
.word -> word;
370 val >>?
= _prim
"WordU32_rshift": word * Word32
.word -> word;
371 val - = _prim
"Word32_sub": word * word -> word;
372 val xorb
= _prim
"Word32_xorb": word * word -> word;
374 val < = _prim
"WordU32_lt": word * word -> bool;
376 structure Word32
: PRIM_WORD
=
380 structure S
= IntegralComparisons(Word32
)
389 val sizeInBits
: Int32
.int = 64
390 val sizeInBitsWord
: Word32
.word =
391 IntWordConv
.zextdFromInt32ToWord32 sizeInBits
393 val + = _prim
"Word64_add": word * word -> word;
394 val andb
= _prim
"Word64_andb": word * word -> word;
395 val <<?
= _prim
"Word64_lshift": word * Word32
.word -> word;
396 val * = _prim
"WordU64_mul": word * word -> word;
397 val ~
= _prim
"Word64_neg": word -> word;
398 val notb
= _prim
"Word64_notb": word -> word;
399 val orb
= _prim
"Word64_orb": word * word -> word;
400 val quotUnsafe
= _prim
"WordU64_quot": word * word -> word;
401 val remUnsafe
= _prim
"WordU64_rem": word * word -> word;
402 val rolUnsafe
= _prim
"Word64_rol": word * Word32
.word -> word;
403 val rorUnsafe
= _prim
"Word64_ror": word * Word32
.word -> word;
404 val ~
>>?
= _prim
"WordS64_rshift": word * Word32
.word -> word;
405 val >>?
= _prim
"WordU64_rshift": word * Word32
.word -> word;
406 val - = _prim
"Word64_sub": word * word -> word;
407 val xorb
= _prim
"Word64_xorb": word * word -> word;
409 val < = _prim
"WordU64_lt": word * word -> bool;
411 structure Word64
: PRIM_WORD
=
415 structure S
= IntegralComparisons(Word64
)