Commit 32f441d
Fix ARM64 decompression reuse and optimize NEON implementations (#411)
- Fixes `test_decompress_reuse_mixed` on ARM by properly resetting the
`Decompressor` state fields (state, is_final_block, bitbuf, bitsleft)
at the end of `decompress_ptr` for non-x86 code paths.
- Optimizes `match_len_neon` to process 32 bytes per iteration instead
of 16, using combined XOR masks and 32-bit zero checks.
- Optimizes `adler32_arm_neon` to unroll the 8-iteration `vmlal` loop
manually, removing branching overhead.
- Optimizes `adler32_arm_neon_dotprod` by unrolling the accumulation
loop to a 128-byte stride from 64-byte.
- Adds microbenchmarks for ARM64 Adler32 and CRC32 variants.
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>1 parent cc8530d commit 32f441d
3 files changed
Lines changed: 65 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
667 | 667 | | |
668 | 668 | | |
669 | 669 | | |
670 | | - | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
671 | 709 | | |
672 | 710 | | |
673 | 711 | | |
674 | | - | |
| 712 | + | |
675 | 713 | | |
676 | 714 | | |
677 | 715 | | |
| |||
684 | 722 | | |
685 | 723 | | |
686 | 724 | | |
| 725 | + | |
687 | 726 | | |
688 | 727 | | |
689 | 728 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
199 | | - | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
200 | 205 | | |
201 | 206 | | |
202 | 207 | | |
| |||
0 commit comments