[PATCH] D148843: [X86 isel] Fix permute mask calculation in lowerShuffleAsUNPCKAndPermute
Simon Pilgrim via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 22 03:20:00 PDT 2023
RKSimon added inline comments.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:13343
+ PermuteMask[Elt] = BaseMaskElt + 1;
}
----------------
Is the OpsSwapped logic necessary?
```
for (int Elt = 0; Elt != NumElts; ++Elt) {
int M = Mask[Elt];
if (M < 0)
continue;
int NormM = M;
if (NumElts <= M)
NormM -= NumElts;
bool IsFirstOp = M < NumElts;
int BaseMaskElt =
NumLaneElts * (NormM / NumLaneElts) + (2 * (NormM % NumHalfLaneElts));
if ((IsFirstOp && V1 == Ops[0]) || (!IsFirstOp && V2 == Ops[0]))
PermuteMask[Elt] = BaseMaskElt;
else if if ((IsFirstOp && V1 == Ops[1]) || (!IsFirstOp && V2 == Ops[1]))
PermuteMask[Elt] = BaseMaskElt + 1;
}
```
I think there probably needs to be an assertion there as well someplace.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D148843/new/
https://reviews.llvm.org/D148843
More information about the llvm-commits
mailing list