diff options
author | Philip Reames <preames@rivosinc.com> | 2025-07-26 11:38:31 -0700 |
---|---|---|
committer | Philip Reames <listmail@philipreames.com> | 2025-07-26 11:46:15 -0700 |
commit | f65b329d706c883ea469246de093219612390aa9 (patch) | |
tree | 70d9f048a980828214fa5e76bd51153cd6262703 /llvm/lib/CodeGen/InterleavedAccessPass.cpp | |
parent | d50a4f6784d5ed6096e5c35e965c68c4767e4757 (diff) | |
download | llvm-f65b329d706c883ea469246de093219612390aa9.zip llvm-f65b329d706c883ea469246de093219612390aa9.tar.gz llvm-f65b329d706c883ea469246de093219612390aa9.tar.bz2 |
[IA] Fix a bug introduced by a recent refactoring
I had dropped the check for which intrinsics were supported. This is
a quick fix to get tree back into an unbroken state, a cleaner change
may follow.
Diffstat (limited to 'llvm/lib/CodeGen/InterleavedAccessPass.cpp')
-rw-r--r-- | llvm/lib/CodeGen/InterleavedAccessPass.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/InterleavedAccessPass.cpp b/llvm/lib/CodeGen/InterleavedAccessPass.cpp index c2839d4..5e50898 100644 --- a/llvm/lib/CodeGen/InterleavedAccessPass.cpp +++ b/llvm/lib/CodeGen/InterleavedAccessPass.cpp @@ -634,6 +634,9 @@ bool InterleavedAccessImpl::lowerDeinterleaveIntrinsic( << " and factor = " << Factor << "\n"); } else { assert(II); + if (II->getIntrinsicID() != Intrinsic::masked_load && + II->getIntrinsicID() != Intrinsic::vp_load) + return false; // Check mask operand. Handle both all-true/false and interleaved mask. Mask = getMask(getMaskOperand(II), Factor, getDeinterleavedVectorType(DI)); @@ -673,6 +676,9 @@ bool InterleavedAccessImpl::lowerInterleaveIntrinsic( Value *Mask = nullptr; if (II) { + if (II->getIntrinsicID() != Intrinsic::masked_store && + II->getIntrinsicID() != Intrinsic::vp_store) + return false; // Check mask operand. Handle both all-true/false and interleaved mask. Mask = getMask(getMaskOperand(II), Factor, cast<VectorType>(InterleaveValues[0]->getType())); |