[llvm] [AMDGPU] Fix an issue that wrong index is used in calculation of byte provider when the op is extract_vector_elt (PR #91697)

Jeffrey Byrnes via llvm-commits llvm-commits at lists.llvm.org
Mon May 20 14:22:21 PDT 2024


jrbyrnes wrote:

> It didn't cause a crash. It causes wrong results in just one OpenCL conformance test. That is because wrong register is used in `v_perm_b32` instruction.

Ah, I see the issue. Thanks.

It is because the current index calculation condition assumes less than 32 bit.

Can you try

```
    if (ScalarSize < 32) {
      Index = ScalarSize == 8 ? VecIdx : VecIdx * 2 + Index;
    }

    return calculateSrcByte(ScalarSize >= 32 ? Op : Op.getOperand(0),
                            StartingIndex, Index);
```



https://github.com/llvm/llvm-project/pull/91697


More information about the llvm-commits mailing list