KhronosGroup / KhronosGroup/SPIRV-Tools
Generalize LocalAccessChainConvert and CommonUniformElimPass so they work on modules having ints other than 32 bits
- Dominant language
- C++
- Stars
- 1.4k
- Forks
- 709
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 28
Description
The issue is in generating composite extracts, which require literal indices of at most 32 bits.
Goal: the passes should work with modules that use 16 or 64 bit ints that aren't involved in indexing composites.
Currently CommonUniformElim will bail even if any 16-bit ints are seen. But it should be able to work in that case too.
Contributor guide
Research direction
Start by locating LocalAccessChainConvert and CommonUniformElimPass, then trace composite extract generation and the handling of non-32-bit integer types. Verify how literal indices are represented and where CommonUniformElim currently bails. Done means modules containing unrelated 16- or 64-bit integers are processed successfully while composite indices remain valid.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100