diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-19 10:40:49 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-19 10:40:49 +0100 |
| commit | 13275a4bb8696e730a4fffdd05b8e1d046e489c6 (patch) | |
| tree | 4db3ed3ada41158c451188c98e74fdde5ea296b2 | |
| parent | d6fdf14d5c320bdca455f910d58d652c5a7827da (diff) | |
| download | nissy-core-13275a4bb8696e730a4fffdd05b8e1d046e489c6.tar.gz nissy-core-13275a4bb8696e730a4fffdd05b8e1d046e489c6.zip | |
Simplified cube definition for move and transformations even more
| -rw-r--r-- | cube.c | 1069 | ||||
| -rw-r--r-- | cube.h | 11 | ||||
| -rwxr-xr-x | old/moves_trans/v2/genmovecode.sh | 21 | ||||
| -rwxr-xr-x | old/moves_trans/v2/gentranscode.sh | 24 | ||||
| -rw-r--r-- | test/022_io_AVX_write/01_solved.out | 4 | ||||
| -rw-r--r-- | test/022_io_AVX_write/02_scrambled.out | 4 | ||||
| -rw-r--r-- | test/023_io_LST_write/01_solved.in (renamed from test/022_io_AVX_write/01_solved.in) | 0 | ||||
| -rw-r--r-- | test/023_io_LST_write/01_solved.out | 1 | ||||
| -rw-r--r-- | test/023_io_LST_write/02_scrambled.in (renamed from test/022_io_AVX_write/02_scrambled.in) | 0 | ||||
| -rw-r--r-- | test/023_io_LST_write/02_scrambled.out | 1 | ||||
| -rw-r--r-- | test/023_io_LST_write/io_LST_tests.c (renamed from test/022_io_AVX_write/io_AVX_tests.c) | 2 | ||||
| -rwxr-xr-x | utils/genmovecode.sh | 16 | ||||
| -rwxr-xr-x | utils/gentranscode.sh | 17 | ||||
| -rw-r--r-- | utils/h48_to_avx.c | 19 | ||||
| -rw-r--r-- | utils/h48_to_lst.c (renamed from utils/h48_to_src.c) | 2 |
15 files changed, 409 insertions, 782 deletions
| @@ -134,6 +134,241 @@ Section: constants, strings and other stuff | |||
| 134 | #define _eflip 0x10U | 134 | #define _eflip 0x10U |
| 135 | #define _error 0xFFU | 135 | #define _error 0xFFU |
| 136 | 136 | ||
| 137 | #define zero_fast fastcube( \ | ||
| 138 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) | ||
| 139 | #define solved_fast fastcube( \ | ||
| 140 | 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) | ||
| 141 | |||
| 142 | #define _move_cube_U fastcube( \ | ||
| 143 | 5, 4, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 1, 0, 6, 7, 8, 9, 10, 11) | ||
| 144 | #define _move_cube_U2 fastcube( \ | ||
| 145 | 1, 0, 2, 3, 5, 4, 6, 7, 1, 0, 2, 3, 5, 4, 6, 7, 8, 9, 10, 11) | ||
| 146 | #define _move_cube_U3 fastcube( \ | ||
| 147 | 4, 5, 2, 3, 1, 0, 6, 7, 5, 4, 2, 3, 0, 1, 6, 7, 8, 9, 10, 11) | ||
| 148 | #define _move_cube_D fastcube( \ | ||
| 149 | 0, 1, 7, 6, 4, 5, 2, 3, 0, 1, 7, 6, 4, 5, 2, 3, 8, 9, 10, 11) | ||
| 150 | #define _move_cube_D2 fastcube( \ | ||
| 151 | 0, 1, 3, 2, 4, 5, 7, 6, 0, 1, 3, 2, 4, 5, 7, 6, 8, 9, 10, 11) | ||
| 152 | #define _move_cube_D3 fastcube( \ | ||
| 153 | 0, 1, 6, 7, 4, 5, 3, 2, 0, 1, 6, 7, 4, 5, 3, 2, 8, 9, 10, 11) | ||
| 154 | #define _move_cube_R fastcube( \ | ||
| 155 | 70, 1, 2, 69, 4, 32, 35, 7, 0, 1, 2, 3, 8, 5, 6, 11, 7, 9, 10, 4) | ||
| 156 | #define _move_cube_R2 fastcube( \ | ||
| 157 | 3, 1, 2, 0, 4, 6, 5, 7, 0, 1, 2, 3, 7, 5, 6, 4, 11, 9, 10, 8) | ||
| 158 | #define _move_cube_R3 fastcube( \ | ||
| 159 | 69, 1, 2, 70, 4, 35, 32, 7, 0, 1, 2, 3, 11, 5, 6, 8, 4, 9, 10, 7) | ||
| 160 | #define _move_cube_L fastcube( \ | ||
| 161 | 0, 71, 68, 3, 33, 5, 6, 34, 0, 1, 2, 3, 4, 10, 9, 7, 8, 5, 6, 11) | ||
| 162 | #define _move_cube_L2 fastcube( \ | ||
| 163 | 0, 2, 1, 3, 7, 5, 6, 4, 0, 1, 2, 3, 4, 6, 5, 7, 8, 10, 9, 11) | ||
| 164 | #define _move_cube_L3 fastcube( \ | ||
| 165 | 0, 68, 71, 3, 34, 5, 6, 33, 0, 1, 2, 3, 4, 9, 10, 7, 8, 6, 5, 11) | ||
| 166 | #define _move_cube_F fastcube( \ | ||
| 167 | 36, 1, 38, 3, 66, 5, 64, 7, 25, 1, 2, 24, 4, 5, 6, 7, 16, 19, 10, 11) | ||
| 168 | #define _move_cube_F2 fastcube( \ | ||
| 169 | 2, 1, 0, 3, 6, 5, 4, 7, 3, 1, 2, 0, 4, 5, 6, 7, 9, 8, 10, 11) | ||
| 170 | #define _move_cube_F3 fastcube( \ | ||
| 171 | 38, 1, 36, 3, 64, 5, 66, 7, 24, 1, 2, 25, 4, 5, 6, 7, 19, 16, 10, 11) | ||
| 172 | #define _move_cube_B fastcube( \ | ||
| 173 | 0, 37, 2, 39, 4, 67, 6, 65, 0, 27, 26, 3, 4, 5, 6, 7, 8, 9, 17, 18) | ||
| 174 | #define _move_cube_B2 fastcube( \ | ||
| 175 | 0, 3, 2, 1, 4, 7, 6, 5, 0, 2, 1, 3, 4, 5, 6, 7, 8, 9, 11, 10) | ||
| 176 | #define _move_cube_B3 fastcube( \ | ||
| 177 | 0, 39, 2, 37, 4, 65, 6, 67, 0, 26, 27, 3, 4, 5, 6, 7, 8, 9, 18, 17) | ||
| 178 | |||
| 179 | #define _trans_cube_UFr fastcube( \ | ||
| 180 | 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) | ||
| 181 | #define _trans_cube_UFr_inverse fastcube( \ | ||
| 182 | 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) | ||
| 183 | #define _trans_cube_ULr fastcube( \ | ||
| 184 | 4, 5, 7, 6, 1, 0, 2, 3, 5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24) | ||
| 185 | #define _trans_cube_ULr_inverse fastcube( \ | ||
| 186 | 5, 4, 6, 7, 0, 1, 3, 2, 4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26) | ||
| 187 | #define _trans_cube_UBr fastcube( \ | ||
| 188 | 1, 0, 3, 2, 5, 4, 7, 6, 1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9) | ||
| 189 | #define _trans_cube_UBr_inverse fastcube( \ | ||
| 190 | 1, 0, 3, 2, 5, 4, 7, 6, 1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9) | ||
| 191 | #define _trans_cube_URr fastcube( \ | ||
| 192 | 5, 4, 6, 7, 0, 1, 3, 2, 4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26) | ||
| 193 | #define _trans_cube_URr_inverse fastcube( \ | ||
| 194 | 4, 5, 7, 6, 1, 0, 2, 3, 5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24) | ||
| 195 | #define _trans_cube_DFr fastcube( \ | ||
| 196 | 2, 3, 0, 1, 6, 7, 4, 5, 3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10) | ||
| 197 | #define _trans_cube_DFr_inverse fastcube( \ | ||
| 198 | 2, 3, 0, 1, 6, 7, 4, 5, 3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10) | ||
| 199 | #define _trans_cube_DLr fastcube( \ | ||
| 200 | 7, 6, 4, 5, 2, 3, 1, 0, 6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27) | ||
| 201 | #define _trans_cube_DLr_inverse fastcube( \ | ||
| 202 | 7, 6, 4, 5, 2, 3, 1, 0, 6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27) | ||
| 203 | #define _trans_cube_DBr fastcube( \ | ||
| 204 | 3, 2, 1, 0, 7, 6, 5, 4, 2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8) | ||
| 205 | #define _trans_cube_DBr_inverse fastcube( \ | ||
| 206 | 3, 2, 1, 0, 7, 6, 5, 4, 2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8) | ||
| 207 | #define _trans_cube_DRr fastcube( \ | ||
| 208 | 6, 7, 5, 4, 3, 2, 0, 1, 7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25) | ||
| 209 | #define _trans_cube_DRr_inverse fastcube( \ | ||
| 210 | 6, 7, 5, 4, 3, 2, 0, 1, 7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25) | ||
| 211 | #define _trans_cube_RUr fastcube( \ | ||
| 212 | 64, 67, 65, 66, 37, 38, 36, 39, 20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3) | ||
| 213 | #define _trans_cube_RUr_inverse fastcube( \ | ||
| 214 | 32, 34, 35, 33, 70, 68, 69, 71, 8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21) | ||
| 215 | #define _trans_cube_RFr fastcube( \ | ||
| 216 | 38, 37, 36, 39, 64, 67, 66, 65, 24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18) | ||
| 217 | #define _trans_cube_RFr_inverse fastcube( \ | ||
| 218 | 36, 39, 38, 37, 66, 65, 64, 67, 25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17) | ||
| 219 | #define _trans_cube_RDr fastcube( \ | ||
| 220 | 67, 64, 66, 65, 38, 37, 39, 36, 23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1) | ||
| 221 | #define _trans_cube_RDr_inverse fastcube( \ | ||
| 222 | 33, 35, 34, 32, 71, 69, 68, 70, 10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20) | ||
| 223 | #define _trans_cube_RBr fastcube( \ | ||
| 224 | 37, 38, 39, 36, 67, 64, 65, 66, 27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16) | ||
| 225 | #define _trans_cube_RBr_inverse fastcube( \ | ||
| 226 | 37, 38, 39, 36, 67, 64, 65, 66, 27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16) | ||
| 227 | #define _trans_cube_LUr fastcube( \ | ||
| 228 | 65, 66, 64, 67, 36, 39, 37, 38, 21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2) | ||
| 229 | #define _trans_cube_LUr_inverse fastcube( \ | ||
| 230 | 34, 32, 33, 35, 68, 70, 71, 69, 9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23) | ||
| 231 | #define _trans_cube_LFr fastcube( \ | ||
| 232 | 36, 39, 38, 37, 66, 65, 64, 67, 25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17) | ||
| 233 | #define _trans_cube_LFr_inverse fastcube( \ | ||
| 234 | 38, 37, 36, 39, 64, 67, 66, 65, 24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18) | ||
| 235 | #define _trans_cube_LDr fastcube( \ | ||
| 236 | 66, 65, 67, 64, 39, 36, 38, 37, 22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0) | ||
| 237 | #define _trans_cube_LDr_inverse fastcube( \ | ||
| 238 | 35, 33, 32, 34, 69, 71, 70, 68, 11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22) | ||
| 239 | #define _trans_cube_LBr fastcube( \ | ||
| 240 | 39, 36, 37, 38, 65, 66, 67, 64, 26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19) | ||
| 241 | #define _trans_cube_LBr_inverse fastcube( \ | ||
| 242 | 39, 36, 37, 38, 65, 66, 67, 64, 26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19) | ||
| 243 | #define _trans_cube_FUr fastcube( \ | ||
| 244 | 68, 70, 69, 71, 32, 34, 33, 35, 16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6) | ||
| 245 | #define _trans_cube_FUr_inverse fastcube( \ | ||
| 246 | 68, 70, 69, 71, 32, 34, 33, 35, 16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6) | ||
| 247 | #define _trans_cube_FRr fastcube( \ | ||
| 248 | 32, 34, 35, 33, 70, 68, 69, 71, 8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21) | ||
| 249 | #define _trans_cube_FRr_inverse fastcube( \ | ||
| 250 | 64, 67, 65, 66, 37, 38, 36, 39, 20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3) | ||
| 251 | #define _trans_cube_FDr fastcube( \ | ||
| 252 | 70, 68, 71, 69, 34, 32, 35, 33, 19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4) | ||
| 253 | #define _trans_cube_FDr_inverse fastcube( \ | ||
| 254 | 69, 71, 68, 70, 33, 35, 32, 34, 17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7) | ||
| 255 | #define _trans_cube_FLr fastcube( \ | ||
| 256 | 34, 32, 33, 35, 68, 70, 71, 69, 9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23) | ||
| 257 | #define _trans_cube_FLr_inverse fastcube( \ | ||
| 258 | 65, 66, 64, 67, 36, 39, 37, 38, 21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2) | ||
| 259 | #define _trans_cube_BUr fastcube( \ | ||
| 260 | 69, 71, 68, 70, 33, 35, 32, 34, 17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7) | ||
| 261 | #define _trans_cube_BUr_inverse fastcube( \ | ||
| 262 | 70, 68, 71, 69, 34, 32, 35, 33, 19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4) | ||
| 263 | #define _trans_cube_BRr fastcube( \ | ||
| 264 | 35, 33, 32, 34, 69, 71, 70, 68, 11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22) | ||
| 265 | #define _trans_cube_BRr_inverse fastcube( \ | ||
| 266 | 66, 65, 67, 64, 39, 36, 38, 37, 22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0) | ||
| 267 | #define _trans_cube_BDr fastcube( \ | ||
| 268 | 71, 69, 70, 68, 35, 33, 34, 32, 18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5) | ||
| 269 | #define _trans_cube_BDr_inverse fastcube( \ | ||
| 270 | 71, 69, 70, 68, 35, 33, 34, 32, 18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5) | ||
| 271 | #define _trans_cube_BLr fastcube( \ | ||
| 272 | 33, 35, 34, 32, 71, 69, 68, 70, 10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20) | ||
| 273 | #define _trans_cube_BLr_inverse fastcube( \ | ||
| 274 | 67, 64, 66, 65, 38, 37, 39, 36, 23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1) | ||
| 275 | #define _trans_cube_UFm fastcube( \ | ||
| 276 | 4, 5, 6, 7, 0, 1, 2, 3, 0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10) | ||
| 277 | #define _trans_cube_UFm_inverse fastcube( \ | ||
| 278 | 4, 5, 6, 7, 0, 1, 2, 3, 0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10) | ||
| 279 | #define _trans_cube_ULm fastcube( \ | ||
| 280 | 0, 1, 3, 2, 5, 4, 6, 7, 4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25) | ||
| 281 | #define _trans_cube_ULm_inverse fastcube( \ | ||
| 282 | 0, 1, 3, 2, 5, 4, 6, 7, 4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25) | ||
| 283 | #define _trans_cube_UBm fastcube( \ | ||
| 284 | 5, 4, 7, 6, 1, 0, 3, 2, 1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8) | ||
| 285 | #define _trans_cube_UBm_inverse fastcube( \ | ||
| 286 | 5, 4, 7, 6, 1, 0, 3, 2, 1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8) | ||
| 287 | #define _trans_cube_URm fastcube( \ | ||
| 288 | 1, 0, 2, 3, 4, 5, 7, 6, 5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27) | ||
| 289 | #define _trans_cube_URm_inverse fastcube( \ | ||
| 290 | 1, 0, 2, 3, 4, 5, 7, 6, 5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27) | ||
| 291 | #define _trans_cube_DFm fastcube( \ | ||
| 292 | 6, 7, 4, 5, 2, 3, 0, 1, 3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11) | ||
| 293 | #define _trans_cube_DFm_inverse fastcube( \ | ||
| 294 | 6, 7, 4, 5, 2, 3, 0, 1, 3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11) | ||
| 295 | #define _trans_cube_DLm fastcube( \ | ||
| 296 | 3, 2, 0, 1, 6, 7, 5, 4, 7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26) | ||
| 297 | #define _trans_cube_DLm_inverse fastcube( \ | ||
| 298 | 2, 3, 1, 0, 7, 6, 4, 5, 6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24) | ||
| 299 | #define _trans_cube_DBm fastcube( \ | ||
| 300 | 7, 6, 5, 4, 3, 2, 1, 0, 2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9) | ||
| 301 | #define _trans_cube_DBm_inverse fastcube( \ | ||
| 302 | 7, 6, 5, 4, 3, 2, 1, 0, 2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9) | ||
| 303 | #define _trans_cube_DRm fastcube( \ | ||
| 304 | 2, 3, 1, 0, 7, 6, 4, 5, 6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24) | ||
| 305 | #define _trans_cube_DRm_inverse fastcube( \ | ||
| 306 | 3, 2, 0, 1, 6, 7, 5, 4, 7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26) | ||
| 307 | #define _trans_cube_RUm fastcube( \ | ||
| 308 | 68, 71, 69, 70, 33, 34, 32, 35, 21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3) | ||
| 309 | #define _trans_cube_RUm_inverse fastcube( \ | ||
| 310 | 70, 68, 69, 71, 32, 34, 35, 33, 8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22) | ||
| 311 | #define _trans_cube_RFm fastcube( \ | ||
| 312 | 34, 33, 32, 35, 68, 71, 70, 69, 25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18) | ||
| 313 | #define _trans_cube_RFm_inverse fastcube( \ | ||
| 314 | 66, 65, 64, 67, 36, 39, 38, 37, 25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18) | ||
| 315 | #define _trans_cube_RDm fastcube( \ | ||
| 316 | 71, 68, 70, 69, 34, 33, 35, 32, 22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1) | ||
| 317 | #define _trans_cube_RDm_inverse fastcube( \ | ||
| 318 | 71, 69, 68, 70, 33, 35, 34, 32, 10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23) | ||
| 319 | #define _trans_cube_RBm fastcube( \ | ||
| 320 | 33, 34, 35, 32, 71, 68, 69, 70, 26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16) | ||
| 321 | #define _trans_cube_RBm_inverse fastcube( \ | ||
| 322 | 67, 64, 65, 66, 37, 38, 39, 36, 27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19) | ||
| 323 | #define _trans_cube_LUm fastcube( \ | ||
| 324 | 69, 70, 68, 71, 32, 35, 33, 34, 20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2) | ||
| 325 | #define _trans_cube_LUm_inverse fastcube( \ | ||
| 326 | 68, 70, 71, 69, 34, 32, 33, 35, 9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20) | ||
| 327 | #define _trans_cube_LFm fastcube( \ | ||
| 328 | 32, 35, 34, 33, 70, 69, 68, 71, 24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17) | ||
| 329 | #define _trans_cube_LFm_inverse fastcube( \ | ||
| 330 | 64, 67, 66, 65, 38, 37, 36, 39, 24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17) | ||
| 331 | #define _trans_cube_LDm fastcube( \ | ||
| 332 | 70, 69, 71, 68, 35, 32, 34, 33, 23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0) | ||
| 333 | #define _trans_cube_LDm_inverse fastcube( \ | ||
| 334 | 69, 71, 70, 68, 35, 33, 32, 34, 11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21) | ||
| 335 | #define _trans_cube_LBm fastcube( \ | ||
| 336 | 35, 32, 33, 34, 69, 70, 71, 68, 27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19) | ||
| 337 | #define _trans_cube_LBm_inverse fastcube( \ | ||
| 338 | 65, 66, 67, 64, 39, 36, 37, 38, 26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16) | ||
| 339 | #define _trans_cube_FUm fastcube( \ | ||
| 340 | 64, 66, 65, 67, 36, 38, 37, 39, 16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7) | ||
| 341 | #define _trans_cube_FUm_inverse fastcube( \ | ||
| 342 | 32, 34, 33, 35, 68, 70, 69, 71, 16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7) | ||
| 343 | #define _trans_cube_FRm fastcube( \ | ||
| 344 | 36, 38, 39, 37, 66, 64, 65, 67, 9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20) | ||
| 345 | #define _trans_cube_FRm_inverse fastcube( \ | ||
| 346 | 37, 38, 36, 39, 64, 67, 65, 66, 20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2) | ||
| 347 | #define _trans_cube_FDm fastcube( \ | ||
| 348 | 66, 64, 67, 65, 38, 36, 39, 37, 19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5) | ||
| 349 | #define _trans_cube_FDm_inverse fastcube( \ | ||
| 350 | 33, 35, 32, 34, 69, 71, 68, 70, 17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6) | ||
| 351 | #define _trans_cube_FLm fastcube( \ | ||
| 352 | 38, 36, 37, 39, 64, 66, 67, 65, 8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22) | ||
| 353 | #define _trans_cube_FLm_inverse fastcube( \ | ||
| 354 | 36, 39, 37, 38, 65, 66, 64, 67, 21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3) | ||
| 355 | #define _trans_cube_BUm fastcube( \ | ||
| 356 | 65, 67, 64, 66, 37, 39, 36, 38, 17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6) | ||
| 357 | #define _trans_cube_BUm_inverse fastcube( \ | ||
| 358 | 34, 32, 35, 33, 70, 68, 71, 69, 19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5) | ||
| 359 | #define _trans_cube_BRm fastcube( \ | ||
| 360 | 39, 37, 36, 38, 65, 67, 66, 64, 10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23) | ||
| 361 | #define _trans_cube_BRm_inverse fastcube( \ | ||
| 362 | 39, 36, 38, 37, 66, 65, 67, 64, 22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1) | ||
| 363 | #define _trans_cube_BDm fastcube( \ | ||
| 364 | 67, 65, 66, 64, 39, 37, 38, 36, 18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4) | ||
| 365 | #define _trans_cube_BDm_inverse fastcube( \ | ||
| 366 | 35, 33, 34, 32, 71, 69, 70, 68, 18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4) | ||
| 367 | #define _trans_cube_BLm fastcube( \ | ||
| 368 | 37, 39, 38, 36, 67, 65, 64, 66, 11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21) | ||
| 369 | #define _trans_cube_BLm_inverse fastcube( \ | ||
| 370 | 38, 37, 39, 36, 67, 64, 66, 65, 23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0) | ||
| 371 | |||
| 137 | static char *cornerstr[] = { | 372 | static char *cornerstr[] = { |
| 138 | [_c_ufr] = "UFR", | 373 | [_c_ufr] = "UFR", |
| 139 | [_c_ubl] = "UBL", | 374 | [_c_ubl] = "UBL", |
| @@ -259,356 +494,13 @@ typedef __m256i cube_fast_t; | |||
| 259 | #define _co2_avx2 _mm256_set_epi64x(0, 0, 0, 0x6060606060606060) | 494 | #define _co2_avx2 _mm256_set_epi64x(0, 0, 0, 0x6060606060606060) |
| 260 | #define _cocw_avx2 _mm256_set_epi64x(0, 0, 0, 0x2020202020202020) | 495 | #define _cocw_avx2 _mm256_set_epi64x(0, 0, 0, 0x2020202020202020) |
| 261 | #define _eo_avx2 _mm256_set_epi64x(0x10101010, 0x1010101010101010, 0, 0) | 496 | #define _eo_avx2 _mm256_set_epi64x(0x10101010, 0x1010101010101010, 0, 0) |
| 262 | #define zero_fast _mm256_set_epi64x(0, 0, 0, 0); | ||
| 263 | #define solved_fast _mm256_set_epi8( \ | ||
| 264 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, \ | ||
| 265 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 5, 4, 3, 2, 1, 0 \ | ||
| 266 | ) | ||
| 267 | |||
| 268 | #define _move_cube_U _mm256_set_epi8( \ | ||
| 269 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 0, 1, 3, 2, 5, 4, \ | ||
| 270 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 1, 0, 3, 2, 4, 5) | ||
| 271 | #define _move_cube_U2 _mm256_set_epi8( \ | ||
| 272 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 0, 1, \ | ||
| 273 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 4, 5, 3, 2, 0, 1) | ||
| 274 | #define _move_cube_U3 _mm256_set_epi8( \ | ||
| 275 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 1, 0, 3, 2, 4, 5, \ | ||
| 276 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 0, 1, 3, 2, 5, 4) | ||
| 277 | #define _move_cube_D _mm256_set_epi8( \ | ||
| 278 | 0, 0, 0, 0, 11, 10, 9, 8, 3, 2, 5, 4, 6, 7, 1, 0, \ | ||
| 279 | 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, 4, 6, 7, 1, 0) | ||
| 280 | #define _move_cube_D2 _mm256_set_epi8( \ | ||
| 281 | 0, 0, 0, 0, 11, 10, 9, 8, 6, 7, 5, 4, 2, 3, 1, 0, \ | ||
| 282 | 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 5, 4, 2, 3, 1, 0) | ||
| 283 | #define _move_cube_D3 _mm256_set_epi8( \ | ||
| 284 | 0, 0, 0, 0, 11, 10, 9, 8, 2, 3, 5, 4, 7, 6, 1, 0, \ | ||
| 285 | 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 5, 4, 7, 6, 1, 0) | ||
| 286 | #define _move_cube_R _mm256_set_epi8( \ | ||
| 287 | 0, 0, 0, 0, 4, 10, 9, 7, 11, 6, 5, 8, 3, 2, 1, 0, \ | ||
| 288 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 35, 32, 4, 69, 2, 1, 70) | ||
| 289 | #define _move_cube_R2 _mm256_set_epi8( \ | ||
| 290 | 0, 0, 0, 0, 8, 10, 9, 11, 4, 6, 5, 7, 3, 2, 1, 0, \ | ||
| 291 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 5, 6, 4, 0, 2, 1, 3) | ||
| 292 | #define _move_cube_R3 _mm256_set_epi8( \ | ||
| 293 | 0, 0, 0, 0, 7, 10, 9, 4, 8, 6, 5, 11, 3, 2, 1, 0, \ | ||
| 294 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 32, 35, 4, 70, 2, 1, 69) | ||
| 295 | #define _move_cube_L _mm256_set_epi8( \ | ||
| 296 | 0, 0, 0, 0, 11, 6, 5, 8, 7, 9, 10, 4, 3, 2, 1, 0, \ | ||
| 297 | 0, 0, 0, 0, 0, 0, 0, 0, 34, 6, 5, 33, 3, 68, 71, 0) | ||
| 298 | #define _move_cube_L2 _mm256_set_epi8( \ | ||
| 299 | 0, 0, 0, 0, 11, 9, 10, 8, 7, 5, 6, 4, 3, 2, 1, 0, \ | ||
| 300 | 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 5, 7, 3, 1, 2, 0) | ||
| 301 | #define _move_cube_L3 _mm256_set_epi8( \ | ||
| 302 | 0, 0, 0, 0, 11, 5, 6, 8, 7, 10, 9, 4, 3, 2, 1, 0, \ | ||
| 303 | 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 5, 34, 3, 71, 68, 0) | ||
| 304 | #define _move_cube_F _mm256_set_epi8( \ | ||
| 305 | 0, 0, 0, 0, 11, 10, 19, 16, 7, 6, 5, 4, 24, 2, 1, 25, \ | ||
| 306 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 64, 5, 66, 3, 38, 1, 36) | ||
| 307 | #define _move_cube_F2 _mm256_set_epi8( \ | ||
| 308 | 0, 0, 0, 0, 11, 10, 8, 9, 7, 6, 5, 4, 0, 2, 1, 3, \ | ||
| 309 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 5, 6, 3, 0, 1, 2) | ||
| 310 | #define _move_cube_F3 _mm256_set_epi8( \ | ||
| 311 | 0, 0, 0, 0, 11, 10, 16, 19, 7, 6, 5, 4, 25, 2, 1, 24, \ | ||
| 312 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 5, 64, 3, 36, 1, 38) | ||
| 313 | #define _move_cube_B _mm256_set_epi8( \ | ||
| 314 | 0, 0, 0, 0, 18, 17, 9, 8, 7, 6, 5, 4, 3, 26, 27, 0, \ | ||
| 315 | 0, 0, 0, 0, 0, 0, 0, 0, 65, 6, 67, 4, 39, 2, 37, 0) | ||
| 316 | #define _move_cube_B2 _mm256_set_epi8( \ | ||
| 317 | 0, 0, 0, 0, 10, 11, 9, 8, 7, 6, 5, 4, 3, 1, 2, 0, \ | ||
| 318 | 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 4, 1, 2, 3, 0) | ||
| 319 | #define _move_cube_B3 _mm256_set_epi8( \ | ||
| 320 | 0, 0, 0, 0, 17, 18, 9, 8, 7, 6, 5, 4, 3, 27, 26, 0, \ | ||
| 321 | 0, 0, 0, 0, 0, 0, 0, 0, 67, 6, 65, 4, 37, 2, 39, 0) | ||
| 322 | |||
| 323 | #define _trans_cube_UFr _mm256_set_epi8( \ | ||
| 324 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, \ | ||
| 325 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 5, 4, 3, 2, 1, 0) | ||
| 326 | #define _trans_cube_UFr_inverse _mm256_set_epi8( \ | ||
| 327 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, \ | ||
| 328 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 5, 4, 3, 2, 1, 0) | ||
| 329 | #define _trans_cube_ULr _mm256_set_epi8( \ | ||
| 330 | 0, 0, 0, 0, 24, 27, 26, 25, 3, 2, 1, 0, 6, 7, 4, 5, \ | ||
| 331 | 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 1, 6, 7, 5, 4) | ||
| 332 | #define _trans_cube_ULr_inverse _mm256_set_epi8( \ | ||
| 333 | 0, 0, 0, 0, 26, 25, 24, 27, 2, 3, 0, 1, 7, 6, 5, 4, \ | ||
| 334 | 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 1, 0, 7, 6, 4, 5) | ||
| 335 | #define _trans_cube_UBr _mm256_set_epi8( \ | ||
| 336 | 0, 0, 0, 0, 9, 8, 11, 10, 6, 7, 4, 5, 2, 3, 0, 1, \ | ||
| 337 | 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 4, 5, 2, 3, 0, 1) | ||
| 338 | #define _trans_cube_UBr_inverse _mm256_set_epi8( \ | ||
| 339 | 0, 0, 0, 0, 9, 8, 11, 10, 6, 7, 4, 5, 2, 3, 0, 1, \ | ||
| 340 | 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 4, 5, 2, 3, 0, 1) | ||
| 341 | #define _trans_cube_URr _mm256_set_epi8( \ | ||
| 342 | 0, 0, 0, 0, 26, 25, 24, 27, 2, 3, 0, 1, 7, 6, 5, 4, \ | ||
| 343 | 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 1, 0, 7, 6, 4, 5) | ||
| 344 | #define _trans_cube_URr_inverse _mm256_set_epi8( \ | ||
| 345 | 0, 0, 0, 0, 24, 27, 26, 25, 3, 2, 1, 0, 6, 7, 4, 5, \ | ||
| 346 | 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 1, 6, 7, 5, 4) | ||
| 347 | #define _trans_cube_DFr _mm256_set_epi8( \ | ||
| 348 | 0, 0, 0, 0, 10, 11, 8, 9, 5, 4, 7, 6, 0, 1, 2, 3, \ | ||
| 349 | 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 7, 6, 1, 0, 3, 2) | ||
| 350 | #define _trans_cube_DFr_inverse _mm256_set_epi8( \ | ||
| 351 | 0, 0, 0, 0, 10, 11, 8, 9, 5, 4, 7, 6, 0, 1, 2, 3, \ | ||
| 352 | 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 7, 6, 1, 0, 3, 2) | ||
| 353 | #define _trans_cube_DLr _mm256_set_epi8( \ | ||
| 354 | 0, 0, 0, 0, 27, 24, 25, 26, 1, 0, 3, 2, 5, 4, 7, 6, \ | ||
| 355 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 2, 5, 4, 6, 7) | ||
| 356 | #define _trans_cube_DLr_inverse _mm256_set_epi8( \ | ||
| 357 | 0, 0, 0, 0, 27, 24, 25, 26, 1, 0, 3, 2, 5, 4, 7, 6, \ | ||
| 358 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 2, 5, 4, 6, 7) | ||
| 359 | #define _trans_cube_DBr _mm256_set_epi8( \ | ||
| 360 | 0, 0, 0, 0, 8, 9, 10, 11, 4, 5, 6, 7, 1, 0, 3, 2, \ | ||
| 361 | 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 0, 1, 2, 3) | ||
| 362 | #define _trans_cube_DBr_inverse _mm256_set_epi8( \ | ||
| 363 | 0, 0, 0, 0, 8, 9, 10, 11, 4, 5, 6, 7, 1, 0, 3, 2, \ | ||
| 364 | 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 0, 1, 2, 3) | ||
| 365 | #define _trans_cube_DRr _mm256_set_epi8( \ | ||
| 366 | 0, 0, 0, 0, 25, 26, 27, 24, 0, 1, 2, 3, 4, 5, 6, 7, \ | ||
| 367 | 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 4, 5, 7, 6) | ||
| 368 | #define _trans_cube_DRr_inverse _mm256_set_epi8( \ | ||
| 369 | 0, 0, 0, 0, 25, 26, 27, 24, 0, 1, 2, 3, 4, 5, 6, 7, \ | ||
| 370 | 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 4, 5, 7, 6) | ||
| 371 | #define _trans_cube_RUr _mm256_set_epi8( \ | ||
| 372 | 0, 0, 0, 0, 3, 2, 1, 0, 25, 26, 27, 24, 21, 22, 23, 20, \ | ||
| 373 | 0, 0, 0, 0, 0, 0, 0, 0, 39, 36, 38, 37, 66, 65, 67, 64) | ||
| 374 | #define _trans_cube_RUr_inverse _mm256_set_epi8( \ | ||
| 375 | 0, 0, 0, 0, 21, 22, 23, 20, 17, 18, 19, 16, 11, 10, 9, 8, \ | ||
| 376 | 0, 0, 0, 0, 0, 0, 0, 0, 71, 69, 68, 70, 33, 35, 34, 32) | ||
| 377 | #define _trans_cube_RFr _mm256_set_epi8( \ | ||
| 378 | 0, 0, 0, 0, 18, 17, 16, 19, 22, 21, 20, 23, 25, 26, 27, 24, \ | ||
| 379 | 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 64, 39, 36, 37, 38) | ||
| 380 | #define _trans_cube_RFr_inverse _mm256_set_epi8( \ | ||
| 381 | 0, 0, 0, 0, 17, 18, 19, 16, 20, 23, 22, 21, 24, 27, 26, 25, \ | ||
| 382 | 0, 0, 0, 0, 0, 0, 0, 0, 67, 64, 65, 66, 37, 38, 39, 36) | ||
| 383 | #define _trans_cube_RDr _mm256_set_epi8( \ | ||
| 384 | 0, 0, 0, 0, 1, 0, 3, 2, 26, 25, 24, 27, 22, 21, 20, 23, \ | ||
| 385 | 0, 0, 0, 0, 0, 0, 0, 0, 36, 39, 37, 38, 65, 66, 64, 67) | ||
| 386 | #define _trans_cube_RDr_inverse _mm256_set_epi8( \ | ||
| 387 | 0, 0, 0, 0, 20, 23, 22, 21, 16, 19, 18, 17, 9, 8, 11, 10, \ | ||
| 388 | 0, 0, 0, 0, 0, 0, 0, 0, 70, 68, 69, 71, 32, 34, 35, 33) | ||
| 389 | #define _trans_cube_RBr _mm256_set_epi8( \ | ||
| 390 | 0, 0, 0, 0, 16, 19, 18, 17, 21, 22, 23, 20, 26, 25, 24, 27, \ | ||
| 391 | 0, 0, 0, 0, 0, 0, 0, 0, 66, 65, 64, 67, 36, 39, 38, 37) | ||
| 392 | #define _trans_cube_RBr_inverse _mm256_set_epi8( \ | ||
| 393 | 0, 0, 0, 0, 16, 19, 18, 17, 21, 22, 23, 20, 26, 25, 24, 27, \ | ||
| 394 | 0, 0, 0, 0, 0, 0, 0, 0, 66, 65, 64, 67, 36, 39, 38, 37) | ||
| 395 | #define _trans_cube_LUr _mm256_set_epi8( \ | ||
| 396 | 0, 0, 0, 0, 2, 3, 0, 1, 27, 24, 25, 26, 20, 23, 22, 21, \ | ||
| 397 | 0, 0, 0, 0, 0, 0, 0, 0, 38, 37, 39, 36, 67, 64, 66, 65) | ||
| 398 | #define _trans_cube_LUr_inverse _mm256_set_epi8( \ | ||
| 399 | 0, 0, 0, 0, 23, 20, 21, 22, 18, 17, 16, 19, 10, 11, 8, 9, \ | ||
| 400 | 0, 0, 0, 0, 0, 0, 0, 0, 69, 71, 70, 68, 35, 33, 32, 34) | ||
| 401 | #define _trans_cube_LFr _mm256_set_epi8( \ | ||
| 402 | 0, 0, 0, 0, 17, 18, 19, 16, 20, 23, 22, 21, 24, 27, 26, 25, \ | ||
| 403 | 0, 0, 0, 0, 0, 0, 0, 0, 67, 64, 65, 66, 37, 38, 39, 36) | ||
| 404 | #define _trans_cube_LFr_inverse _mm256_set_epi8( \ | ||
| 405 | 0, 0, 0, 0, 18, 17, 16, 19, 22, 21, 20, 23, 25, 26, 27, 24, \ | ||
| 406 | 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 64, 39, 36, 37, 38) | ||
| 407 | #define _trans_cube_LDr _mm256_set_epi8( \ | ||
| 408 | 0, 0, 0, 0, 0, 1, 2, 3, 24, 27, 26, 25, 23, 20, 21, 22, \ | ||
| 409 | 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 36, 39, 64, 67, 65, 66) | ||
| 410 | #define _trans_cube_LDr_inverse _mm256_set_epi8( \ | ||
| 411 | 0, 0, 0, 0, 22, 21, 20, 23, 19, 16, 17, 18, 8, 9, 10, 11, \ | ||
| 412 | 0, 0, 0, 0, 0, 0, 0, 0, 68, 70, 71, 69, 34, 32, 33, 35) | ||
| 413 | #define _trans_cube_LBr _mm256_set_epi8( \ | ||
| 414 | 0, 0, 0, 0, 19, 16, 17, 18, 23, 20, 21, 22, 27, 24, 25, 26, \ | ||
| 415 | 0, 0, 0, 0, 0, 0, 0, 0, 64, 67, 66, 65, 38, 37, 36, 39) | ||
| 416 | #define _trans_cube_LBr_inverse _mm256_set_epi8( \ | ||
| 417 | 0, 0, 0, 0, 19, 16, 17, 18, 23, 20, 21, 22, 27, 24, 25, 26, \ | ||
| 418 | 0, 0, 0, 0, 0, 0, 0, 0, 64, 67, 66, 65, 38, 37, 36, 39) | ||
| 419 | #define _trans_cube_FUr _mm256_set_epi8( \ | ||
| 420 | 0, 0, 0, 0, 6, 7, 4, 5, 10, 11, 8, 9, 17, 18, 19, 16, \ | ||
| 421 | 0, 0, 0, 0, 0, 0, 0, 0, 35, 33, 34, 32, 71, 69, 70, 68) | ||
| 422 | #define _trans_cube_FUr_inverse _mm256_set_epi8( \ | ||
| 423 | 0, 0, 0, 0, 6, 7, 4, 5, 10, 11, 8, 9, 17, 18, 19, 16, \ | ||
| 424 | 0, 0, 0, 0, 0, 0, 0, 0, 35, 33, 34, 32, 71, 69, 70, 68) | ||
| 425 | #define _trans_cube_FRr _mm256_set_epi8( \ | ||
| 426 | 0, 0, 0, 0, 21, 22, 23, 20, 17, 18, 19, 16, 11, 10, 9, 8, \ | ||
| 427 | 0, 0, 0, 0, 0, 0, 0, 0, 71, 69, 68, 70, 33, 35, 34, 32) | ||
| 428 | #define _trans_cube_FRr_inverse _mm256_set_epi8( \ | ||
| 429 | 0, 0, 0, 0, 3, 2, 1, 0, 25, 26, 27, 24, 21, 22, 23, 20, \ | ||
| 430 | 0, 0, 0, 0, 0, 0, 0, 0, 39, 36, 38, 37, 66, 65, 67, 64) | ||
| 431 | #define _trans_cube_FDr _mm256_set_epi8( \ | ||
| 432 | 0, 0, 0, 0, 4, 5, 6, 7, 11, 10, 9, 8, 18, 17, 16, 19, \ | ||
| 433 | 0, 0, 0, 0, 0, 0, 0, 0, 33, 35, 32, 34, 69, 71, 68, 70) | ||
| 434 | #define _trans_cube_FDr_inverse _mm256_set_epi8( \ | ||
| 435 | 0, 0, 0, 0, 7, 6, 5, 4, 8, 9, 10, 11, 16, 19, 18, 17, \ | ||
| 436 | 0, 0, 0, 0, 0, 0, 0, 0, 34, 32, 35, 33, 70, 68, 71, 69) | ||
| 437 | #define _trans_cube_FLr _mm256_set_epi8( \ | ||
| 438 | 0, 0, 0, 0, 23, 20, 21, 22, 18, 17, 16, 19, 10, 11, 8, 9, \ | ||
| 439 | 0, 0, 0, 0, 0, 0, 0, 0, 69, 71, 70, 68, 35, 33, 32, 34) | ||
| 440 | #define _trans_cube_FLr_inverse _mm256_set_epi8( \ | ||
| 441 | 0, 0, 0, 0, 2, 3, 0, 1, 27, 24, 25, 26, 20, 23, 22, 21, \ | ||
| 442 | 0, 0, 0, 0, 0, 0, 0, 0, 38, 37, 39, 36, 67, 64, 66, 65) | ||
| 443 | #define _trans_cube_BUr _mm256_set_epi8( \ | ||
| 444 | 0, 0, 0, 0, 7, 6, 5, 4, 8, 9, 10, 11, 16, 19, 18, 17, \ | ||
| 445 | 0, 0, 0, 0, 0, 0, 0, 0, 34, 32, 35, 33, 70, 68, 71, 69) | ||
| 446 | #define _trans_cube_BUr_inverse _mm256_set_epi8( \ | ||
| 447 | 0, 0, 0, 0, 4, 5, 6, 7, 11, 10, 9, 8, 18, 17, 16, 19, \ | ||
| 448 | 0, 0, 0, 0, 0, 0, 0, 0, 33, 35, 32, 34, 69, 71, 68, 70) | ||
| 449 | #define _trans_cube_BRr _mm256_set_epi8( \ | ||
| 450 | 0, 0, 0, 0, 22, 21, 20, 23, 19, 16, 17, 18, 8, 9, 10, 11, \ | ||
| 451 | 0, 0, 0, 0, 0, 0, 0, 0, 68, 70, 71, 69, 34, 32, 33, 35) | ||
| 452 | #define _trans_cube_BRr_inverse _mm256_set_epi8( \ | ||
| 453 | 0, 0, 0, 0, 0, 1, 2, 3, 24, 27, 26, 25, 23, 20, 21, 22, \ | ||
| 454 | 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 36, 39, 64, 67, 65, 66) | ||
| 455 | #define _trans_cube_BDr _mm256_set_epi8( \ | ||
| 456 | 0, 0, 0, 0, 5, 4, 7, 6, 9, 8, 11, 10, 19, 16, 17, 18, \ | ||
| 457 | 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 33, 35, 68, 70, 69, 71) | ||
| 458 | #define _trans_cube_BDr_inverse _mm256_set_epi8( \ | ||
| 459 | 0, 0, 0, 0, 5, 4, 7, 6, 9, 8, 11, 10, 19, 16, 17, 18, \ | ||
| 460 | 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 33, 35, 68, 70, 69, 71) | ||
| 461 | #define _trans_cube_BLr _mm256_set_epi8( \ | ||
| 462 | 0, 0, 0, 0, 20, 23, 22, 21, 16, 19, 18, 17, 9, 8, 11, 10, \ | ||
| 463 | 0, 0, 0, 0, 0, 0, 0, 0, 70, 68, 69, 71, 32, 34, 35, 33) | ||
| 464 | #define _trans_cube_BLr_inverse _mm256_set_epi8( \ | ||
| 465 | 0, 0, 0, 0, 1, 0, 3, 2, 26, 25, 24, 27, 22, 21, 20, 23, \ | ||
| 466 | 0, 0, 0, 0, 0, 0, 0, 0, 36, 39, 37, 38, 65, 66, 64, 67) | ||
| 467 | #define _trans_cube_UFm _mm256_set_epi8( \ | ||
| 468 | 0, 0, 0, 0, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0, \ | ||
| 469 | 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 1, 0, 7, 6, 5, 4) | ||
| 470 | #define _trans_cube_UFm_inverse _mm256_set_epi8( \ | ||
| 471 | 0, 0, 0, 0, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0, \ | ||
| 472 | 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 1, 0, 7, 6, 5, 4) | ||
| 473 | #define _trans_cube_ULm _mm256_set_epi8( \ | ||
| 474 | 0, 0, 0, 0, 25, 26, 27, 24, 3, 2, 1, 0, 7, 6, 5, 4, \ | ||
| 475 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 4, 5, 2, 3, 1, 0) | ||
| 476 | #define _trans_cube_ULm_inverse _mm256_set_epi8( \ | ||
| 477 | 0, 0, 0, 0, 25, 26, 27, 24, 3, 2, 1, 0, 7, 6, 5, 4, \ | ||
| 478 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 4, 5, 2, 3, 1, 0) | ||
| 479 | #define _trans_cube_UBm _mm256_set_epi8( \ | ||
| 480 | 0, 0, 0, 0, 8, 9, 10, 11, 7, 6, 5, 4, 2, 3, 0, 1, \ | ||
| 481 | 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 1, 6, 7, 4, 5) | ||
| 482 | #define _trans_cube_UBm_inverse _mm256_set_epi8( \ | ||
| 483 | 0, 0, 0, 0, 8, 9, 10, 11, 7, 6, 5, 4, 2, 3, 0, 1, \ | ||
| 484 | 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 1, 6, 7, 4, 5) | ||
| 485 | #define _trans_cube_URm _mm256_set_epi8( \ | ||
| 486 | 0, 0, 0, 0, 27, 24, 25, 26, 2, 3, 0, 1, 6, 7, 4, 5, \ | ||
| 487 | 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 5, 4, 3, 2, 0, 1) | ||
| 488 | #define _trans_cube_URm_inverse _mm256_set_epi8( \ | ||
| 489 | 0, 0, 0, 0, 27, 24, 25, 26, 2, 3, 0, 1, 6, 7, 4, 5, \ | ||
| 490 | 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 5, 4, 3, 2, 0, 1) | ||
| 491 | #define _trans_cube_DFm _mm256_set_epi8( \ | ||
| 492 | 0, 0, 0, 0, 11, 10, 9, 8, 4, 5, 6, 7, 0, 1, 2, 3, \ | ||
| 493 | 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 2, 5, 4, 7, 6) | ||
| 494 | #define _trans_cube_DFm_inverse _mm256_set_epi8( \ | ||
| 495 | 0, 0, 0, 0, 11, 10, 9, 8, 4, 5, 6, 7, 0, 1, 2, 3, \ | ||
| 496 | 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 2, 5, 4, 7, 6) | ||
| 497 | #define _trans_cube_DLm _mm256_set_epi8( \ | ||
| 498 | 0, 0, 0, 0, 26, 25, 24, 27, 1, 0, 3, 2, 4, 5, 6, 7, \ | ||
| 499 | 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 7, 6, 1, 0, 2, 3) | ||
| 500 | #define _trans_cube_DLm_inverse _mm256_set_epi8( \ | ||
| 501 | 0, 0, 0, 0, 24, 27, 26, 25, 0, 1, 2, 3, 5, 4, 7, 6, \ | ||
| 502 | 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 6, 7, 0, 1, 3, 2) | ||
| 503 | #define _trans_cube_DBm _mm256_set_epi8( \ | ||
| 504 | 0, 0, 0, 0, 9, 8, 11, 10, 5, 4, 7, 6, 1, 0, 3, 2, \ | ||
| 505 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7) | ||
| 506 | #define _trans_cube_DBm_inverse _mm256_set_epi8( \ | ||
| 507 | 0, 0, 0, 0, 9, 8, 11, 10, 5, 4, 7, 6, 1, 0, 3, 2, \ | ||
| 508 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7) | ||
| 509 | #define _trans_cube_DRm _mm256_set_epi8( \ | ||
| 510 | 0, 0, 0, 0, 24, 27, 26, 25, 0, 1, 2, 3, 5, 4, 7, 6, \ | ||
| 511 | 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 6, 7, 0, 1, 3, 2) | ||
| 512 | #define _trans_cube_DRm_inverse _mm256_set_epi8( \ | ||
| 513 | 0, 0, 0, 0, 26, 25, 24, 27, 1, 0, 3, 2, 4, 5, 6, 7, \ | ||
| 514 | 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 7, 6, 1, 0, 2, 3) | ||
| 515 | #define _trans_cube_RUm _mm256_set_epi8( \ | ||
| 516 | 0, 0, 0, 0, 3, 2, 1, 0, 24, 27, 26, 25, 20, 23, 22, 21, \ | ||
| 517 | 0, 0, 0, 0, 0, 0, 0, 0, 35, 32, 34, 33, 70, 69, 71, 68) | ||
| 518 | #define _trans_cube_RUm_inverse _mm256_set_epi8( \ | ||
| 519 | 0, 0, 0, 0, 22, 21, 20, 23, 18, 17, 16, 19, 11, 10, 9, 8, \ | ||
| 520 | 0, 0, 0, 0, 0, 0, 0, 0, 33, 35, 34, 32, 71, 69, 68, 70) | ||
| 521 | #define _trans_cube_RFm _mm256_set_epi8( \ | ||
| 522 | 0, 0, 0, 0, 18, 17, 16, 19, 23, 20, 21, 22, 24, 27, 26, 25, \ | ||
| 523 | 0, 0, 0, 0, 0, 0, 0, 0, 69, 70, 71, 68, 35, 32, 33, 34) | ||
| 524 | #define _trans_cube_RFm_inverse _mm256_set_epi8( \ | ||
| 525 | 0, 0, 0, 0, 18, 17, 16, 19, 23, 20, 21, 22, 24, 27, 26, 25, \ | ||
| 526 | 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 36, 67, 64, 65, 66) | ||
| 527 | #define _trans_cube_RDm _mm256_set_epi8( \ | ||
| 528 | 0, 0, 0, 0, 1, 0, 3, 2, 27, 24, 25, 26, 23, 20, 21, 22, \ | ||
| 529 | 0, 0, 0, 0, 0, 0, 0, 0, 32, 35, 33, 34, 69, 70, 68, 71) | ||
| 530 | #define _trans_cube_RDm_inverse _mm256_set_epi8( \ | ||
| 531 | 0, 0, 0, 0, 23, 20, 21, 22, 19, 16, 17, 18, 9, 8, 11, 10, \ | ||
| 532 | 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 35, 33, 70, 68, 69, 71) | ||
| 533 | #define _trans_cube_RBm _mm256_set_epi8( \ | ||
| 534 | 0, 0, 0, 0, 16, 19, 18, 17, 20, 23, 22, 21, 27, 24, 25, 26, \ | ||
| 535 | 0, 0, 0, 0, 0, 0, 0, 0, 70, 69, 68, 71, 32, 35, 34, 33) | ||
| 536 | #define _trans_cube_RBm_inverse _mm256_set_epi8( \ | ||
| 537 | 0, 0, 0, 0, 19, 16, 17, 18, 22, 21, 20, 23, 26, 25, 24, 27, \ | ||
| 538 | 0, 0, 0, 0, 0, 0, 0, 0, 36, 39, 38, 37, 66, 65, 64, 67) | ||
| 539 | #define _trans_cube_LUm _mm256_set_epi8( \ | ||
| 540 | 0, 0, 0, 0, 2, 3, 0, 1, 26, 25, 24, 27, 21, 22, 23, 20, \ | ||
| 541 | 0, 0, 0, 0, 0, 0, 0, 0, 34, 33, 35, 32, 71, 68, 70, 69) | ||
| 542 | #define _trans_cube_LUm_inverse _mm256_set_epi8( \ | ||
| 543 | 0, 0, 0, 0, 20, 23, 22, 21, 17, 18, 19, 16, 10, 11, 8, 9, \ | ||
| 544 | 0, 0, 0, 0, 0, 0, 0, 0, 35, 33, 32, 34, 69, 71, 70, 68) | ||
| 545 | #define _trans_cube_LFm _mm256_set_epi8( \ | ||
| 546 | 0, 0, 0, 0, 17, 18, 19, 16, 21, 22, 23, 20, 25, 26, 27, 24, \ | ||
| 547 | 0, 0, 0, 0, 0, 0, 0, 0, 71, 68, 69, 70, 33, 34, 35, 32) | ||
| 548 | #define _trans_cube_LFm_inverse _mm256_set_epi8( \ | ||
| 549 | 0, 0, 0, 0, 17, 18, 19, 16, 21, 22, 23, 20, 25, 26, 27, 24, \ | ||
| 550 | 0, 0, 0, 0, 0, 0, 0, 0, 39, 36, 37, 38, 65, 66, 67, 64) | ||
| 551 | #define _trans_cube_LDm _mm256_set_epi8( \ | ||
| 552 | 0, 0, 0, 0, 0, 1, 2, 3, 25, 26, 27, 24, 22, 21, 20, 23, \ | ||
| 553 | 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 32, 35, 68, 71, 69, 70) | ||
| 554 | #define _trans_cube_LDm_inverse _mm256_set_epi8( \ | ||
| 555 | 0, 0, 0, 0, 21, 22, 23, 20, 16, 19, 18, 17, 8, 9, 10, 11, \ | ||
| 556 | 0, 0, 0, 0, 0, 0, 0, 0, 34, 32, 33, 35, 68, 70, 71, 69) | ||
| 557 | #define _trans_cube_LBm _mm256_set_epi8( \ | ||
| 558 | 0, 0, 0, 0, 19, 16, 17, 18, 22, 21, 20, 23, 26, 25, 24, 27, \ | ||
| 559 | 0, 0, 0, 0, 0, 0, 0, 0, 68, 71, 70, 69, 34, 33, 32, 35) | ||
| 560 | #define _trans_cube_LBm_inverse _mm256_set_epi8( \ | ||
| 561 | 0, 0, 0, 0, 16, 19, 18, 17, 20, 23, 22, 21, 27, 24, 25, 26, \ | ||
| 562 | 0, 0, 0, 0, 0, 0, 0, 0, 38, 37, 36, 39, 64, 67, 66, 65) | ||
| 563 | #define _trans_cube_FUm _mm256_set_epi8( \ | ||
| 564 | 0, 0, 0, 0, 7, 6, 5, 4, 11, 10, 9, 8, 17, 18, 19, 16, \ | ||
| 565 | 0, 0, 0, 0, 0, 0, 0, 0, 39, 37, 38, 36, 67, 65, 66, 64) | ||
| 566 | #define _trans_cube_FUm_inverse _mm256_set_epi8( \ | ||
| 567 | 0, 0, 0, 0, 7, 6, 5, 4, 11, 10, 9, 8, 17, 18, 19, 16, \ | ||
| 568 | 0, 0, 0, 0, 0, 0, 0, 0, 71, 69, 70, 68, 35, 33, 34, 32) | ||
| 569 | #define _trans_cube_FRm _mm256_set_epi8( \ | ||
| 570 | 0, 0, 0, 0, 20, 23, 22, 21, 17, 18, 19, 16, 10, 11, 8, 9, \ | ||
| 571 | 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 64, 66, 37, 39, 38, 36) | ||
| 572 | #define _trans_cube_FRm_inverse _mm256_set_epi8( \ | ||
| 573 | 0, 0, 0, 0, 2, 3, 0, 1, 26, 25, 24, 27, 21, 22, 23, 20, \ | ||
| 574 | 0, 0, 0, 0, 0, 0, 0, 0, 66, 65, 67, 64, 39, 36, 38, 37) | ||
| 575 | #define _trans_cube_FDm _mm256_set_epi8( \ | ||
| 576 | 0, 0, 0, 0, 5, 4, 7, 6, 10, 11, 8, 9, 18, 17, 16, 19, \ | ||
| 577 | 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 36, 38, 65, 67, 64, 66) | ||
| 578 | #define _trans_cube_FDm_inverse _mm256_set_epi8( \ | ||
| 579 | 0, 0, 0, 0, 6, 7, 4, 5, 9, 8, 11, 10, 16, 19, 18, 17, \ | ||
| 580 | 0, 0, 0, 0, 0, 0, 0, 0, 70, 68, 71, 69, 34, 32, 35, 33) | ||
| 581 | #define _trans_cube_FLm _mm256_set_epi8( \ | ||
| 582 | 0, 0, 0, 0, 22, 21, 20, 23, 18, 17, 16, 19, 11, 10, 9, 8, \ | ||
| 583 | 0, 0, 0, 0, 0, 0, 0, 0, 65, 67, 66, 64, 39, 37, 36, 38) | ||
| 584 | #define _trans_cube_FLm_inverse _mm256_set_epi8( \ | ||
| 585 | 0, 0, 0, 0, 3, 2, 1, 0, 24, 27, 26, 25, 20, 23, 22, 21, \ | ||
| 586 | 0, 0, 0, 0, 0, 0, 0, 0, 67, 64, 66, 65, 38, 37, 39, 36) | ||
| 587 | #define _trans_cube_BUm _mm256_set_epi8( \ | ||
| 588 | 0, 0, 0, 0, 6, 7, 4, 5, 9, 8, 11, 10, 16, 19, 18, 17, \ | ||
| 589 | 0, 0, 0, 0, 0, 0, 0, 0, 38, 36, 39, 37, 66, 64, 67, 65) | ||
| 590 | #define _trans_cube_BUm_inverse _mm256_set_epi8( \ | ||
| 591 | 0, 0, 0, 0, 5, 4, 7, 6, 10, 11, 8, 9, 18, 17, 16, 19, \ | ||
| 592 | 0, 0, 0, 0, 0, 0, 0, 0, 69, 71, 68, 70, 33, 35, 32, 34) | ||
| 593 | #define _trans_cube_BRm _mm256_set_epi8( \ | ||
| 594 | 0, 0, 0, 0, 23, 20, 21, 22, 19, 16, 17, 18, 9, 8, 11, 10, \ | ||
| 595 | 0, 0, 0, 0, 0, 0, 0, 0, 64, 66, 67, 65, 38, 36, 37, 39) | ||
| 596 | #define _trans_cube_BRm_inverse _mm256_set_epi8( \ | ||
| 597 | 0, 0, 0, 0, 1, 0, 3, 2, 27, 24, 25, 26, 23, 20, 21, 22, \ | ||
| 598 | 0, 0, 0, 0, 0, 0, 0, 0, 64, 67, 65, 66, 37, 38, 36, 39) | ||
| 599 | #define _trans_cube_BDm _mm256_set_epi8( \ | ||
| 600 | 0, 0, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 19, 16, 17, 18, \ | ||
| 601 | 0, 0, 0, 0, 0, 0, 0, 0, 36, 38, 37, 39, 64, 66, 65, 67) | ||
| 602 | #define _trans_cube_BDm_inverse _mm256_set_epi8( \ | ||
| 603 | 0, 0, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 19, 16, 17, 18, \ | ||
| 604 | 0, 0, 0, 0, 0, 0, 0, 0, 68, 70, 69, 71, 32, 34, 33, 35) | ||
| 605 | #define _trans_cube_BLm _mm256_set_epi8( \ | ||
| 606 | 0, 0, 0, 0, 21, 22, 23, 20, 16, 19, 18, 17, 8, 9, 10, 11, \ | ||
| 607 | 0, 0, 0, 0, 0, 0, 0, 0, 66, 64, 65, 67, 36, 38, 39, 37) | ||
| 608 | #define _trans_cube_BLm_inverse _mm256_set_epi8( \ | ||
| 609 | 0, 0, 0, 0, 0, 1, 2, 3, 25, 26, 27, 24, 22, 21, 20, 23, \ | ||
| 610 | 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 64, 67, 36, 39, 37, 38) | ||
| 611 | 497 | ||
| 498 | _static inline cube_fast_t fastcube( | ||
| 499 | uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, | ||
| 500 | uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, | ||
| 501 | uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, | ||
| 502 | uint8_t, uint8_t, uint8_t, uint8_t, uint8_t | ||
| 503 | ); | ||
| 612 | _static cube_fast_t cubetofast(cube_t); | 504 | _static cube_fast_t cubetofast(cube_t); |
| 613 | _static cube_t fasttocube(cube_fast_t); | 505 | _static cube_t fasttocube(cube_fast_t); |
| 614 | _static_inline bool equal_fast(cube_fast_t, cube_fast_t); | 506 | _static_inline bool equal_fast(cube_fast_t, cube_fast_t); |
| @@ -619,6 +511,39 @@ _static_inline cube_fast_t inverse_fast(cube_fast_t); | |||
| 619 | _static_inline cube_fast_t compose_fast(cube_fast_t, cube_fast_t); | 511 | _static_inline cube_fast_t compose_fast(cube_fast_t, cube_fast_t); |
| 620 | _static_inline int64_t coord_fast_eo(cube_fast_t); | 512 | _static_inline int64_t coord_fast_eo(cube_fast_t); |
| 621 | 513 | ||
| 514 | _static inline cube_fast_t | ||
| 515 | fastcube( | ||
| 516 | uint8_t c_ufr, | ||
| 517 | uint8_t c_ubl, | ||
| 518 | uint8_t c_dfl, | ||
| 519 | uint8_t c_dbr, | ||
| 520 | uint8_t c_ufl, | ||
| 521 | uint8_t c_ubr, | ||
| 522 | uint8_t c_dfr, | ||
| 523 | uint8_t c_dbl, | ||
| 524 | |||
| 525 | uint8_t e_uf, | ||
| 526 | uint8_t e_ub, | ||
| 527 | uint8_t e_db, | ||
| 528 | uint8_t e_df, | ||
| 529 | uint8_t e_ur, | ||
| 530 | uint8_t e_ul, | ||
| 531 | uint8_t e_dl, | ||
| 532 | uint8_t e_dr, | ||
| 533 | uint8_t e_fr, | ||
| 534 | uint8_t e_fl, | ||
| 535 | uint8_t e_bl, | ||
| 536 | uint8_t e_br | ||
| 537 | ) | ||
| 538 | { | ||
| 539 | return _mm256_set_epi8( | ||
| 540 | 0, 0, 0, 0, e_br, e_bl, e_fl, e_fr, | ||
| 541 | e_dr, e_dl, e_ul, e_ur, e_df, e_db, e_ub, e_uf, | ||
| 542 | 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 543 | c_dbl, c_dfr, c_ubr, c_ufl, c_dbr, c_dfl, c_ubl, c_ufr | ||
| 544 | ); | ||
| 545 | } | ||
| 546 | |||
| 622 | _static cube_fast_t | 547 | _static cube_fast_t |
| 623 | cubetofast(cube_t a) | 548 | cubetofast(cube_t a) |
| 624 | { | 549 | { |
| @@ -780,356 +705,12 @@ in the previous section(s) for unsupported architectures. | |||
| 780 | 705 | ||
| 781 | typedef cube_t cube_fast_t; | 706 | typedef cube_t cube_fast_t; |
| 782 | 707 | ||
| 783 | _static cube_fast_t zero_fast = { .corner = {0}, .edge = {0} }; | 708 | _static cube_fast_t fastcube( |
| 784 | _static cube_t solved_fast = { | 709 | uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, |
| 785 | .corner = {0, 1, 2, 3, 4, 5, 6, 7}, | 710 | uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, |
| 786 | .edge = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} | 711 | uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, |
| 787 | }; | 712 | uint8_t, uint8_t, uint8_t, uint8_t, uint8_t |
| 788 | 713 | ); | |
| 789 | _static cube_fast_t _move_cube_U = { | ||
| 790 | .corner = {5, 4, 2, 3, 0, 1, 6, 7}, | ||
| 791 | .edge = {4, 5, 2, 3, 1, 0, 6, 7, 8, 9, 10, 11} }; | ||
| 792 | _static cube_fast_t _move_cube_U2 = { | ||
| 793 | .corner = {1, 0, 2, 3, 5, 4, 6, 7}, | ||
| 794 | .edge = {1, 0, 2, 3, 5, 4, 6, 7, 8, 9, 10, 11} }; | ||
| 795 | _static cube_fast_t _move_cube_U3 = { | ||
| 796 | .corner = {4, 5, 2, 3, 1, 0, 6, 7}, | ||
| 797 | .edge = {5, 4, 2, 3, 0, 1, 6, 7, 8, 9, 10, 11} }; | ||
| 798 | _static cube_fast_t _move_cube_D = { | ||
| 799 | .corner = {0, 1, 7, 6, 4, 5, 2, 3}, | ||
| 800 | .edge = {0, 1, 7, 6, 4, 5, 2, 3, 8, 9, 10, 11} }; | ||
| 801 | _static cube_fast_t _move_cube_D2 = { | ||
| 802 | .corner = {0, 1, 3, 2, 4, 5, 7, 6}, | ||
| 803 | .edge = {0, 1, 3, 2, 4, 5, 7, 6, 8, 9, 10, 11} }; | ||
| 804 | _static cube_fast_t _move_cube_D3 = { | ||
| 805 | .corner = {0, 1, 6, 7, 4, 5, 3, 2}, | ||
| 806 | .edge = {0, 1, 6, 7, 4, 5, 3, 2, 8, 9, 10, 11} }; | ||
| 807 | _static cube_fast_t _move_cube_R = { | ||
| 808 | .corner = {70, 1, 2, 69, 4, 32, 35, 7}, | ||
| 809 | .edge = {0, 1, 2, 3, 8, 5, 6, 11, 7, 9, 10, 4} }; | ||
| 810 | _static cube_fast_t _move_cube_R2 = { | ||
| 811 | .corner = {3, 1, 2, 0, 4, 6, 5, 7}, | ||
| 812 | .edge = {0, 1, 2, 3, 7, 5, 6, 4, 11, 9, 10, 8} }; | ||
| 813 | _static cube_fast_t _move_cube_R3 = { | ||
| 814 | .corner = {69, 1, 2, 70, 4, 35, 32, 7}, | ||
| 815 | .edge = {0, 1, 2, 3, 11, 5, 6, 8, 4, 9, 10, 7} }; | ||
| 816 | _static cube_fast_t _move_cube_L = { | ||
| 817 | .corner = {0, 71, 68, 3, 33, 5, 6, 34}, | ||
| 818 | .edge = {0, 1, 2, 3, 4, 10, 9, 7, 8, 5, 6, 11} }; | ||
| 819 | _static cube_fast_t _move_cube_L2 = { | ||
| 820 | .corner = {0, 2, 1, 3, 7, 5, 6, 4}, | ||
| 821 | .edge = {0, 1, 2, 3, 4, 6, 5, 7, 8, 10, 9, 11} }; | ||
| 822 | _static cube_fast_t _move_cube_L3 = { | ||
| 823 | .corner = {0, 68, 71, 3, 34, 5, 6, 33}, | ||
| 824 | .edge = {0, 1, 2, 3, 4, 9, 10, 7, 8, 6, 5, 11} }; | ||
| 825 | _static cube_fast_t _move_cube_F = { | ||
| 826 | .corner = {36, 1, 38, 3, 66, 5, 64, 7}, | ||
| 827 | .edge = {25, 1, 2, 24, 4, 5, 6, 7, 16, 19, 10, 11} }; | ||
| 828 | _static cube_fast_t _move_cube_F2 = { | ||
| 829 | .corner = {2, 1, 0, 3, 6, 5, 4, 7}, | ||
| 830 | .edge = {3, 1, 2, 0, 4, 5, 6, 7, 9, 8, 10, 11} }; | ||
| 831 | _static cube_fast_t _move_cube_F3 = { | ||
| 832 | .corner = {38, 1, 36, 3, 64, 5, 66, 7}, | ||
| 833 | .edge = {24, 1, 2, 25, 4, 5, 6, 7, 19, 16, 10, 11} }; | ||
| 834 | _static cube_fast_t _move_cube_B = { | ||
| 835 | .corner = {0, 37, 2, 39, 4, 67, 6, 65}, | ||
| 836 | .edge = {0, 27, 26, 3, 4, 5, 6, 7, 8, 9, 17, 18} }; | ||
| 837 | _static cube_fast_t _move_cube_B2 = { | ||
| 838 | .corner = {0, 3, 2, 1, 4, 7, 6, 5}, | ||
| 839 | .edge = {0, 2, 1, 3, 4, 5, 6, 7, 8, 9, 11, 10} }; | ||
| 840 | _static cube_fast_t _move_cube_B3 = { | ||
| 841 | .corner = {0, 39, 2, 37, 4, 65, 6, 67}, | ||
| 842 | .edge = {0, 26, 27, 3, 4, 5, 6, 7, 8, 9, 18, 17} }; | ||
| 843 | |||
| 844 | _static cube_fast_t _trans_cube_UFr = { | ||
| 845 | .corner = {0, 1, 2, 3, 4, 5, 6, 7}, | ||
| 846 | .edge = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} }; | ||
| 847 | _static cube_fast_t _trans_cube_UFr_inverse = { | ||
| 848 | .corner = {0, 1, 2, 3, 4, 5, 6, 7}, | ||
| 849 | .edge = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} }; | ||
| 850 | _static cube_fast_t _trans_cube_ULr = { | ||
| 851 | .corner = {4, 5, 7, 6, 1, 0, 2, 3}, | ||
| 852 | .edge = {5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24} }; | ||
| 853 | _static cube_fast_t _trans_cube_ULr_inverse = { | ||
| 854 | .corner = {5, 4, 6, 7, 0, 1, 3, 2}, | ||
| 855 | .edge = {4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26} }; | ||
| 856 | _static cube_fast_t _trans_cube_UBr = { | ||
| 857 | .corner = {1, 0, 3, 2, 5, 4, 7, 6}, | ||
| 858 | .edge = {1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9} }; | ||
| 859 | _static cube_fast_t _trans_cube_UBr_inverse = { | ||
| 860 | .corner = {1, 0, 3, 2, 5, 4, 7, 6}, | ||
| 861 | .edge = {1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9} }; | ||
| 862 | _static cube_fast_t _trans_cube_URr = { | ||
| 863 | .corner = {5, 4, 6, 7, 0, 1, 3, 2}, | ||
| 864 | .edge = {4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26} }; | ||
| 865 | _static cube_fast_t _trans_cube_URr_inverse = { | ||
| 866 | .corner = {4, 5, 7, 6, 1, 0, 2, 3}, | ||
| 867 | .edge = {5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24} }; | ||
| 868 | _static cube_fast_t _trans_cube_DFr = { | ||
| 869 | .corner = {2, 3, 0, 1, 6, 7, 4, 5}, | ||
| 870 | .edge = {3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10} }; | ||
| 871 | _static cube_fast_t _trans_cube_DFr_inverse = { | ||
| 872 | .corner = {2, 3, 0, 1, 6, 7, 4, 5}, | ||
| 873 | .edge = {3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10} }; | ||
| 874 | _static cube_fast_t _trans_cube_DLr = { | ||
| 875 | .corner = {7, 6, 4, 5, 2, 3, 1, 0}, | ||
| 876 | .edge = {6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27} }; | ||
| 877 | _static cube_fast_t _trans_cube_DLr_inverse = { | ||
| 878 | .corner = {7, 6, 4, 5, 2, 3, 1, 0}, | ||
| 879 | .edge = {6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27} }; | ||
| 880 | _static cube_fast_t _trans_cube_DBr = { | ||
| 881 | .corner = {3, 2, 1, 0, 7, 6, 5, 4}, | ||
| 882 | .edge = {2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8} }; | ||
| 883 | _static cube_fast_t _trans_cube_DBr_inverse = { | ||
| 884 | .corner = {3, 2, 1, 0, 7, 6, 5, 4}, | ||
| 885 | .edge = {2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8} }; | ||
| 886 | _static cube_fast_t _trans_cube_DRr = { | ||
| 887 | .corner = {6, 7, 5, 4, 3, 2, 0, 1}, | ||
| 888 | .edge = {7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25} }; | ||
| 889 | _static cube_fast_t _trans_cube_DRr_inverse = { | ||
| 890 | .corner = {6, 7, 5, 4, 3, 2, 0, 1}, | ||
| 891 | .edge = {7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25} }; | ||
| 892 | _static cube_fast_t _trans_cube_RUr = { | ||
| 893 | .corner = {64, 67, 65, 66, 37, 38, 36, 39}, | ||
| 894 | .edge = {20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3} }; | ||
| 895 | _static cube_fast_t _trans_cube_RUr_inverse = { | ||
| 896 | .corner = {32, 34, 35, 33, 70, 68, 69, 71}, | ||
| 897 | .edge = {8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21} }; | ||
| 898 | _static cube_fast_t _trans_cube_RFr = { | ||
| 899 | .corner = {38, 37, 36, 39, 64, 67, 66, 65}, | ||
| 900 | .edge = {24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18} }; | ||
| 901 | _static cube_fast_t _trans_cube_RFr_inverse = { | ||
| 902 | .corner = {36, 39, 38, 37, 66, 65, 64, 67}, | ||
| 903 | .edge = {25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17} }; | ||
| 904 | _static cube_fast_t _trans_cube_RDr = { | ||
| 905 | .corner = {67, 64, 66, 65, 38, 37, 39, 36}, | ||
| 906 | .edge = {23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1} }; | ||
| 907 | _static cube_fast_t _trans_cube_RDr_inverse = { | ||
| 908 | .corner = {33, 35, 34, 32, 71, 69, 68, 70}, | ||
| 909 | .edge = {10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20} }; | ||
| 910 | _static cube_fast_t _trans_cube_RBr = { | ||
| 911 | .corner = {37, 38, 39, 36, 67, 64, 65, 66}, | ||
| 912 | .edge = {27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16} }; | ||
| 913 | _static cube_fast_t _trans_cube_RBr_inverse = { | ||
| 914 | .corner = {37, 38, 39, 36, 67, 64, 65, 66}, | ||
| 915 | .edge = {27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16} }; | ||
| 916 | _static cube_fast_t _trans_cube_LUr = { | ||
| 917 | .corner = {65, 66, 64, 67, 36, 39, 37, 38}, | ||
| 918 | .edge = {21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2} }; | ||
| 919 | _static cube_fast_t _trans_cube_LUr_inverse = { | ||
| 920 | .corner = {34, 32, 33, 35, 68, 70, 71, 69}, | ||
| 921 | .edge = {9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23} }; | ||
| 922 | _static cube_fast_t _trans_cube_LFr = { | ||
| 923 | .corner = {36, 39, 38, 37, 66, 65, 64, 67}, | ||
| 924 | .edge = {25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17} }; | ||
| 925 | _static cube_fast_t _trans_cube_LFr_inverse = { | ||
| 926 | .corner = {38, 37, 36, 39, 64, 67, 66, 65}, | ||
| 927 | .edge = {24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18} }; | ||
| 928 | _static cube_fast_t _trans_cube_LDr = { | ||
| 929 | .corner = {66, 65, 67, 64, 39, 36, 38, 37}, | ||
| 930 | .edge = {22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0} }; | ||
| 931 | _static cube_fast_t _trans_cube_LDr_inverse = { | ||
| 932 | .corner = {35, 33, 32, 34, 69, 71, 70, 68}, | ||
| 933 | .edge = {11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22} }; | ||
| 934 | _static cube_fast_t _trans_cube_LBr = { | ||
| 935 | .corner = {39, 36, 37, 38, 65, 66, 67, 64}, | ||
| 936 | .edge = {26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19} }; | ||
| 937 | _static cube_fast_t _trans_cube_LBr_inverse = { | ||
| 938 | .corner = {39, 36, 37, 38, 65, 66, 67, 64}, | ||
| 939 | .edge = {26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19} }; | ||
| 940 | _static cube_fast_t _trans_cube_FUr = { | ||
| 941 | .corner = {68, 70, 69, 71, 32, 34, 33, 35}, | ||
| 942 | .edge = {16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6} }; | ||
| 943 | _static cube_fast_t _trans_cube_FUr_inverse = { | ||
| 944 | .corner = {68, 70, 69, 71, 32, 34, 33, 35}, | ||
| 945 | .edge = {16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6} }; | ||
| 946 | _static cube_fast_t _trans_cube_FRr = { | ||
| 947 | .corner = {32, 34, 35, 33, 70, 68, 69, 71}, | ||
| 948 | .edge = {8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21} }; | ||
| 949 | _static cube_fast_t _trans_cube_FRr_inverse = { | ||
| 950 | .corner = {64, 67, 65, 66, 37, 38, 36, 39}, | ||
| 951 | .edge = {20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3} }; | ||
| 952 | _static cube_fast_t _trans_cube_FDr = { | ||
| 953 | .corner = {70, 68, 71, 69, 34, 32, 35, 33}, | ||
| 954 | .edge = {19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4} }; | ||
| 955 | _static cube_fast_t _trans_cube_FDr_inverse = { | ||
| 956 | .corner = {69, 71, 68, 70, 33, 35, 32, 34}, | ||
| 957 | .edge = {17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7} }; | ||
| 958 | _static cube_fast_t _trans_cube_FLr = { | ||
| 959 | .corner = {34, 32, 33, 35, 68, 70, 71, 69}, | ||
| 960 | .edge = {9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23} }; | ||
| 961 | _static cube_fast_t _trans_cube_FLr_inverse = { | ||
| 962 | .corner = {65, 66, 64, 67, 36, 39, 37, 38}, | ||
| 963 | .edge = {21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2} }; | ||
| 964 | _static cube_fast_t _trans_cube_BUr = { | ||
| 965 | .corner = {69, 71, 68, 70, 33, 35, 32, 34}, | ||
| 966 | .edge = {17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7} }; | ||
| 967 | _static cube_fast_t _trans_cube_BUr_inverse = { | ||
| 968 | .corner = {70, 68, 71, 69, 34, 32, 35, 33}, | ||
| 969 | .edge = {19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4} }; | ||
| 970 | _static cube_fast_t _trans_cube_BRr = { | ||
| 971 | .corner = {35, 33, 32, 34, 69, 71, 70, 68}, | ||
| 972 | .edge = {11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22} }; | ||
| 973 | _static cube_fast_t _trans_cube_BRr_inverse = { | ||
| 974 | .corner = {66, 65, 67, 64, 39, 36, 38, 37}, | ||
| 975 | .edge = {22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0} }; | ||
| 976 | _static cube_fast_t _trans_cube_BDr = { | ||
| 977 | .corner = {71, 69, 70, 68, 35, 33, 34, 32}, | ||
| 978 | .edge = {18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5} }; | ||
| 979 | _static cube_fast_t _trans_cube_BDr_inverse = { | ||
| 980 | .corner = {71, 69, 70, 68, 35, 33, 34, 32}, | ||
| 981 | .edge = {18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5} }; | ||
| 982 | _static cube_fast_t _trans_cube_BLr = { | ||
| 983 | .corner = {33, 35, 34, 32, 71, 69, 68, 70}, | ||
| 984 | .edge = {10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20} }; | ||
| 985 | _static cube_fast_t _trans_cube_BLr_inverse = { | ||
| 986 | .corner = {67, 64, 66, 65, 38, 37, 39, 36}, | ||
| 987 | .edge = {23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1} }; | ||
| 988 | _static cube_fast_t _trans_cube_UFm = { | ||
| 989 | .corner = {4, 5, 6, 7, 0, 1, 2, 3}, | ||
| 990 | .edge = {0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10} }; | ||
| 991 | _static cube_fast_t _trans_cube_UFm_inverse = { | ||
| 992 | .corner = {4, 5, 6, 7, 0, 1, 2, 3}, | ||
| 993 | .edge = {0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10} }; | ||
| 994 | _static cube_fast_t _trans_cube_ULm = { | ||
| 995 | .corner = {0, 1, 3, 2, 5, 4, 6, 7}, | ||
| 996 | .edge = {4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25} }; | ||
| 997 | _static cube_fast_t _trans_cube_ULm_inverse = { | ||
| 998 | .corner = {0, 1, 3, 2, 5, 4, 6, 7}, | ||
| 999 | .edge = {4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25} }; | ||
| 1000 | _static cube_fast_t _trans_cube_UBm = { | ||
| 1001 | .corner = {5, 4, 7, 6, 1, 0, 3, 2}, | ||
| 1002 | .edge = {1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8} }; | ||
| 1003 | _static cube_fast_t _trans_cube_UBm_inverse = { | ||
| 1004 | .corner = {5, 4, 7, 6, 1, 0, 3, 2}, | ||
| 1005 | .edge = {1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8} }; | ||
| 1006 | _static cube_fast_t _trans_cube_URm = { | ||
| 1007 | .corner = {1, 0, 2, 3, 4, 5, 7, 6}, | ||
| 1008 | .edge = {5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27} }; | ||
| 1009 | _static cube_fast_t _trans_cube_URm_inverse = { | ||
| 1010 | .corner = {1, 0, 2, 3, 4, 5, 7, 6}, | ||
| 1011 | .edge = {5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27} }; | ||
| 1012 | _static cube_fast_t _trans_cube_DFm = { | ||
| 1013 | .corner = {6, 7, 4, 5, 2, 3, 0, 1}, | ||
| 1014 | .edge = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11} }; | ||
| 1015 | _static cube_fast_t _trans_cube_DFm_inverse = { | ||
| 1016 | .corner = {6, 7, 4, 5, 2, 3, 0, 1}, | ||
| 1017 | .edge = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11} }; | ||
| 1018 | _static cube_fast_t _trans_cube_DLm = { | ||
| 1019 | .corner = {3, 2, 0, 1, 6, 7, 5, 4}, | ||
| 1020 | .edge = {7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26} }; | ||
| 1021 | _static cube_fast_t _trans_cube_DLm_inverse = { | ||
| 1022 | .corner = {2, 3, 1, 0, 7, 6, 4, 5}, | ||
| 1023 | .edge = {6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24} }; | ||
| 1024 | _static cube_fast_t _trans_cube_DBm = { | ||
| 1025 | .corner = {7, 6, 5, 4, 3, 2, 1, 0}, | ||
| 1026 | .edge = {2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9} }; | ||
| 1027 | _static cube_fast_t _trans_cube_DBm_inverse = { | ||
| 1028 | .corner = {7, 6, 5, 4, 3, 2, 1, 0}, | ||
| 1029 | .edge = {2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9} }; | ||
| 1030 | _static cube_fast_t _trans_cube_DRm = { | ||
| 1031 | .corner = {2, 3, 1, 0, 7, 6, 4, 5}, | ||
| 1032 | .edge = {6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24} }; | ||
| 1033 | _static cube_fast_t _trans_cube_DRm_inverse = { | ||
| 1034 | .corner = {3, 2, 0, 1, 6, 7, 5, 4}, | ||
| 1035 | .edge = {7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26} }; | ||
| 1036 | _static cube_fast_t _trans_cube_RUm = { | ||
| 1037 | .corner = {68, 71, 69, 70, 33, 34, 32, 35}, | ||
| 1038 | .edge = {21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3} }; | ||
| 1039 | _static cube_fast_t _trans_cube_RUm_inverse = { | ||
| 1040 | .corner = {70, 68, 69, 71, 32, 34, 35, 33}, | ||
| 1041 | .edge = {8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22} }; | ||
| 1042 | _static cube_fast_t _trans_cube_RFm = { | ||
| 1043 | .corner = {34, 33, 32, 35, 68, 71, 70, 69}, | ||
| 1044 | .edge = {25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18} }; | ||
| 1045 | _static cube_fast_t _trans_cube_RFm_inverse = { | ||
| 1046 | .corner = {66, 65, 64, 67, 36, 39, 38, 37}, | ||
| 1047 | .edge = {25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18} }; | ||
| 1048 | _static cube_fast_t _trans_cube_RDm = { | ||
| 1049 | .corner = {71, 68, 70, 69, 34, 33, 35, 32}, | ||
| 1050 | .edge = {22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1} }; | ||
| 1051 | _static cube_fast_t _trans_cube_RDm_inverse = { | ||
| 1052 | .corner = {71, 69, 68, 70, 33, 35, 34, 32}, | ||
| 1053 | .edge = {10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23} }; | ||
| 1054 | _static cube_fast_t _trans_cube_RBm = { | ||
| 1055 | .corner = {33, 34, 35, 32, 71, 68, 69, 70}, | ||
| 1056 | .edge = {26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16} }; | ||
| 1057 | _static cube_fast_t _trans_cube_RBm_inverse = { | ||
| 1058 | .corner = {67, 64, 65, 66, 37, 38, 39, 36}, | ||
| 1059 | .edge = {27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19} }; | ||
| 1060 | _static cube_fast_t _trans_cube_LUm = { | ||
| 1061 | .corner = {69, 70, 68, 71, 32, 35, 33, 34}, | ||
| 1062 | .edge = {20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2} }; | ||
| 1063 | _static cube_fast_t _trans_cube_LUm_inverse = { | ||
| 1064 | .corner = {68, 70, 71, 69, 34, 32, 33, 35}, | ||
| 1065 | .edge = {9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20} }; | ||
| 1066 | _static cube_fast_t _trans_cube_LFm = { | ||
| 1067 | .corner = {32, 35, 34, 33, 70, 69, 68, 71}, | ||
| 1068 | .edge = {24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17} }; | ||
| 1069 | _static cube_fast_t _trans_cube_LFm_inverse = { | ||
| 1070 | .corner = {64, 67, 66, 65, 38, 37, 36, 39}, | ||
| 1071 | .edge = {24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17} }; | ||
| 1072 | _static cube_fast_t _trans_cube_LDm = { | ||
| 1073 | .corner = {70, 69, 71, 68, 35, 32, 34, 33}, | ||
| 1074 | .edge = {23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0} }; | ||
| 1075 | _static cube_fast_t _trans_cube_LDm_inverse = { | ||
| 1076 | .corner = {69, 71, 70, 68, 35, 33, 32, 34}, | ||
| 1077 | .edge = {11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21} }; | ||
| 1078 | _static cube_fast_t _trans_cube_LBm = { | ||
| 1079 | .corner = {35, 32, 33, 34, 69, 70, 71, 68}, | ||
| 1080 | .edge = {27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19} }; | ||
| 1081 | _static cube_fast_t _trans_cube_LBm_inverse = { | ||
| 1082 | .corner = {65, 66, 67, 64, 39, 36, 37, 38}, | ||
| 1083 | .edge = {26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16} }; | ||
| 1084 | _static cube_fast_t _trans_cube_FUm = { | ||
| 1085 | .corner = {64, 66, 65, 67, 36, 38, 37, 39}, | ||
| 1086 | .edge = {16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7} }; | ||
| 1087 | _static cube_fast_t _trans_cube_FUm_inverse = { | ||
| 1088 | .corner = {32, 34, 33, 35, 68, 70, 69, 71}, | ||
| 1089 | .edge = {16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7} }; | ||
| 1090 | _static cube_fast_t _trans_cube_FRm = { | ||
| 1091 | .corner = {36, 38, 39, 37, 66, 64, 65, 67}, | ||
| 1092 | .edge = {9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20} }; | ||
| 1093 | _static cube_fast_t _trans_cube_FRm_inverse = { | ||
| 1094 | .corner = {37, 38, 36, 39, 64, 67, 65, 66}, | ||
| 1095 | .edge = {20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2} }; | ||
| 1096 | _static cube_fast_t _trans_cube_FDm = { | ||
| 1097 | .corner = {66, 64, 67, 65, 38, 36, 39, 37}, | ||
| 1098 | .edge = {19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5} }; | ||
| 1099 | _static cube_fast_t _trans_cube_FDm_inverse = { | ||
| 1100 | .corner = {33, 35, 32, 34, 69, 71, 68, 70}, | ||
| 1101 | .edge = {17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6} }; | ||
| 1102 | _static cube_fast_t _trans_cube_FLm = { | ||
| 1103 | .corner = {38, 36, 37, 39, 64, 66, 67, 65}, | ||
| 1104 | .edge = {8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22} }; | ||
| 1105 | _static cube_fast_t _trans_cube_FLm_inverse = { | ||
| 1106 | .corner = {36, 39, 37, 38, 65, 66, 64, 67}, | ||
| 1107 | .edge = {21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3} }; | ||
| 1108 | _static cube_fast_t _trans_cube_BUm = { | ||
| 1109 | .corner = {65, 67, 64, 66, 37, 39, 36, 38}, | ||
| 1110 | .edge = {17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6} }; | ||
| 1111 | _static cube_fast_t _trans_cube_BUm_inverse = { | ||
| 1112 | .corner = {34, 32, 35, 33, 70, 68, 71, 69}, | ||
| 1113 | .edge = {19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5} }; | ||
| 1114 | _static cube_fast_t _trans_cube_BRm = { | ||
| 1115 | .corner = {39, 37, 36, 38, 65, 67, 66, 64}, | ||
| 1116 | .edge = {10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23} }; | ||
| 1117 | _static cube_fast_t _trans_cube_BRm_inverse = { | ||
| 1118 | .corner = {39, 36, 38, 37, 66, 65, 67, 64}, | ||
| 1119 | .edge = {22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1} }; | ||
| 1120 | _static cube_fast_t _trans_cube_BDm = { | ||
| 1121 | .corner = {67, 65, 66, 64, 39, 37, 38, 36}, | ||
| 1122 | .edge = {18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4} }; | ||
| 1123 | _static cube_fast_t _trans_cube_BDm_inverse = { | ||
| 1124 | .corner = {35, 33, 34, 32, 71, 69, 70, 68}, | ||
| 1125 | .edge = {18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4} }; | ||
| 1126 | _static cube_fast_t _trans_cube_BLm = { | ||
| 1127 | .corner = {37, 39, 38, 36, 67, 65, 64, 66}, | ||
| 1128 | .edge = {11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21} }; | ||
| 1129 | _static cube_fast_t _trans_cube_BLm_inverse = { | ||
| 1130 | .corner = {38, 37, 39, 36, 67, 64, 66, 65}, | ||
| 1131 | .edge = {23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0} }; | ||
| 1132 | |||
| 1133 | _static cube_fast_t cubetofast(cube_t); | 714 | _static cube_fast_t cubetofast(cube_t); |
| 1134 | _static cube_t fasttocube(cube_fast_t); | 715 | _static cube_t fasttocube(cube_fast_t); |
| 1135 | _static_inline bool equal_fast(cube_fast_t, cube_fast_t); | 716 | _static_inline bool equal_fast(cube_fast_t, cube_fast_t); |
| @@ -1139,6 +720,44 @@ _static_inline cube_fast_t inverse_fast(cube_fast_t); | |||
| 1139 | _static_inline cube_fast_t compose_fast(cube_fast_t, cube_fast_t); | 720 | _static_inline cube_fast_t compose_fast(cube_fast_t, cube_fast_t); |
| 1140 | _static_inline int64_t coord_fast_eo(cube_fast_t); | 721 | _static_inline int64_t coord_fast_eo(cube_fast_t); |
| 1141 | 722 | ||
| 723 | _static inline cube_fast_t | ||
| 724 | fastcube( | ||
| 725 | uint8_t c_ufr, | ||
| 726 | uint8_t c_ubl, | ||
| 727 | uint8_t c_dfl, | ||
| 728 | uint8_t c_dbr, | ||
| 729 | uint8_t c_ufl, | ||
| 730 | uint8_t c_ubr, | ||
| 731 | uint8_t c_dfr, | ||
| 732 | uint8_t c_dbl, | ||
| 733 | |||
| 734 | uint8_t e_uf, | ||
| 735 | uint8_t e_ub, | ||
| 736 | uint8_t e_db, | ||
| 737 | uint8_t e_df, | ||
| 738 | uint8_t e_ur, | ||
| 739 | uint8_t e_ul, | ||
| 740 | uint8_t e_dl, | ||
| 741 | uint8_t e_dr, | ||
| 742 | uint8_t e_fr, | ||
| 743 | uint8_t e_fl, | ||
| 744 | uint8_t e_bl, | ||
| 745 | uint8_t e_br | ||
| 746 | ) | ||
| 747 | { | ||
| 748 | cube_fast_t cube = { | ||
| 749 | .corner = { | ||
| 750 | c_ufr, c_ubl, c_dfl, c_dbr, c_ufl, c_ubr, c_dfr, c_dbl | ||
| 751 | }, | ||
| 752 | .edge = { | ||
| 753 | e_uf, e_ub, e_db, e_df, e_ur, e_ul, | ||
| 754 | e_dl, e_dr, e_fr, e_fl, e_bl, e_br | ||
| 755 | } | ||
| 756 | }; | ||
| 757 | |||
| 758 | return cube; | ||
| 759 | } | ||
| 760 | |||
| 1142 | _static cube_fast_t | 761 | _static cube_fast_t |
| 1143 | cubetofast(cube_t cube) | 762 | cubetofast(cube_t cube) |
| 1144 | { | 763 | { |
| @@ -1302,9 +921,9 @@ _static uint8_t readeo(char *); | |||
| 1302 | _static uint8_t readep(char *); | 921 | _static uint8_t readep(char *); |
| 1303 | _static cube_t readcube_H48(char *); | 922 | _static cube_t readcube_H48(char *); |
| 1304 | _static int writepiece_SRC(uint8_t, char *); | 923 | _static int writepiece_SRC(uint8_t, char *); |
| 1305 | _static void writecube_AVX(cube_t, char *); | ||
| 1306 | _static void writecube_H48(cube_t, char *); | 924 | _static void writecube_H48(cube_t, char *); |
| 1307 | _static void writecube_SRC(cube_t, char *); | 925 | _static void writecube_SRC(cube_t, char *); |
| 926 | _static void writecube_LST(cube_t, char *); | ||
| 1308 | _static uint8_t readmove(char); | 927 | _static uint8_t readmove(char); |
| 1309 | _static uint8_t readmodifier(char); | 928 | _static uint8_t readmodifier(char); |
| 1310 | _static uint8_t readtrans(char *); | 929 | _static uint8_t readtrans(char *); |
| @@ -1541,8 +1160,8 @@ writecube(char *format, cube_t cube, char *buf) | |||
| 1541 | writecube_H48(cube, buf); | 1160 | writecube_H48(cube, buf); |
| 1542 | } else if (!strcmp(format, "SRC")) { | 1161 | } else if (!strcmp(format, "SRC")) { |
| 1543 | writecube_SRC(cube, buf); | 1162 | writecube_SRC(cube, buf); |
| 1544 | } else if (!strcmp(format, "AVX")) { | 1163 | } else if (!strcmp(format, "LST")) { |
| 1545 | writecube_AVX(cube, buf); | 1164 | writecube_LST(cube, buf); |
| 1546 | } else { | 1165 | } else { |
| 1547 | errormsg = "ERROR: cannot write cube in the given format"; | 1166 | errormsg = "ERROR: cannot write cube in the given format"; |
| 1548 | goto writecube_error; | 1167 | goto writecube_error; |
| @@ -1684,31 +1303,6 @@ writepiece_SRC(uint8_t piece, char *buf) | |||
| 1684 | } | 1303 | } |
| 1685 | 1304 | ||
| 1686 | _static void | 1305 | _static void |
| 1687 | writecube_AVX(cube_t cube, char *buf) | ||
| 1688 | { | ||
| 1689 | int i, ptr; | ||
| 1690 | uint8_t piece; | ||
| 1691 | |||
| 1692 | memcpy(buf, "_mm256_set_epi8(\n\t0, 0, 0, 0, ", 30); | ||
| 1693 | ptr = 30; | ||
| 1694 | |||
| 1695 | for (i = 11; i >= 0; i--) { | ||
| 1696 | piece = cube.edge[i]; | ||
| 1697 | ptr += writepiece_SRC(piece, buf + ptr); | ||
| 1698 | } | ||
| 1699 | |||
| 1700 | memcpy(buf+ptr-2, ",\n\t0, 0, 0, 0, 0, 0, 0, 0, ", 27); | ||
| 1701 | ptr += 25; | ||
| 1702 | |||
| 1703 | for (i = 7; i >= 0; i--) { | ||
| 1704 | piece = cube.corner[i]; | ||
| 1705 | ptr += writepiece_SRC(piece, buf + ptr); | ||
| 1706 | } | ||
| 1707 | |||
| 1708 | memcpy(buf+ptr-2, "\n)\0", 3); | ||
| 1709 | } | ||
| 1710 | |||
| 1711 | _static void | ||
| 1712 | writecube_H48(cube_t cube, char *buf) | 1306 | writecube_H48(cube_t cube, char *buf) |
| 1713 | { | 1307 | { |
| 1714 | uint8_t piece, perm, orient; | 1308 | uint8_t piece, perm, orient; |
| @@ -1762,6 +1356,27 @@ writecube_SRC(cube_t cube, char *buf) | |||
| 1762 | memcpy(buf+ptr-2, "}\n}\0", 4); | 1356 | memcpy(buf+ptr-2, "}\n}\0", 4); |
| 1763 | } | 1357 | } |
| 1764 | 1358 | ||
| 1359 | _static void | ||
| 1360 | writecube_LST(cube_t cube, char *buf) | ||
| 1361 | { | ||
| 1362 | int i, ptr; | ||
| 1363 | uint8_t piece; | ||
| 1364 | |||
| 1365 | ptr = 0; | ||
| 1366 | |||
| 1367 | for (i = 0; i < 8; i++) { | ||
| 1368 | piece = cube.corner[i]; | ||
| 1369 | ptr += writepiece_SRC(piece, buf + ptr); | ||
| 1370 | } | ||
| 1371 | |||
| 1372 | for (i = 0; i < 12; i++) { | ||
| 1373 | piece = cube.edge[i]; | ||
| 1374 | ptr += writepiece_SRC(piece, buf + ptr); | ||
| 1375 | } | ||
| 1376 | |||
| 1377 | *(buf+ptr-2) = 0; | ||
| 1378 | } | ||
| 1379 | |||
| 1765 | _static uint8_t | 1380 | _static uint8_t |
| 1766 | readmove(char c) | 1381 | readmove(char c) |
| 1767 | { | 1382 | { |
| @@ -83,13 +83,10 @@ Multiple representations of the cube as text are supported: | |||
| 83 | cube. A single whitespace character is added between pieces when writing. | 83 | cube. A single whitespace character is added between pieces when writing. |
| 84 | 84 | ||
| 85 | - SRC: format used to generate code for internal use. | 85 | - SRC: format used to generate code for internal use. |
| 86 | In cube.c, a type called cube_array_t is defined and used for basic, | 86 | If OUT is the output in SRC format, one can use `cube_t cube = OUT` to |
| 87 | non-performance-critical methods. If OUT is the output in SRC format, | 87 | declare a new cube object. |
| 88 | the following line can be used to declare a new cube object: | ||
| 89 | 88 | ||
| 90 | cube_array_t cube = OUT | 89 | - LST: similar to SRC, but only a list of comma-separated numbers is printed. |
| 91 | |||
| 92 | - AVX: analogue to SRC, but for the AVX2 internal representation of the cube. | ||
| 93 | 90 | ||
| 94 | Not all formats are supported for both reading and writing. More formats | 91 | Not all formats are supported for both reading and writing. More formats |
| 95 | may be supported in the future. | 92 | may be supported in the future. |
| @@ -101,7 +98,7 @@ may be supported in the future. | |||
| 101 | cube_t readcube(char *format, char *buf); | 98 | cube_t readcube(char *format, char *buf); |
| 102 | 99 | ||
| 103 | /* Write the given cube to buf in the specified format. | 100 | /* Write the given cube to buf in the specified format. |
| 104 | * Supported formats: "H48", "SRC", "AVX". | 101 | * Supported formats: "H48", "SRC", "LST". |
| 105 | */ | 102 | */ |
| 106 | void writecube(char *format, cube_t cube, char *buf); | 103 | void writecube(char *format, cube_t cube, char *buf); |
| 107 | 104 | ||
diff --git a/old/moves_trans/v2/genmovecode.sh b/old/moves_trans/v2/genmovecode.sh new file mode 100755 index 0000000..9d5fa7a --- /dev/null +++ b/old/moves_trans/v2/genmovecode.sh | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | type="${1:-src}" | ||
| 4 | |||
| 5 | gcc -DDEBUG h48_to_"$type".c ../cube.c -o h48_to_"$type" | ||
| 6 | |||
| 7 | lineavx() { printf '#define _move_cube_%s ' "$1"; } | ||
| 8 | linesrc() { printf '_static cube_fast_t _move_cube_%s = ' "$1"; } | ||
| 9 | sedavx() { sed '1,2s/$/ \\/ ; 3s/$/)/ ; 3q'; } | ||
| 10 | sedsrc() { sed '3s/$/ };/ ; 3q'; } | ||
| 11 | |||
| 12 | gen() { | ||
| 13 | for f in move_??_*.txt; do | ||
| 14 | move="$(echo $f | sed 's/.*_// ; s/\.txt//')" | ||
| 15 | line$type "$move" | ||
| 16 | ./h48_to_"$type" <"$f" | sed$type | ||
| 17 | done | ||
| 18 | } | ||
| 19 | |||
| 20 | gen | ||
| 21 | rm -f h48_to_"$type" invert | ||
diff --git a/old/moves_trans/v2/gentranscode.sh b/old/moves_trans/v2/gentranscode.sh new file mode 100755 index 0000000..b9d41b6 --- /dev/null +++ b/old/moves_trans/v2/gentranscode.sh | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | type="${1:-src}" | ||
| 4 | |||
| 5 | gcc -DDEBUG h48_to_"$type".c ../cube.c -o h48_to_"$type" | ||
| 6 | gcc -DDEBUG invert.c ../cube.c -o invert | ||
| 7 | |||
| 8 | lineavx() { printf '#define _trans_cube_%s ' "$1"; } | ||
| 9 | linesrc() { printf '_static cube_fast_t _trans_cube_%s = ' "$1"; } | ||
| 10 | sedavx() { sed '1,2s/$/ \\/ ; 3s/$/)/ ; 3q'; } | ||
| 11 | sedsrc() { sed '3s/$/ };/ ; 3q'; } | ||
| 12 | |||
| 13 | gen() { | ||
| 14 | for f in transform_??_???.txt; do | ||
| 15 | trans="$(echo $f | sed 's/.*_// ; s/\.txt//')" | ||
| 16 | line$type "$trans" | ||
| 17 | ./h48_to_"$type" <"$f" | sed$type | ||
| 18 | line$type "${trans}_inverse" | ||
| 19 | ./invert <"$f" | ./h48_to_"$type" | sed$type | ||
| 20 | done | ||
| 21 | } | ||
| 22 | |||
| 23 | gen | ||
| 24 | rm -f h48_to_"$type" invert | ||
diff --git a/test/022_io_AVX_write/01_solved.out b/test/022_io_AVX_write/01_solved.out deleted file mode 100644 index 9bc7c29..0000000 --- a/test/022_io_AVX_write/01_solved.out +++ /dev/null | |||
| @@ -1,4 +0,0 @@ | |||
| 1 | _mm256_set_epi8( | ||
| 2 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, | ||
| 3 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 5, 4, 3, 2, 1, 0 | ||
| 4 | ) | ||
diff --git a/test/022_io_AVX_write/02_scrambled.out b/test/022_io_AVX_write/02_scrambled.out deleted file mode 100644 index 7d406a2..0000000 --- a/test/022_io_AVX_write/02_scrambled.out +++ /dev/null | |||
| @@ -1,4 +0,0 @@ | |||
| 1 | _mm256_set_epi8( | ||
| 2 | 0, 0, 0, 0, 7, 6, 26, 21, 27, 0, 3, 4, 8, 17, 2, 9, | ||
| 3 | 0, 0, 0, 0, 0, 0, 0, 0, 1, 71, 2, 67, 68, 37, 32, 38 | ||
| 4 | ) | ||
diff --git a/test/022_io_AVX_write/01_solved.in b/test/023_io_LST_write/01_solved.in index dff224d..dff224d 100644 --- a/test/022_io_AVX_write/01_solved.in +++ b/test/023_io_LST_write/01_solved.in | |||
diff --git a/test/023_io_LST_write/01_solved.out b/test/023_io_LST_write/01_solved.out new file mode 100644 index 0000000..c5b394b --- /dev/null +++ b/test/023_io_LST_write/01_solved.out | |||
| @@ -0,0 +1 @@ | |||
| 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 | |||
diff --git a/test/022_io_AVX_write/02_scrambled.in b/test/023_io_LST_write/02_scrambled.in index 6a05bbc..6a05bbc 100644 --- a/test/022_io_AVX_write/02_scrambled.in +++ b/test/023_io_LST_write/02_scrambled.in | |||
diff --git a/test/023_io_LST_write/02_scrambled.out b/test/023_io_LST_write/02_scrambled.out new file mode 100644 index 0000000..9fcb603 --- /dev/null +++ b/test/023_io_LST_write/02_scrambled.out | |||
| @@ -0,0 +1 @@ | |||
| 38, 32, 37, 68, 67, 2, 71, 1, 9, 2, 17, 8, 4, 3, 0, 27, 21, 26, 6, 7 | |||
diff --git a/test/022_io_AVX_write/io_AVX_tests.c b/test/023_io_LST_write/io_LST_tests.c index 7dc944e..1532f91 100644 --- a/test/022_io_AVX_write/io_AVX_tests.c +++ b/test/023_io_LST_write/io_LST_tests.c | |||
| @@ -21,7 +21,7 @@ int main() { | |||
| 21 | } else if (!issolvable(cube)) { | 21 | } else if (!issolvable(cube)) { |
| 22 | printf("Cube is not solvable\n"); | 22 | printf("Cube is not solvable\n"); |
| 23 | } else { | 23 | } else { |
| 24 | writecube("AVX", cube, str); | 24 | writecube("LST", cube, str); |
| 25 | printf("%s\n", str); | 25 | printf("%s\n", str); |
| 26 | } | 26 | } |
| 27 | 27 | ||
diff --git a/utils/genmovecode.sh b/utils/genmovecode.sh index 9d5fa7a..d6440e5 100755 --- a/utils/genmovecode.sh +++ b/utils/genmovecode.sh | |||
| @@ -1,21 +1,15 @@ | |||
| 1 | #!/bin/sh | 1 | #!/bin/sh |
| 2 | 2 | ||
| 3 | type="${1:-src}" | 3 | gcc -DDEBUG h48_to_lst.c ../cube.c -o h48_to_lst |
| 4 | |||
| 5 | gcc -DDEBUG h48_to_"$type".c ../cube.c -o h48_to_"$type" | ||
| 6 | |||
| 7 | lineavx() { printf '#define _move_cube_%s ' "$1"; } | ||
| 8 | linesrc() { printf '_static cube_fast_t _move_cube_%s = ' "$1"; } | ||
| 9 | sedavx() { sed '1,2s/$/ \\/ ; 3s/$/)/ ; 3q'; } | ||
| 10 | sedsrc() { sed '3s/$/ };/ ; 3q'; } | ||
| 11 | 4 | ||
| 12 | gen() { | 5 | gen() { |
| 13 | for f in move_??_*.txt; do | 6 | for f in move_??_*.txt; do |
| 14 | move="$(echo $f | sed 's/.*_// ; s/\.txt//')" | 7 | move="$(echo $f | sed 's/.*_// ; s/\.txt//')" |
| 15 | line$type "$move" | 8 | printf '#define _move_cube_%s fastcube( \\\n ' "$move" |
| 16 | ./h48_to_"$type" <"$f" | sed$type | 9 | ./h48_to_lst <"$f" |
| 10 | printf ')\n' | ||
| 17 | done | 11 | done |
| 18 | } | 12 | } |
| 19 | 13 | ||
| 20 | gen | 14 | gen |
| 21 | rm -f h48_to_"$type" invert | 15 | rm -f h48_to_lst invert |
diff --git a/utils/gentranscode.sh b/utils/gentranscode.sh index b9d41b6..f9aeb7b 100755 --- a/utils/gentranscode.sh +++ b/utils/gentranscode.sh | |||
| @@ -1,8 +1,6 @@ | |||
| 1 | #!/bin/sh | 1 | #!/bin/sh |
| 2 | 2 | ||
| 3 | type="${1:-src}" | 3 | gcc -DDEBUG h48_to_lst.c ../cube.c -o h48_to_lst |
| 4 | |||
| 5 | gcc -DDEBUG h48_to_"$type".c ../cube.c -o h48_to_"$type" | ||
| 6 | gcc -DDEBUG invert.c ../cube.c -o invert | 4 | gcc -DDEBUG invert.c ../cube.c -o invert |
| 7 | 5 | ||
| 8 | lineavx() { printf '#define _trans_cube_%s ' "$1"; } | 6 | lineavx() { printf '#define _trans_cube_%s ' "$1"; } |
| @@ -13,12 +11,15 @@ sedsrc() { sed '3s/$/ };/ ; 3q'; } | |||
| 13 | gen() { | 11 | gen() { |
| 14 | for f in transform_??_???.txt; do | 12 | for f in transform_??_???.txt; do |
| 15 | trans="$(echo $f | sed 's/.*_// ; s/\.txt//')" | 13 | trans="$(echo $f | sed 's/.*_// ; s/\.txt//')" |
| 16 | line$type "$trans" | 14 | printf '#define _trans_cube_%s fastcube( \\\n ' "$trans" |
| 17 | ./h48_to_"$type" <"$f" | sed$type | 15 | ./h48_to_lst <"$f" |
| 18 | line$type "${trans}_inverse" | 16 | printf ')\n' |
| 19 | ./invert <"$f" | ./h48_to_"$type" | sed$type | 17 | printf '#define _trans_cube_%s_inverse fastcube( \\\n ' \ |
| 18 | "$trans" | ||
| 19 | ./invert <"$f" | ./h48_to_lst | ||
| 20 | printf ')\n' | ||
| 20 | done | 21 | done |
| 21 | } | 22 | } |
| 22 | 23 | ||
| 23 | gen | 24 | gen |
| 24 | rm -f h48_to_"$type" invert | 25 | rm -f h48_to_lst invert |
diff --git a/utils/h48_to_avx.c b/utils/h48_to_avx.c deleted file mode 100644 index ba82366..0000000 --- a/utils/h48_to_avx.c +++ /dev/null | |||
| @@ -1,19 +0,0 @@ | |||
| 1 | #include <stdio.h> | ||
| 2 | #include <inttypes.h> | ||
| 3 | #include <stdbool.h> | ||
| 4 | |||
| 5 | #include "../cube.h" | ||
| 6 | |||
| 7 | #define STRLENMAX 1000 | ||
| 8 | |||
| 9 | int main() { | ||
| 10 | char str[STRLENMAX]; | ||
| 11 | cube_t cube; | ||
| 12 | |||
| 13 | fgets(str, STRLENMAX, stdin); | ||
| 14 | cube = readcube("H48", str); | ||
| 15 | writecube("AVX", cube, str); | ||
| 16 | fputs(str, stdout); | ||
| 17 | |||
| 18 | return 0; | ||
| 19 | } | ||
diff --git a/utils/h48_to_src.c b/utils/h48_to_lst.c index 6fdea5c..debb7f4 100644 --- a/utils/h48_to_src.c +++ b/utils/h48_to_lst.c | |||
| @@ -12,7 +12,7 @@ int main() { | |||
| 12 | 12 | ||
| 13 | fgets(str, STRLENMAX, stdin); | 13 | fgets(str, STRLENMAX, stdin); |
| 14 | cube = readcube("H48", str); | 14 | cube = readcube("H48", str); |
| 15 | writecube("SRC", cube, str); | 15 | writecube("LST", cube, str); |
| 16 | fputs(str, stdout); | 16 | fputs(str, stdout); |
| 17 | 17 | ||
| 18 | return 0; | 18 | return 0; |
