diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-02 18:09:13 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-02 18:09:13 +0100 |
| commit | f034efca545cd215e878f525310910b27db24f36 (patch) | |
| tree | e64cb36f94b339763aa9bad3555ccf8e02dd053d /src/cube.c | |
| parent | 08efbd62ef956327924aaea1fcfa97fde4dc1678 (diff) | |
| download | nissy-core-f034efca545cd215e878f525310910b27db24f36.tar.gz nissy-core-f034efca545cd215e878f525310910b27db24f36.zip | |
Added writecube AVX
Diffstat (limited to 'src/cube.c')
| -rw-r--r-- | src/cube.c | 30 |
1 files changed, 30 insertions, 0 deletions
| @@ -276,6 +276,7 @@ static uint8_t readep(char *); | |||
| 276 | static uint8_t readmove(char); | 276 | static uint8_t readmove(char); |
| 277 | static uint8_t readmodifier(char); | 277 | static uint8_t readmodifier(char); |
| 278 | static cube_t readcube_H48(char *); | 278 | static cube_t readcube_H48(char *); |
| 279 | static void writecube_AVX(cube_t, char *); | ||
| 279 | static void writecube_H48(cube_t, char *); | 280 | static void writecube_H48(cube_t, char *); |
| 280 | static int writepiece_SRC(uint8_t, char *); | 281 | static int writepiece_SRC(uint8_t, char *); |
| 281 | static void writecube_SRC(cube_t, char *); | 282 | static void writecube_SRC(cube_t, char *); |
| @@ -420,6 +421,32 @@ readcube(format_t format, char *buf) | |||
| 420 | } | 421 | } |
| 421 | 422 | ||
| 422 | static void | 423 | static void |
| 424 | writecube_AVX(cube_t cube, char *buf) | ||
| 425 | { | ||
| 426 | int i, ptr; | ||
| 427 | uint8_t piece; | ||
| 428 | |||
| 429 | memcpy(buf, "_mm256_set_epi8(\n\t0, 0, 0, 0, ", 30); | ||
| 430 | ptr = 30; | ||
| 431 | |||
| 432 | for (i = 11; i >= 0; i--) { | ||
| 433 | piece = get_edge(cube, i); | ||
| 434 | ptr += writepiece_SRC(piece, buf + ptr); | ||
| 435 | } | ||
| 436 | |||
| 437 | memcpy(buf+ptr-2, ",\n\t0, 0, 0, 0, 0, 0, 0, 0, ", 27); | ||
| 438 | ptr += 25; | ||
| 439 | |||
| 440 | for (i = 7; i >= 0; i--) { | ||
| 441 | piece = get_corner(cube, i); | ||
| 442 | ptr += writepiece_SRC(piece, buf + ptr); | ||
| 443 | } | ||
| 444 | |||
| 445 | memcpy(buf+ptr-2, "\n)\0", 3); | ||
| 446 | } | ||
| 447 | |||
| 448 | |||
| 449 | static void | ||
| 423 | writecube_H48(cube_t cube, char *buf) | 450 | writecube_H48(cube_t cube, char *buf) |
| 424 | { | 451 | { |
| 425 | uint8_t piece, perm, orient; | 452 | uint8_t piece, perm, orient; |
| @@ -508,6 +535,9 @@ writecube(format_t format, cube_t cube, char *buf) | |||
| 508 | } | 535 | } |
| 509 | 536 | ||
| 510 | switch (format) { | 537 | switch (format) { |
| 538 | case AVX: | ||
| 539 | writecube_AVX(cube, buf); | ||
| 540 | break; | ||
| 511 | case H48: | 541 | case H48: |
| 512 | writecube_H48(cube, buf); | 542 | writecube_H48(cube, buf); |
| 513 | break; | 543 | break; |
