[llvm] [IA][RISCV] More precise checking of shuffle within interleaved load (PR #185384)
Liao Chunyu via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 25 01:21:21 PDT 2026
================
@@ -350,7 +347,14 @@ bool InterleavedAccessImpl::lowerInterleavedLoad(
Shuffle->getShuffleMask(), Factor, Index))
return false;
- assert(Shuffle->getShuffleMask().size() <= NumLoadElements);
+ ArrayRef<int> Mask = Shuffle->getShuffleMask();
+ if (Mask.size() * Factor > NumLoadElements) {
+ for (unsigned i = 0; i < Mask.size(); i++) {
----------------
ChunyuLiao wrote:
It may not be necessary. If it is not `isSingleSourceMask`, at line 219 !isa<UndefValue>(SVI->getOperand(1)) would return false.
```
auto *SVI = dyn_cast<ShuffleVectorInst>(User);
if (!SVI || !isa<UndefValue>(SVI->getOperand(1)))
return false;
```
https://github.com/llvm/llvm-project/pull/185384
More information about the llvm-commits
mailing list