[llvm] [AMDGPU] Fix an issue that wrong index is used in calculation of byte provider when the op is extract_vector_elt (PR #91697)
Shilei Tian via llvm-commits
llvm-commits at lists.llvm.org
Thu May 9 22:17:56 PDT 2024
================
@@ -12071,12 +12071,8 @@ calculateByteProvider(const SDValue &Op, unsigned Index, unsigned Depth,
return std::nullopt;
auto VecIdx = IdxOp->getZExtValue();
auto ScalarSize = Op.getScalarValueSizeInBits();
- if (ScalarSize != 32) {
- Index = ScalarSize == 8 ? VecIdx : VecIdx * 2 + Index;
- }
-
- return calculateSrcByte(ScalarSize == 32 ? Op : Op.getOperand(0),
- StartingIndex, Index);
+ return calculateSrcByte(Op.getOperand(0), StartingIndex,
+ ScalarSize / 8 * VecIdx + Index);
----------------
shiltian wrote:
I feel I might miss some corner case here but I can't figure that out. However, this approach does look pretty straightforward.
https://github.com/llvm/llvm-project/pull/91697
More information about the llvm-commits
mailing list