What these packages are, how the generators fit together, how to run them is in archsimd/_gen/README.md. This file is only about not burning your context window.
Generated files here are machine-uniform: hundreds to thousands of near-identical stanzas, each a doc comment plus one declaration.
// Add adds corresponding elements of two vectors. // // Asm: VPADDD, CPU Feature: AVX func (x Int32x4) Add(y Int32x4) Int32x4
Two or three stanzas tell you what the whole file would. Reading one end to end can consume a large fraction of your context and teach you nothing the sample didn't. This stays true as the API grows: these files get longer, not more varied.
A file is generated if its first line says so:
head -1 <file> | grep 'Code generated'
Don't rely on a remembered list of which files are big — measure:
find . -name '*.go' -size +50k -not -path '*/_gen/*' | xargs ls -lS
archsimd/ops_*.go, internal/simdref/simdref.go, internal/bridge/decls_*.go and the simd_test helpers are usually on that list. Treat it as a starting point, not an inventory.
Anchor the pattern, ask for little context:
# the shape of one declaration, with its full doc comment GOEXPERIMENT=simd go doc simd/archsimd.Int32x4.Add # which receivers carry an op — count first, list if you need to grep -c '^func ([^)]*) Add(' archsimd/ops_amd64.go
An unanchored grep Add also matches AddSub, MulAdd, PairwiseAdd and every // Asm: line mentioning one. On a file of uniform stanzas, -A5/-B5 returns most of the file.
specls prints the expanded spec API. Its output is as large as the files it describes, so use -f (a regexp) to narrow it, and anchor the pattern:
go run ./cmd/specls -f '^Add$' # one spec function go run ./cmd/specls -f Add # every name containing "Add" — much larger go run ./cmd/specls # the entire expanded API — very large
Same caution for diffs. The README says to use -diff constantly, and that's right — but regenerating a family can produce thousands of lines. Get the shape first, then read what matters:
git diff --stat go run . -tools <tool> -diff | wc -l
Edit the generator input and regenerate. The first line of each generated file names the inputs it was built from; use those to find what to edit, but regenerate with go generate (see the README), not by re-running the command in that line. Commit regenerated output in the same commit as the change that caused it.
archsimd/_gen/SPEC-TRANSITION.md is the active plan. Read Part 2 (the rationale; tasks cite it by section number) and your own task from Part 4. Don't read Part 4 end to end — it is every task in the project, and you were given one.