| 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 |