MCPcopy Create free account
hub / github.com/dds-bridge/dds / MergeSort

Method MergeSort

library/src/moves/moves.cpp:679–921  ·  view source on GitHub ↗

* @brief Sort move list by weight using small fixed-size sorting networks. * * Optimized for short lists typical in move generation. Falls back to * insertion sort for other sizes. */

Source from the content-addressed store, hash-verified

677 * insertion sort for other sizes.
678 */
679auto Moves::MergeSort() -> void {
680 const int len = numMoves;
681 MoveType tmp;
682
683 switch (len) {
684 case 12:
685 CMP_SWAP(0, 1);
686 CMP_SWAP(2, 3);
687 CMP_SWAP(4, 5);
688 CMP_SWAP(6, 7);
689 CMP_SWAP(8, 9);
690 CMP_SWAP(10, 11);
691
692 CMP_SWAP(1, 3);
693 CMP_SWAP(5, 7);
694 CMP_SWAP(9, 11);
695
696 CMP_SWAP(0, 2);
697 CMP_SWAP(4, 6);
698 CMP_SWAP(8, 10);
699
700 CMP_SWAP(1, 2);
701 CMP_SWAP(5, 6);
702 CMP_SWAP(9, 10);
703
704 CMP_SWAP(1, 5);
705 CMP_SWAP(6, 10);
706 CMP_SWAP(5, 9);
707 CMP_SWAP(2, 6);
708 CMP_SWAP(1, 5);
709 CMP_SWAP(6, 10);
710 CMP_SWAP(0, 4);
711 CMP_SWAP(7, 11);
712 CMP_SWAP(3, 7);
713 CMP_SWAP(4, 8);
714 CMP_SWAP(0, 4);
715 CMP_SWAP(7, 11);
716 CMP_SWAP(1, 4);
717 CMP_SWAP(7, 10);
718 CMP_SWAP(3, 8);
719 CMP_SWAP(2, 3);
720 CMP_SWAP(8, 9);
721 CMP_SWAP(2, 4);
722 CMP_SWAP(7, 9);
723 CMP_SWAP(3, 5);
724 CMP_SWAP(6, 8);
725 CMP_SWAP(3, 4);
726 CMP_SWAP(5, 6);
727 CMP_SWAP(7, 8);
728 break;
729 case 11:
730 CMP_SWAP(0, 1);
731 CMP_SWAP(2, 3);
732 CMP_SWAP(4, 5);
733 CMP_SWAP(6, 7);
734 CMP_SWAP(8, 9);
735
736 CMP_SWAP(1, 3);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected