aboutsummaryrefslogtreecommitdiff
path: root/src/cube.c
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2023-11-02 18:09:13 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2023-11-02 18:09:13 +0100
commitf034efca545cd215e878f525310910b27db24f36 (patch)
treee64cb36f94b339763aa9bad3555ccf8e02dd053d /src/cube.c
parent08efbd62ef956327924aaea1fcfa97fde4dc1678 (diff)
downloadnissy-core-f034efca545cd215e878f525310910b27db24f36.tar.gz
nissy-core-f034efca545cd215e878f525310910b27db24f36.zip
Added writecube AVX
Diffstat (limited to '')
-rw-r--r--src/cube.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/cube.c b/src/cube.c
index bb36447..62ac6e3 100644
--- a/src/cube.c
+++ b/src/cube.c
@@ -276,6 +276,7 @@ static uint8_t readep(char *);
276static uint8_t readmove(char); 276static uint8_t readmove(char);
277static uint8_t readmodifier(char); 277static uint8_t readmodifier(char);
278static cube_t readcube_H48(char *); 278static cube_t readcube_H48(char *);
279static void writecube_AVX(cube_t, char *);
279static void writecube_H48(cube_t, char *); 280static void writecube_H48(cube_t, char *);
280static int writepiece_SRC(uint8_t, char *); 281static int writepiece_SRC(uint8_t, char *);
281static void writecube_SRC(cube_t, char *); 282static void writecube_SRC(cube_t, char *);
@@ -420,6 +421,32 @@ readcube(format_t format, char *buf)
420} 421}
421 422
422static void 423static void
424writecube_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
449static void
423writecube_H48(cube_t cube, char *buf) 450writecube_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;

Generated with cgit - Back to sebastiano.tronto.net