SDAA498 September 2026 AM62L
--enable-armasm on aarch64 enables wolfSSL assembly for: hardware AES, hardware SHA-256/SHA-512, and NEON Keccak/SHAKE (sha3_asm.S). The table below shows the performance delta for PQC algorithms.
| Algorithm | Operation | Without armasm (ops/s) | With armasm (ops/s) | Improvement |
|---|---|---|---|---|
| ML-KEM-512 | keygen | 11,896 | 18,897 | +59% |
| ML-KEM-512 | encaps | 10,316 | 18,355 | +78% |
| ML-KEM-512 | decaps | 7,258 | 12,876 | +77% |
| ML-KEM-768 | keygen | 6,145 | 11,881 | +93% |
| ML-KEM-768 | encaps | 6,135 | 11,727 | +91% |
| ML-KEM-768 | decaps | 4,580 | 8,521 | +86% |
| ML-KEM-1024 | keygen | 3,823 | 7,820 | +105% |
| ML-KEM-1024 | encaps | 3,884 | 6,423 | +65% |
| ML-KEM-1024 | decaps | 3,061 | 5,572 | +82% |
| ML-DSA-44 | keygen | 3,080 | 3,606 | +17% |
| ML-DSA-44 | sign | 918 | 834 | -9% † |
| ML-DSA-44 | verify | 2,938 | 3,061 | +4% |
| ML-DSA-65 | keygen | 1,765 | 2,044 | +16% |
| ML-DSA-65 | sign | 558 | 532 | -5% † |
| ML-DSA-87 | keygen | 1,173 | 1,275 | +9% |
| ML-DSA-87 | sign | 401 | 438 | +9% |
| ML-DSA-87 | verify | 1,096 | 1,171 | +7% |
† ML-DSA signing uses rejection sampling — iteration count is stochastic and causes benchmark variance of ±10% to ±15%. The observed sign regression for ML-DSA-44/65 is within noise.
ML-KEM uses SHAKE-128/256 (Keccak) as
its primary primitive: key generation is approximately 60% Keccak, encapsulation is
approximately 70% Keccak. wolfSSL's
sha3_asm.S
provides a NEON-optimized Keccak-f[1600] permutation, giving 60% to 100% speedup on all
ML-KEM operations. ML-DSA uses SHAKE more sparingly (for hashing, not for the dominant
NTT polynomial arithmetic), so the SHAKE speedup translates to a smaller overall
improvement.