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