microsoft / microsoft/DirectXShaderCompiler

Bitfields generate bad code when casted

Open
#7,074 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug check-in-clang hlsl2021
Dominant language
C++
Stars
3.7k
Forks
900
Avg merge
2d 11h
Merged PRs (30d)
44

Description

Description
HLSL "Flat" casting bitfields does not properly mask bitfield members.

Steps to Reproduce
https://godbolt.org/z/MEKdTYxWM

Actual Behavior
Bit field members are read as full storage, not correctly masked, so instead of returning 3, this code returns 101057538 (0x6060402).

Environment

  • DXC version: main
  • Host Operating System: all

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the HLSL Flat-casting bitfield reproducer at https://godbolt.org/z/MEKdTYxWM and run it with DXC from main. Trace how the cast reads bitfield members and where masking is lost. Done means the reproduced case returns 3 rather than 101057538 on all hosts.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Bug
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.