Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / regression / conversion.sml
CommitLineData
7f918cf1
CE
1val w8t16 = Word16.fromLarge o Word8.toLarge
2val w16t32 = Word32.fromLarge o Word16.toLarge
3val w32t64 = Word64.fromLarge o Word32.toLarge
4
5(* All of these should become no-ops *)
6val id8_1 = Word8.fromLarge o Word8.toLarge
7val id8_2 = Word8.fromLarge o Word8.toLargeX
8val id8_3 = Word8.fromLarge o Word16.toLarge o Word16.fromLarge o Word8.toLarge
9val id8_4 = Word8.fromLarge o Word16.toLargeX o Word16.fromLarge o Word8.toLargeX
10val id8_5 = Word8.fromLarge o Word16.toLarge o Word16.fromLarge o Word8.toLargeX
11
12val id16_1 = Word16.fromLarge o Word16.toLarge
13val id16_2 = Word16.fromLarge o Word16.toLargeX
14val id16_3 = Word16.fromLarge o Word32.toLarge o Word32.fromLarge o Word16.toLarge
15val id16_4 = Word16.fromLarge o Word32.toLarge o Word32.fromLarge o Word16.toLargeX
16val id16_5 = Word16.fromLarge o Word32.toLargeX o Word32.fromLarge o Word16.toLarge
17val id16_6 = Word16.fromLarge o Word32.toLargeX o Word32.fromLarge o Word16.toLargeX
18val xx16_1 = Word16.fromLarge o Word8.toLarge o Word8.fromLarge o Word16.toLarge
19val xx16_2 = Word16.fromLarge o Word8.toLarge o Word8.fromLarge o Word16.toLargeX
20val xx16_3 = Word16.fromLarge o Word8.toLargeX o Word8.fromLarge o Word16.toLarge
21val xx16_4 = Word16.fromLarge o Word8.toLargeX o Word8.fromLarge o Word16.toLargeX
22
23val id32_1 = Word32.fromLarge o Word32.toLarge
24val id32_2 = Word32.fromLarge o Word32.toLargeX
25val id32_3 = Word32.fromLarge o Word64.toLarge o Word64.fromLarge o Word32.toLarge
26val id32_4 = Word32.fromLarge o Word64.toLarge o Word64.fromLarge o Word32.toLargeX
27val id32_5 = Word32.fromLarge o Word64.toLargeX o Word64.fromLarge o Word32.toLarge
28val id32_6 = Word32.fromLarge o Word64.toLargeX o Word64.fromLarge o Word32.toLargeX
29val xx32_1 = Word32.fromLarge o Word8.toLarge o Word8.fromLarge o Word32.toLarge
30val xx32_2 = Word32.fromLarge o Word8.toLarge o Word8.fromLarge o Word32.toLargeX
31val xx32_3 = Word32.fromLarge o Word16.toLargeX o Word16.fromLarge o Word32.toLarge
32val xx32_4 = Word32.fromLarge o Word16.toLargeX o Word16.fromLarge o Word32.toLargeX
33
34val id64_1 = Word64.fromLarge o Word64.toLarge
35val id64_2 = Word64.fromLarge o Word64.toLargeX
36val id64_3 = Word64.fromLarge o Word64.toLarge o Word64.fromLarge o Word64.toLarge
37val id64_4 = Word64.fromLarge o Word64.toLarge o Word64.fromLarge o Word64.toLargeX
38val id64_5 = Word64.fromLarge o Word64.toLargeX o Word64.fromLarge o Word64.toLarge
39val id64_6 = Word64.fromLarge o Word64.toLargeX o Word64.fromLarge o Word64.toLargeX
40val xx64_1 = Word64.fromLarge o Word32.toLarge o Word32.fromLarge o Word64.toLarge
41val xx64_2 = Word64.fromLarge o Word32.toLarge o Word32.fromLarge o Word64.toLargeX
42val xx64_3 = Word64.fromLarge o Word16.toLargeX o Word16.fromLarge o Word64.toLarge
43val xx64_4 = Word64.fromLarge o Word16.toLargeX o Word16.fromLarge o Word64.toLargeX
44
45val c8t16_1 = Word16.fromLarge o Word8.toLarge
46val c8t16_2 = Word16.fromLarge o Word8.toLargeX
47val c8t16_3 = Word16.fromLarge o Word8.toLarge o id8_3
48val c8t16_4 = Word16.fromLarge o Word8.toLarge o id8_4
49val c8t16_5 = Word16.fromLarge o Word8.toLarge o id8_5
50
51val c8t32_1 = Word32.fromLarge o Word16.toLarge o Word16.fromLarge o Word8.toLarge
52val c8t32_2 = Word32.fromLarge o Word16.toLarge o Word16.fromLarge o Word8.toLargeX
53val c8t32_3 = Word32.fromLarge o Word16.toLargeX o Word16.fromLarge o Word8.toLarge
54val c8t32_4 = Word32.fromLarge o Word16.toLargeX o Word16.fromLarge o Word8.toLargeX
55
56val c8t64_1 = Word64.fromLarge o Word16.toLarge o Word16.fromLarge o Word8.toLarge
57val c8t64_2 = Word64.fromLarge o Word16.toLarge o Word16.fromLarge o Word8.toLargeX
58val c8t64_3 = Word64.fromLarge o Word16.toLargeX o Word16.fromLarge o Word8.toLarge
59val c8t64_4 = Word64.fromLarge o Word16.toLargeX o Word16.fromLarge o Word8.toLargeX
60val c8t64_5 = Word64.fromLarge o Word8.toLarge o Word8.fromLarge o Word16.toLarge o Word16.fromLarge o Word8.toLarge
61val c8t64_6 = Word64.fromLarge o Word8.toLargeX o Word8.fromLarge o Word16.toLarge o Word16.fromLarge o Word8.toLargeX
62
63val c16t8_1 = Word8.fromLarge o Word16.toLarge
64val c16t8_2 = Word8.fromLarge o Word16.toLargeX
65val c16t8_3 = Word8.fromLarge o Word32.toLarge o Word32.fromLarge o Word16.toLargeX
66val c16t8_4 = id8_3 o Word8.fromLarge o Word16.toLargeX
67val c16t8_5 = id8_4 o Word8.fromLarge o Word16.toLarge
68val c16t8_6 = id8_5 o Word8.fromLarge o Word16.toLargeX
69
70(* These tests rely on Int = Int32 to be useful *)
71val w16t8z = Word8.fromInt o Word16.toInt
72val w16t8s = Word8.fromInt o Word16.toIntX
73
74val c16t32_1 = Word32.fromLarge o Word8.toLargeX o Word8.fromLarge o Word16.toLarge
75val c16t32_2 = Word32.fromLarge o Word8.toLarge o Word8.fromLarge o Word16.toLargeX
76val c16t32_3 = Word32.fromLarge o Word16.toLarge
77val c16t32_4 = Word32.fromLarge o Word16.toLargeX
78
79val c16t64_1 = Word64.fromLarge o Word32.toLarge o Word32.fromLarge o Word16.toLarge
80val c16t64_2 = Word64.fromLarge o Word32.toLarge o Word32.fromLarge o Word16.toLargeX
81val c16t64_3 = Word64.fromLarge o Word32.toLargeX o Word32.fromLarge o Word16.toLarge
82val c16t64_4 = Word64.fromLarge o Word32.toLargeX o Word32.fromLarge o Word16.toLargeX
83val c16t64_5 = Word64.fromLarge o Word8.toLarge o Word8.fromLarge o Word16.toLarge
84val c16t64_6 = Word64.fromLarge o Word8.toLarge o Word8.fromLarge o Word16.toLargeX
85val c16t64_7 = Word64.fromLarge o Word8.toLargeX o Word8.fromLarge o Word16.toLarge
86val c16t64_8 = Word64.fromLarge o Word8.toLargeX o Word8.fromLarge o Word16.toLargeX
87
88val c32t8_1 = id8_4 o Word8.fromLarge o Word32.toLarge o id32_1
89val c32t8_2 = id8_3 o Word8.fromLarge o Word32.toLargeX o id32_2
90val c32t8_3 = id8_2 o Word8.fromLarge o Word32.toLarge o id32_3
91val c32t8_4 = id8_1 o Word8.fromLarge o Word32.toLargeX o id32_4
92
93val c32t16_1 = Word16.fromLarge o Word8.toLarge o Word8.fromLarge o Word32.toLarge
94val c32t16_2 = Word16.fromLarge o Word8.toLarge o Word8.fromLarge o Word32.toLargeX
95val c32t16_3 = Word16.fromLarge o Word8.toLargeX o Word8.fromLarge o Word32.toLarge
96val c32t16_4 = Word16.fromLarge o Word8.toLargeX o Word8.fromLarge o Word32.toLargeX
97val c32t16_5 = Word16.fromLarge o Word64.toLarge o Word64.fromLarge o Word32.toLarge
98val c32t16_6 = Word16.fromLarge o Word64.toLargeX o Word64.fromLarge o Word32.toLarge
99val c32t16_7 = Word16.fromLarge o Word64.toLarge o Word64.fromLarge o Word32.toLargeX
100val c32t16_8 = Word16.fromLarge o Word64.toLargeX o Word64.fromLarge o Word32.toLargeX
101
102val c64t8_1 = id8_4 o Word8.fromLarge o Word64.toLarge o id64_1
103val c64t8_2 = id8_3 o Word8.fromLarge o Word64.toLargeX o id64_2
104val c64t8_3 = id8_2 o Word8.fromLarge o Word64.toLarge o id64_3
105val c64t8_4 = id8_1 o Word8.fromLarge o Word64.toLargeX o id64_4
106
107val c64t16_1 = Word16.fromLarge o Word8.toLarge o Word8.fromLarge o Word64.toLarge
108val c64t16_2 = Word16.fromLarge o Word8.toLarge o Word8.fromLarge o Word64.toLargeX
109val c64t16_3 = Word16.fromLarge o Word8.toLargeX o Word8.fromLarge o Word64.toLarge
110val c64t16_4 = Word16.fromLarge o Word8.toLargeX o Word8.fromLarge o Word64.toLargeX
111val c64t16_5 = Word16.fromLarge o Word32.toLarge o Word32.fromLarge o Word64.toLarge
112val c64t16_6 = Word16.fromLarge o Word32.toLargeX o Word32.fromLarge o Word64.toLarge
113val c64t16_7 = Word16.fromLarge o Word32.toLarge o Word32.fromLarge o Word64.toLargeX
114val c64t16_8 = Word16.fromLarge o Word32.toLargeX o Word32.fromLarge o Word64.toLargeX
115
116val f8t8 = [ id8_1, id8_2, id8_3, id8_4, id8_5 ]
117val f8t16 = [ c8t16_1, c8t16_2, c8t16_3, c8t16_4, c8t16_5 ]
118val f8t32 = [ c8t32_1, c8t32_2, c8t32_3, c8t32_4 ]
119val f8t64 = [ c8t64_1, c8t64_2, c8t64_3, c8t64_4, c8t64_5, c8t64_6 ]
120
121val f16t8 = [ c16t8_1, c16t8_2, c16t8_3, c16t8_5, c16t8_6, w16t8z, w16t8s ]
122val f16t16 = [ id16_1, id16_2, id16_3, id16_4, id16_5, id16_6, xx16_1, xx16_2, xx16_3, xx16_4 ]
123val f16t32 = [ c16t32_1, c16t32_2, c16t32_3, c16t32_4 ]
124val f16t64 = [ c16t64_1, c16t64_2, c16t64_3, c16t64_4, c16t64_6, c16t64_7, c16t64_8 ]
125
126val f32t8 = [ c32t8_1, c32t8_2, c32t8_3, c32t8_4 ]
127val f32t16 = [ c32t16_1, c32t16_2, c32t16_3, c32t16_4, c32t16_5, c32t16_6, c32t16_7, c32t16_8 ]
128val f32t32 = [ id32_1, id32_2, id32_3, id32_4, id32_5, id32_6, xx32_1, xx32_2, xx32_3, xx32_4 ]
129val f32t64 = [ ]
130
131val f64t8 = [ c64t8_1, c64t8_2, c64t8_3, c64t8_4 ]
132val f64t16 = [ c64t16_1, c64t16_2, c64t16_3, c64t16_4, c64t16_5, c64t16_6, c64t16_7, c64t16_8 ]
133val f64t32 = [ ]
134val f64t64 = [ id64_1, id64_2, id64_3, id64_4, id64_5, id64_6, xx64_1, xx64_2, xx64_3, xx64_4 ]
135
136val x8 = [ 0w0, 0w1, 0w2, 0w3, 0wx7f, 0wx7e, 0wxfe, 0wxff ]
137val x16 = [ 0wx7fff, 0wxfffe, 0wxffff ] @ List.map w8t16 x8
138val x32 = [ 0wx7fffffff, 0wxfffffffe, 0wxffffffff ] @ List.map w16t32 x16
139val x64 = [ 0wx7fffffffffffffff, 0wxfffffffffffffffe, 0wxffffffffffffffff ] @ List.map w32t64 x32
140
141fun doit (out, xl) f =
142 let
143 val () = List.app (print o out o f) xl
144 in
145 print "\n"
146 end
147
148val () = List.app (doit (Word8.toString, x8)) f8t8
149val () = List.app (doit (Word8.toString, x16)) f16t8
150val () = List.app (doit (Word8.toString, x32)) f32t8
151val () = List.app (doit (Word8.toString, x64)) f64t8
152
153val () = List.app (doit (Word16.toString, x8)) f8t16
154val () = List.app (doit (Word16.toString, x16)) f16t16
155val () = List.app (doit (Word16.toString, x32)) f32t16
156val () = List.app (doit (Word16.toString, x64)) f64t16
157
158val () = List.app (doit (Word32.toString, x8)) f8t32
159val () = List.app (doit (Word32.toString, x16)) f16t32
160val () = List.app (doit (Word32.toString, x32)) f32t32
161val () = List.app (doit (Word32.toString, x64)) f64t32
162
163val () = List.app (doit (Word64.toString, x8)) f8t64
164val () = List.app (doit (Word64.toString, x16)) f16t64
165val () = List.app (doit (Word64.toString, x32)) f32t64
166val () = List.app (doit (Word64.toString, x64)) f64t64