dysfun@treehouse.systems ("gaytabase") wrote:
on x86-64 support, i decided to require x86-64-v3, but cover the amd bug where an important part of that was slow before zen 3 with some polyfills (which while they certainly won't be as fast as the 3 cycles you'll get in a proper implementation, are much, much quicker than the hardware - i know this because i am typing on affected hardware).
so there are two implementations just of PEXT. then we have avx512 as an optional feature. so just the read path has 2 choices each of 2 features.
i say just the read path, because the write path can take advantage of yet more avx512 that you're not guaranteed to have, so we have to polyfill that if you have avx512 without the extra features.
the original HOT never bothered with AVX-512 (it wasn't very widely deployed at the time), and i can say it has definitely been a lot of work adapting it to use avx-512 in places, but the rewards are hopefully worth it. i wouldn't actually know because i don't have AVX-512 support locally so i'm going to have to wait a long time to see if my theory pans out on that...