KhronosGroup / KhronosGroup/SPIRV-LLVM-Translator
Introduce support for NonSemantic.Shader.DebugInfo rolling version
- Dominant language
- LLVM
- Stars
- 625
- Forks
- 279
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 34
Description
Per updated https://github.com/KhronosGroup/SPIRV-Registry/blob/main/nonsemantic/NonSemantic.Shader.DebugInfo.asciidoc :
Version Compatibility
Later versions are supersets of earlier versions in the following sense:
New instructions may be added.
* Existing instructions maintain their instruction numbers and operand structure within the version they were defined.
* Adding operands to existing instructions, even as optional trailing operands, constitutes a breaking change and requires a new version. Any added operands must be optional trailing operands.
* Validation rules may become stricter for newly generated code.
However, later versions are NOT required to be semantically compatible:
* The meaning of an instruction and its operands will not change unless an operand, added after the instruction’s initial version, is used. Clarifications to the specification text do not constitute semantic changes.
* Tools consuming debug info at version N should use the semantics defined in version N.
* Tools may choose to support multiple versions or drop support for older versions.
* This allows the specification to evolve and fix problematic patterns without being constrained by full backward compatibility.
This has to be taken into an account. See https://github.com/KhronosGroup/SPIRV-LLVM-Translator/pull/3744#discussion_r3220560990
Contributor guide
Research direction
Start by reading the NonSemantic.Shader.DebugInfo version-compatibility rules linked in the issue and the referenced discussion in PR #3744. Identify the existing rolling-version handling and determine how support should account for newer instructions, preserved operand structure, and version-specific semantics; done means the implementation follows those rules and its relevant checks pass.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100