arm/neon: add LSX implementations - #1447
Conversation
|
Sorry for the delay — I'm away on vacation. I'll get back to this once I return. Thanks for your understanding! |
2d92bf5 to
b6db5f9
Compare
b6db5f9 to
eb56eb3
Compare
mr-c
left a comment
There was a problem hiding this comment.
There is a failing test: https://github.com/simd-everywhere/simde/actions/runs/34824347914/job/103944435199?pr=1447#logs
eb56eb3 to
ef9a06b
Compare
|
Reproduced with GCC 12.3: The failing subtest is aba/vaba_s32 on the LoongArch native build. The cause is simde_vaba_s32(a,b,c) = simde_vadd_s32(simde_vabd_s32(b,c), a), and simde_vabd_s32 widens the Because signed overflow is UB, at -O3-level optimization GCC may assume it never happens and Fix: keep the operation out of C signed arithmetic. Adding the LSX path for simde_vadd_s32 Verified: the aba suite passes at -O2/-O3/-Ofast and UBSan reports zero runtime errors (it The above analysis is based on DeepSeek Harness + DeepSeek-V4-Flash. |
This change only implements the NEON instructions used by the libjpeg-turbo project in the simde/arm directory. The remaining instructions in each file will be submitted in subsequent patches.
ef9a06b to
26a80d6
Compare
|
Is this ready to merge, or is something still needed? :) |
Based on this libjpeg-turbo/libjpeg-turbo#838, we made a performance test:
Current libjpeg-turbo commit: 174da652ef60ef7191357620eaf1d8fe776de723
Current SIMDe commit: 6a72a0434262d0f7f50e1e264284973bcbbd373e
Loongson-3A5000HV, Loongnix GNU/Linux 20 (DaoXiangHu), gcc (Loongnix 8.3.0-6.lnd.vec.44) 8.3.0 :