14 comments

[ 3.2 ms ] story [ 50.0 ms ] thread
holy shit, i’ve wanted exactly this for some time now. here’s the excellent x86 equivalent (sse through avx512): https://www.officedaytime.com/simd512e/
I hope it's useful, though I think most people care about the "Advanced SIMD" (Neon) instructions, which I'd also like to do. I started with SVE because I wasn't already familiar with it, so it was a more interesting project.

(For anyone unfamiliar, SVE is supported only on extremely recent ARM CPUs, and Apple CPUs do not yet support it, whereas AdvSIMD is available on all ARMv8-A CPUs.)

Great stuff! I would definitely use the NEON version. For now I'm working on stuff that targets several flavors of intel stuff and NEON.
SVE is exactly what I've been interested in seeing illustrated like this :).

It's absurd to me that Arm hasn't created this themselves. officedaytime's page is such a nice thing to have for x86.

Awesome! I'm always happy to hear people are interested in SVE :)

(And yeah, creating technical documentation that a large company should have created themselves has somehow become a hobby of mine.)

Terrific, I'd been looking for something like this for a while. Thank you so much!
Thanks, this looks quite promising! As noted in other threads, both a version for the plain NEON instructions would be good (and the intermediate extensions, rdm, dotprod, i8mm etc), and also SVE2 instructions.

Edit: Oh, I see this does have SVE2 as well - that's great!

The ARM ARM is quite heavy to browse; for baseline NEON, I've used the "ARMv8 Instruction Set Overview" [1] which comes in a a neat 115 pages, which is great for easy browsing and finding what's available. But for anything newer than the baseline, one pretty much has to refer to the ARM ARM right now.

[1] It used to be available from ARM themselves, but I can't seem to find it these days. I've found one copy online at https://www.cs.princeton.edu/courses/archive/spr19/cos217/re... though.

I’ve herd of A64 and SIMD before. What’s SVE? Security Vulnerabilities?
Scaleable Vector Extension. A class of SIMD instructions.
Scalable because this one can work in a vector length agnostic way. That is, you can write code that works with 128 bit vectors and also run on a machine with 512 bit vectors without recompilation.
That makes a lot of sense. Thanks for explaining!