rustbot
added
S-waiting-on-review
labels
Jul 29, 2026
rust-bors
Bot
added
S-waiting-on-bors
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.labels
Aug 3, 2026rust-bors Bot pushed a commit that referenced this pull request
Aug 3, 2026Add NEON support for is_ascii and eq_ignore_ascii_case Results on my aarch64 machine. ## 1. `is_ascii` ### 1.1 Raw Data (ns/iter, case00_libcore only — the path that calls `bytes.is_ascii()`) | Input | Baseline (NEON off) | Optimized (NEON on) | Change | |---|---|---|---| | long | 19.69 | 6.46 | **-67.2%** | | unaligned_both_long | 22.60 | 8.92 | **-60.5%** | | unaligned_head_long | 20.62 | 8.81 | **-57.3%** | | unaligned_tail_long | 21.15 | 8.68 | **-59.0%** | | medium | 3.10 | 2.92 | -5.8% | | short | 3.77 | 3.81 | +1.1% | | unaligned_both_medium | 2.59 | 2.83 | +9.3% | | unaligned_head_medium | 2.95 | 5.00 | +69.5% | | unaligned_tail_medium | 2.37 | 2.96 | +24.9% | ### 1.2 Grouped Comparison (case00_libcore — the path affected by the change) | Group | Baseline sum (ns) | Optimized sum (ns) | Change | |---|---|---|---| | **LONG (~350B, 4 items)** | 84.06 | 32.87 | **-60.9%** | | **MEDIUM/SHORT (~16–32B, 5 items)** | 14.78 | 17.52 | +18.5% | | All 9 items | 98.84 | 50.39 | **-49.0%** | ## 2. `eq_ignore_ascii_case` ### 2.1 Raw Data (ns/iter) | Bench | Baseline (NEON off) | Optimized (NEON on) | Change | |---|---|---|---| | bench_large_str_eq | 6235.89 | 546.61 | **-91.2%** | | bench_medium_str_eq | 780.81 | 68.05 | **-91.3%** | | bench_medium_str_tail_mismatch | 786.84 | 65.76 | **-91.6%** | | bench_str_31_bytes_eq | 35.87 | 3.98 | **-88.9%** | | bench_str_17_bytes_eq | 19.62 | 4.05 | **-79.4%** | | bench_medium_str_early_mismatch | 1.32 | 2.42 | +0.75 ns | | bench_str_of_8_bytes_eq | 9.20 | 9.20 | 0.0% | | bench_str_under_8_bytes_eq | 3.49 | 3.49 | 0.0% | ### 2.2 Grouped Comparison | Group | Scenario | Baseline | Optimized | Change | |---|---|---|---|---| | **≥16B equal** | 17B / 31B / MEDIUM / LARGE | 19.6–6236 ns | 4.0–547 ns | **-79% ~ -91%** | | **≥16B tail mismatch** | MEDIUM, last byte differs | 786.84 ns | 65.76 ns | **-91.6%** | | **≥16B early mismatch** | MEDIUM, first byte differs | 1.32 ns | 2.42 ns | +0.75 ns | | **<16B** | 8B / <8B equal | 3.49–9.20 ns | 3.49–9.20 ns | no change | r? @Amanieu
Merged
rust-bors Bot pushed a commit that referenced this pull request
Aug 3, 2026Rollup of 5 pull requests Successful merges: - #160143 (Add NEON support for is_ascii and eq_ignore_ascii_case) - #160191 (bootstrap: Don't pass `Kind` to some places that don't need it) - #160386 (rustc_data_structures: Cleanup jobserver initialization) - #160409 (Remove redundant target check from check_eii_impl) - #160410 (Update GitHub Actions to v7.0.1)
rust-timer added a commit that referenced this pull request
Aug 3, 2026Rollup merge of #160143 - ywxt:add-neon-support-is-ascii, r=Amanieu Add NEON support for is_ascii and eq_ignore_ascii_case Results on my aarch64 machine. ## 1. `is_ascii` ### 1.1 Raw Data (ns/iter, case00_libcore only — the path that calls `bytes.is_ascii()`) | Input | Baseline (NEON off) | Optimized (NEON on) | Change | |---|---|---|---| | long | 19.69 | 6.46 | **-67.2%** | | unaligned_both_long | 22.60 | 8.92 | **-60.5%** | | unaligned_head_long | 20.62 | 8.81 | **-57.3%** | | unaligned_tail_long | 21.15 | 8.68 | **-59.0%** | | medium | 3.10 | 2.92 | -5.8% | | short | 3.77 | 3.81 | +1.1% | | unaligned_both_medium | 2.59 | 2.83 | +9.3% | | unaligned_head_medium | 2.95 | 5.00 | +69.5% | | unaligned_tail_medium | 2.37 | 2.96 | +24.9% | ### 1.2 Grouped Comparison (case00_libcore — the path affected by the change) | Group | Baseline sum (ns) | Optimized sum (ns) | Change | |---|---|---|---| | **LONG (~350B, 4 items)** | 84.06 | 32.87 | **-60.9%** | | **MEDIUM/SHORT (~16–32B, 5 items)** | 14.78 | 17.52 | +18.5% | | All 9 items | 98.84 | 50.39 | **-49.0%** | ## 2. `eq_ignore_ascii_case` ### 2.1 Raw Data (ns/iter) | Bench | Baseline (NEON off) | Optimized (NEON on) | Change | |---|---|---|---| | bench_large_str_eq | 6235.89 | 546.61 | **-91.2%** | | bench_medium_str_eq | 780.81 | 68.05 | **-91.3%** | | bench_medium_str_tail_mismatch | 786.84 | 65.76 | **-91.6%** | | bench_str_31_bytes_eq | 35.87 | 3.98 | **-88.9%** | | bench_str_17_bytes_eq | 19.62 | 4.05 | **-79.4%** | | bench_medium_str_early_mismatch | 1.32 | 2.42 | +0.75 ns | | bench_str_of_8_bytes_eq | 9.20 | 9.20 | 0.0% | | bench_str_under_8_bytes_eq | 3.49 | 3.49 | 0.0% | ### 2.2 Grouped Comparison | Group | Scenario | Baseline | Optimized | Change | |---|---|---|---|---| | **≥16B equal** | 17B / 31B / MEDIUM / LARGE | 19.6–6236 ns | 4.0–547 ns | **-79% ~ -91%** | | **≥16B tail mismatch** | MEDIUM, last byte differs | 786.84 ns | 65.76 ns | **-91.6%** | | **≥16B early mismatch** | MEDIUM, first byte differs | 1.32 ns | 2.42 ns | +0.75 ns | | **<16B** | 8B / <8B equal | 3.49–9.20 ns | 3.49–9.20 ns | no change | r? @Amanieu