[Metal][DXC] WaveMultiPrefixCountBits fails with inactive lanes

Open
#1,712 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
65/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
cpp
Domain
testing-qa

Research direction

Start with the WaveMultiPrefixCountBits.test reproduction from PR #1705 and the linked CI log; run it in the mtl configuration with DXC. Inspect the inactive-lane case and capture the returned counts, since the current test records only pass/fail flags. Done when the cause is confirmed and the test produces the expected result: all 128 OutDivergent flags equal 1.

Written by the indexing model from the issue text.

Description

The inactive-lane case in WaveMultiPrefixCountBits.test fails with DXC on Metal. Compilation and pipeline creation succeed, but the output check fails.

Reproduction

Run WaveMultiPrefixCountBits.test from PR #1705 in the mtl configuration with DXC.

The failing case calls the builtin only where WaveGetLaneIndex() % 3 != 1. It supplies a full mask. The reference counts true predicates in earlier active lanes and excludes inactive lanes.

Expected result

All 128 flags in OutDivergent equal 1.

Actual result

80 flags equal 0, and 48 equal 1. The runner reports:

Test failed: TestDivergent
Comparison Rule: BufferExact
Possible cause

The output pattern matches a model that incorrectly counts inactive lanes in 32-lane waves. However, the test stores only pass/fail flags. It does not record the returned counts, so the exact cause remains unconfirmed.

Dominant language
C++
Stars
20
Forks
41
Avg merge
5d 2h
Merged PRs (30d)
29

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

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.

More from llvm/offload-test-suite

All issues in llvm/offload-test-suite

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.