A provenance rule that was stated too narrowly, and a refusal defended for the wrong reason
Another thread reviewing this work concluded the instruction set material came from PS4-era emulator decode tables, and recommended LLVM's TableGen files instead. Both halves were wrong, in opposite directions.
The material came from AMD document 70648, the RDNA 2 ISA reference,
cited in REFERENCES.md with a retrieval date since it was fetched. The
decision log separately records that shadPS4, GPCS4, KytyPS5 and
obliteration were deliberately not opened. The target is
gfx1030; the files that thread listed are
gfx900, a generation earlier, and none of those paths are
in this repository.
So the sourcing was fine and documented. Two things were not.
The boundary section named two categories where there are three. "Published specification" versus "another implementation's source" leaves no room for the case that actually matters most here: the vendor's own open-source contributions. AMD publishes its ISA guides and contributes the AMDGPU backend to LLVM under a permissive licence - that is a silicon interface documented so that people will program against it. Refusing it because emulator source is off-limits is a category error, and it is a cost with no benefit. Now stated as three categories, with the reason each is in its own row.
And I defended the LLVM restriction on the wrong
grounds. My first answer ran the licensing objection and the
engineering one together. They are not the same, and the licensing one
is wrong: nothing forbids reading .td.
The real reason is oracle independence. The AMD document supplies
values; LLVM detects errors through its behaviour as a black box.
Generating our table from LLVM's tables collapses two sources into one,
and the differential test can only confirm that LLVM agrees with itself.
The LDS opcode field is the standing proof - [25:18], where
the document's field table says [24:17], caught because the
generator disagreed with the document and the document's own opcode
table settled it.
Stated once, in REFERENCES.md and D206: LLVM may check a table and may cross-check a fact; it may not be the thing the table is generated from.
Surprises
Defending a correct decision with the wrong argument is its own failure mode. The conclusion held, so nothing looked broken - but an engineering constraint dressed as a licensing rule loses the argument the moment someone checks the licence, and takes the correct conclusion with it. Worth more than the documentation fix.
Reading .td as a third source is
welcome and I had argued myself out of it. The hidden
condition-code side effects and the division thresholds are
BLOCKED in model.rs for want of exactly that
kind of machine-readable fact. Additive rather than circular, and now
recorded as such instead of being lumped in with the refusal.