KhronosGroup / KhronosGroup/SPIRV-Tools

Generalize LocalAccessChainConvert and CommonUniformElimPass so they work on modules having ints other than 32 bits

Open
#745 0 comments 0 reactions 0 assignees View on GitHub
component:optimization enhancement
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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.