KhronosGroup / KhronosGroup/SPIRV-LLVM-Translator

Introduce support for NonSemantic.Shader.DebugInfo rolling version

Open
#3,749 8 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.