Commit df27dfa
committed
Optimize integer pow by removing exit branch
The branch at the end of the `pow` implementations is redundant
with multiplication code already present in the loop. By rotating
the exit check, this branch can be largely removed, improving code size
and instruction cache coherence.1 parent bcf1f6d commit df27dfa
2 files changed
+52
-73
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1495 | 1495 | | |
1496 | 1496 | | |
1497 | 1497 | | |
1498 | | - | |
| 1498 | + | |
1499 | 1499 | | |
1500 | 1500 | | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
1501 | 1505 | | |
1502 | 1506 | | |
1503 | 1507 | | |
1504 | 1508 | | |
1505 | | - | |
1506 | | - | |
1507 | | - | |
1508 | | - | |
1509 | | - | |
1510 | 1509 | | |
1511 | 1510 | | |
1512 | 1511 | | |
| |||
1546 | 1545 | | |
1547 | 1546 | | |
1548 | 1547 | | |
1549 | | - | |
| 1548 | + | |
1550 | 1549 | | |
1551 | 1550 | | |
| 1551 | + | |
| 1552 | + | |
| 1553 | + | |
| 1554 | + | |
1552 | 1555 | | |
1553 | 1556 | | |
1554 | 1557 | | |
1555 | 1558 | | |
1556 | | - | |
1557 | | - | |
1558 | | - | |
1559 | | - | |
1560 | | - | |
1561 | 1559 | | |
1562 | 1560 | | |
1563 | 1561 | | |
| |||
2181 | 2179 | | |
2182 | 2180 | | |
2183 | 2181 | | |
2184 | | - | |
| 2182 | + | |
2185 | 2183 | | |
2186 | 2184 | | |
| 2185 | + | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
2187 | 2189 | | |
2188 | 2190 | | |
2189 | 2191 | | |
2190 | 2192 | | |
2191 | | - | |
2192 | | - | |
2193 | | - | |
2194 | | - | |
2195 | | - | |
2196 | | - | |
2197 | 2193 | | |
2198 | 2194 | | |
2199 | 2195 | | |
| |||
2687 | 2683 | | |
2688 | 2684 | | |
2689 | 2685 | | |
2690 | | - | |
| 2686 | + | |
2691 | 2687 | | |
2692 | 2688 | | |
| 2689 | + | |
| 2690 | + | |
| 2691 | + | |
| 2692 | + | |
| 2693 | + | |
2693 | 2694 | | |
2694 | 2695 | | |
2695 | 2696 | | |
| |||
2698 | 2699 | | |
2699 | 2700 | | |
2700 | 2701 | | |
2701 | | - | |
2702 | | - | |
2703 | | - | |
2704 | | - | |
2705 | | - | |
2706 | | - | |
2707 | | - | |
2708 | | - | |
2709 | 2702 | | |
2710 | 2703 | | |
2711 | 2704 | | |
| |||
2732 | 2725 | | |
2733 | 2726 | | |
2734 | 2727 | | |
2735 | | - | |
| 2728 | + | |
2736 | 2729 | | |
2737 | 2730 | | |
| 2731 | + | |
| 2732 | + | |
| 2733 | + | |
| 2734 | + | |
2738 | 2735 | | |
2739 | 2736 | | |
2740 | 2737 | | |
2741 | 2738 | | |
2742 | | - | |
2743 | | - | |
2744 | | - | |
2745 | | - | |
2746 | | - | |
2747 | | - | |
2748 | 2739 | | |
2749 | 2740 | | |
2750 | 2741 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1534 | 1534 | | |
1535 | 1535 | | |
1536 | 1536 | | |
1537 | | - | |
| 1537 | + | |
1538 | 1538 | | |
1539 | 1539 | | |
| 1540 | + | |
| 1541 | + | |
| 1542 | + | |
| 1543 | + | |
1540 | 1544 | | |
1541 | 1545 | | |
1542 | 1546 | | |
1543 | 1547 | | |
1544 | | - | |
1545 | | - | |
1546 | | - | |
1547 | | - | |
1548 | | - | |
1549 | | - | |
1550 | | - | |
1551 | 1548 | | |
1552 | 1549 | | |
1553 | 1550 | | |
| |||
1587 | 1584 | | |
1588 | 1585 | | |
1589 | 1586 | | |
1590 | | - | |
| 1587 | + | |
1591 | 1588 | | |
1592 | 1589 | | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
1593 | 1594 | | |
1594 | 1595 | | |
1595 | 1596 | | |
1596 | 1597 | | |
1597 | | - | |
1598 | | - | |
1599 | | - | |
1600 | | - | |
1601 | | - | |
1602 | 1598 | | |
1603 | 1599 | | |
1604 | 1600 | | |
| |||
2059 | 2055 | | |
2060 | 2056 | | |
2061 | 2057 | | |
2062 | | - | |
| 2058 | + | |
2063 | 2059 | | |
2064 | 2060 | | |
| 2061 | + | |
| 2062 | + | |
| 2063 | + | |
| 2064 | + | |
2065 | 2065 | | |
2066 | 2066 | | |
2067 | 2067 | | |
2068 | 2068 | | |
2069 | | - | |
2070 | | - | |
2071 | | - | |
2072 | | - | |
2073 | | - | |
2074 | | - | |
2075 | 2069 | | |
2076 | 2070 | | |
2077 | 2071 | | |
| |||
2516 | 2510 | | |
2517 | 2511 | | |
2518 | 2512 | | |
2519 | | - | |
| 2513 | + | |
2520 | 2514 | | |
2521 | 2515 | | |
| 2516 | + | |
| 2517 | + | |
| 2518 | + | |
| 2519 | + | |
| 2520 | + | |
2522 | 2521 | | |
2523 | 2522 | | |
2524 | 2523 | | |
| |||
2527 | 2526 | | |
2528 | 2527 | | |
2529 | 2528 | | |
2530 | | - | |
2531 | | - | |
2532 | | - | |
2533 | | - | |
2534 | | - | |
2535 | | - | |
2536 | | - | |
2537 | | - | |
2538 | | - | |
2539 | 2529 | | |
2540 | 2530 | | |
2541 | 2531 | | |
| |||
2560 | 2550 | | |
2561 | 2551 | | |
2562 | 2552 | | |
2563 | | - | |
| 2553 | + | |
2564 | 2554 | | |
2565 | 2555 | | |
| 2556 | + | |
| 2557 | + | |
| 2558 | + | |
| 2559 | + | |
2566 | 2560 | | |
2567 | 2561 | | |
2568 | 2562 | | |
2569 | 2563 | | |
2570 | | - | |
2571 | | - | |
2572 | | - | |
2573 | | - | |
2574 | | - | |
2575 | | - | |
2576 | 2564 | | |
2577 | 2565 | | |
2578 | 2566 | | |
| |||
0 commit comments