I just published the first version of my illustrated SVE (ARMv9 SIMD) instruction list, with a truly absurd number of instruction diagrams and descriptions.
Check it out at https://dougallj.github.io/asil/
I just published the first version of my illustrated SVE (ARMv9 SIMD) instruction list, with a truly absurd number of instruction diagrams and descriptions.
Check it out at https://dougallj.github.io/asil/
@dougall would be nice to make table headers sticky so they don't scroll out of view. It should be a matter of wrapping them in <thead> and adding
thead {
top: 0;
position: sticky;
}
to CSS. Do you want a pull request with that?
@amonakov Good suggestion, thanks! Probably best to avoid PRs, since the HTML is generated by scripts, but I'll look into it.
(Looks like I need to add the THEADs too)
@adreid Thanks! I'm a fan of your work on the specs :)
For each table row I manually list the instructions (e.g. "zip" -> zip1_z_zz, zipq1_z_zz, zipq2_z_zz). This is used to automatically populate the columns for the supported sizes from the spec. I automatically cross-match this with the SIMD intrinsics data (https://developer.arm.com/architectures/instruction-sets/intrinsics/), and I scan/pattern-match the starts of the ASL to automatically find the requirements (e.g. "HaveSVE() && HaveSVE2BitPerm() && NonStreamingSVEEnabled()").
@adreid One maybe-practical change I'd consider would be pulling the instrinsics data into the machine-readable-specs.
If I were to use symbolic execution, I think one of the trickier parts would be broadcasts, like in SUDOT above. Specifying these in terms of a broadcast function, followed by an element-wise operation might be preferable? But I'd want to try the symbolic execution approach before recommending something like that.