diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2024-05-25 11:50:16 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2024-05-25 11:50:16 +0200 |
| commit | 43020af69d6932c7af0bc53b59c492775835a14e (patch) | |
| tree | bf6d07a6ff2b5f37734fb1d1311a7468ad5acce9 /src/cube_routines.h | |
| parent | 0ebba869512abc8e37e461e7587f686fe7c91c6c (diff) | |
| download | nissy-core-43020af69d6932c7af0bc53b59c492775835a14e.tar.gz nissy-core-43020af69d6932c7af0bc53b59c492775835a14e.zip | |
Small performance improvement in h48 coordinate / transform
Diffstat (limited to 'src/cube_routines.h')
| -rw-r--r-- | src/cube_routines.h | 117 |
1 files changed, 6 insertions, 111 deletions
diff --git a/src/cube_routines.h b/src/cube_routines.h index b1f8eac..1585e67 100644 --- a/src/cube_routines.h +++ b/src/cube_routines.h | |||
| @@ -1,11 +1,5 @@ | |||
| 1 | #define _move(M, c) compose_fast(c, _move_cube_ ## M) | 1 | #define _move(M, c) compose_fast(c, _move_cube_ ## M) |
| 2 | #define _premove(M, c) compose_fast(_move_cube_ ## M, c) | 2 | #define _premove(M, c) compose_fast(_move_cube_ ## M, c) |
| 3 | #define _trans_rotation(T, c) \ | ||
| 4 | compose_fast(compose_fast(_trans_cube_ ## T, c), \ | ||
| 5 | _trans_cube_ ## T ## _inverse) | ||
| 6 | #define _trans_mirrored(T, c) \ | ||
| 7 | invertco_fast(compose_fast(compose_fast(_trans_cube_ ## T, c), \ | ||
| 8 | _trans_cube_ ## T ## _inverse)) | ||
| 9 | 3 | ||
| 10 | _static int permsign(uint8_t *, int); | 4 | _static int permsign(uint8_t *, int); |
| 11 | _static uint8_t readco(const char *); | 5 | _static uint8_t readco(const char *); |
| @@ -24,6 +18,8 @@ _static uint8_t readtrans(const char *); | |||
| 24 | _static int writemoves(uint8_t *, int, char *); | 18 | _static int writemoves(uint8_t *, int, char *); |
| 25 | _static void writetrans(uint8_t, char *); | 19 | _static void writetrans(uint8_t, char *); |
| 26 | _static cube_fast_t move(cube_fast_t, uint8_t); | 20 | _static cube_fast_t move(cube_fast_t, uint8_t); |
| 21 | _static cube_fast_t transform_edges(cube_fast_t, uint8_t); | ||
| 22 | _static cube_fast_t transform_corners(cube_fast_t, uint8_t); | ||
| 27 | _static cube_fast_t transform(cube_fast_t, uint8_t); | 23 | _static cube_fast_t transform(cube_fast_t, uint8_t); |
| 28 | 24 | ||
| 29 | cube_t | 25 | cube_t |
| @@ -623,108 +619,7 @@ move(cube_fast_t c, uint8_t m) | |||
| 623 | } | 619 | } |
| 624 | } | 620 | } |
| 625 | 621 | ||
| 626 | _static cube_fast_t | 622 | /* |
| 627 | transform(cube_fast_t c, uint8_t t) | 623 | TODO transform is now relegated to a separated file because it is too long. |
| 628 | { | 624 | It would be nice to make it shorter without loosing performance. |
| 629 | switch (t) { | 625 | */ |
| 630 | case _trans_UFr: | ||
| 631 | return _trans_rotation(UFr, c); | ||
| 632 | case _trans_ULr: | ||
| 633 | return _trans_rotation(ULr, c); | ||
| 634 | case _trans_UBr: | ||
| 635 | return _trans_rotation(UBr, c); | ||
| 636 | case _trans_URr: | ||
| 637 | return _trans_rotation(URr, c); | ||
| 638 | case _trans_DFr: | ||
| 639 | return _trans_rotation(DFr, c); | ||
| 640 | case _trans_DLr: | ||
| 641 | return _trans_rotation(DLr, c); | ||
| 642 | case _trans_DBr: | ||
| 643 | return _trans_rotation(DBr, c); | ||
| 644 | case _trans_DRr: | ||
| 645 | return _trans_rotation(DRr, c); | ||
| 646 | case _trans_RUr: | ||
| 647 | return _trans_rotation(RUr, c); | ||
| 648 | case _trans_RFr: | ||
| 649 | return _trans_rotation(RFr, c); | ||
| 650 | case _trans_RDr: | ||
| 651 | return _trans_rotation(RDr, c); | ||
| 652 | case _trans_RBr: | ||
| 653 | return _trans_rotation(RBr, c); | ||
| 654 | case _trans_LUr: | ||
| 655 | return _trans_rotation(LUr, c); | ||
| 656 | case _trans_LFr: | ||
| 657 | return _trans_rotation(LFr, c); | ||
| 658 | case _trans_LDr: | ||
| 659 | return _trans_rotation(LDr, c); | ||
| 660 | case _trans_LBr: | ||
| 661 | return _trans_rotation(LBr, c); | ||
| 662 | case _trans_FUr: | ||
| 663 | return _trans_rotation(FUr, c); | ||
| 664 | case _trans_FRr: | ||
| 665 | return _trans_rotation(FRr, c); | ||
| 666 | case _trans_FDr: | ||
| 667 | return _trans_rotation(FDr, c); | ||
| 668 | case _trans_FLr: | ||
| 669 | return _trans_rotation(FLr, c); | ||
| 670 | case _trans_BUr: | ||
| 671 | return _trans_rotation(BUr, c); | ||
| 672 | case _trans_BRr: | ||
| 673 | return _trans_rotation(BRr, c); | ||
| 674 | case _trans_BDr: | ||
| 675 | return _trans_rotation(BDr, c); | ||
| 676 | case _trans_BLr: | ||
| 677 | return _trans_rotation(BLr, c); | ||
| 678 | case _trans_UFm: | ||
| 679 | return _trans_mirrored(UFm, c); | ||
| 680 | case _trans_ULm: | ||
| 681 | return _trans_mirrored(ULm, c); | ||
| 682 | case _trans_UBm: | ||
| 683 | return _trans_mirrored(UBm, c); | ||
| 684 | case _trans_URm: | ||
| 685 | return _trans_mirrored(URm, c); | ||
| 686 | case _trans_DFm: | ||
| 687 | return _trans_mirrored(DFm, c); | ||
| 688 | case _trans_DLm: | ||
| 689 | return _trans_mirrored(DLm, c); | ||
| 690 | case _trans_DBm: | ||
| 691 | return _trans_mirrored(DBm, c); | ||
| 692 | case _trans_DRm: | ||
| 693 | return _trans_mirrored(DRm, c); | ||
| 694 | case _trans_RUm: | ||
| 695 | return _trans_mirrored(RUm, c); | ||
| 696 | case _trans_RFm: | ||
| 697 | return _trans_mirrored(RFm, c); | ||
| 698 | case _trans_RDm: | ||
| 699 | return _trans_mirrored(RDm, c); | ||
| 700 | case _trans_RBm: | ||
| 701 | return _trans_mirrored(RBm, c); | ||
| 702 | case _trans_LUm: | ||
| 703 | return _trans_mirrored(LUm, c); | ||
| 704 | case _trans_LFm: | ||
| 705 | return _trans_mirrored(LFm, c); | ||
| 706 | case _trans_LDm: | ||
| 707 | return _trans_mirrored(LDm, c); | ||
| 708 | case _trans_LBm: | ||
| 709 | return _trans_mirrored(LBm, c); | ||
| 710 | case _trans_FUm: | ||
| 711 | return _trans_mirrored(FUm, c); | ||
| 712 | case _trans_FRm: | ||
| 713 | return _trans_mirrored(FRm, c); | ||
| 714 | case _trans_FDm: | ||
| 715 | return _trans_mirrored(FDm, c); | ||
| 716 | case _trans_FLm: | ||
| 717 | return _trans_mirrored(FLm, c); | ||
| 718 | case _trans_BUm: | ||
| 719 | return _trans_mirrored(BUm, c); | ||
| 720 | case _trans_BRm: | ||
| 721 | return _trans_mirrored(BRm, c); | ||
| 722 | case _trans_BDm: | ||
| 723 | return _trans_mirrored(BDm, c); | ||
| 724 | case _trans_BLm: | ||
| 725 | return _trans_mirrored(BLm, c); | ||
| 726 | default: | ||
| 727 | DBG_LOG("transform error, unknown transformation\n"); | ||
| 728 | return zero_fast; | ||
| 729 | } | ||
| 730 | } | ||
