3 ms·
Thanks for sharing the examples! Looks like broadcast and replicating one element, which works if we know there are only 4 elements. > I was doing something li
by janwas 5y ago
Thanks for sharing the examples! Looks like broadcast and replicating one element, which works if we know there are only 4 elements.
> I was doing something like that, saving a few instructions
Oh, nice one.
> I think ARM is good enough for most applications, except very small niches (very low power, very price-sensitive, mostly embedded).
Are you talking about the ARM arch vs Risc-V? That may be, but ARM is also getting SVE, and adding yet another #if for that is going to be expensive.
> Yeah, but other things can’t. For one, ARM has 8-byte SIMD vectors.
hm, Highway does support half vectors which map nicely to the non-q instructions. We also support 8-bit StoreInterleaved3 which is implemented similar to yours (more instructions but fewer constants): https://github.com/google/highway/blob/master/hwy/ops/x86_128-inl.h#L4971 https://github.com/google/highway/blob/master/hwy/ops/x86_12...
In my experience, integer mul are the hardest to bridge, but at least for dot products even that is feasible.