| This spec is quite incomplete! The plan is to migrate everything from simdgen's |
| categories.yaml files into the spec and replace categories.yaml. As we're doing |
| so, we should think carefully about: |
| |
| 1. The doc comment for each operation. Let's start moving toward a more formal |
| style for mathematically specified operations. |
| |
| 2. How every operation generalizes across types, sizes, and especially to |
| scalable vectors. The spec is meant to be *maximalist*, circumscribing what |
| every architecture can do. |
| |
| 3. In what cases operations are architecture-dependent. |
| |
| Tasks |
| - [ ] Hook specgen into simdgen, probably unioning the categories.yaml input and |
| the specgen input while we transition |
| - [ ] Migrate categories.yaml to spec |
| - [ ] Figure out how to represent compiler-only (non-API) simdgen operations |
| - [ ] Delete categories.yaml |
| - [ ] Incorporate specgen into other generators, so the spec becomes the sole |
| source of truth for all exported APIs. |
| - [ ] tmplgen |
| - [ ] wasmgen |
| - [ ] Build a tool to ensure hand-written APIs (emulations, etc) match the spec. |
| Maybe the hand-written code still lives directly in archsimd, but as |
| unexported function, and the generator writes the trivial exported API glue |
| for these. |
| - [x] Generate a full reference implementation for testing that provides the |
| SIMD API but just wraps the spec package. (Done: _gen/cmd/refgen) |
| - [ ] Generate conformance tests of the archsimd API against the spec testing |
| layer. |