diff options
author | Arthur Eubanks <aeubanks@google.com> | 2023-10-04 14:31:59 -0700 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2023-10-04 14:37:16 -0700 |
commit | 07389535a702863248ee052bb406c93c814c3d03 (patch) | |
tree | 511b43bf26600d48ba5f9bdaff113f362e24e297 /llvm/unittests/IR/InstructionsTest.cpp | |
parent | 28245b4ecb2baa74ab97320d6bf4ddcfe3a43429 (diff) | |
download | llvm-07389535a702863248ee052bb406c93c814c3d03.zip llvm-07389535a702863248ee052bb406c93c814c3d03.tar.gz llvm-07389535a702863248ee052bb406c93c814c3d03.tar.bz2 |
Revert "[IR]Add NumSrcElts param to is..Mask static function in ShuffleVectorInst."
This reverts commit b186f1f68be11630355afb0c08b80374a6d31782.
Causes crashes, see https://reviews.llvm.org/D158449.
Diffstat (limited to 'llvm/unittests/IR/InstructionsTest.cpp')
-rw-r--r-- | llvm/unittests/IR/InstructionsTest.cpp | 178 |
1 files changed, 54 insertions, 124 deletions
diff --git a/llvm/unittests/IR/InstructionsTest.cpp b/llvm/unittests/IR/InstructionsTest.cpp index 20b8529..637c692 100644 --- a/llvm/unittests/IR/InstructionsTest.cpp +++ b/llvm/unittests/IR/InstructionsTest.cpp @@ -1024,141 +1024,71 @@ TEST(InstructionsTest, ShuffleMaskQueries) { Constant *C7 = ConstantInt::get(Int32Ty, 7); Constant *Identity = ConstantVector::get({C0, CU, C2, C3, C4}); - EXPECT_TRUE(ShuffleVectorInst::isIdentityMask( - Identity, cast<FixedVectorType>(Identity->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isSelectMask( - Identity, - cast<FixedVectorType>(Identity->getType()) - ->getNumElements())); // identity is distinguished from select - EXPECT_FALSE(ShuffleVectorInst::isReverseMask( - Identity, cast<FixedVectorType>(Identity->getType())->getNumElements())); - EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask( - Identity, cast<FixedVectorType>(Identity->getType()) - ->getNumElements())); // identity is always single source - EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask( - Identity, cast<FixedVectorType>(Identity->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isTransposeMask( - Identity, cast<FixedVectorType>(Identity->getType())->getNumElements())); + EXPECT_TRUE(ShuffleVectorInst::isIdentityMask(Identity)); + EXPECT_FALSE(ShuffleVectorInst::isSelectMask(Identity)); // identity is distinguished from select + EXPECT_FALSE(ShuffleVectorInst::isReverseMask(Identity)); + EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask(Identity)); // identity is always single source + EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask(Identity)); + EXPECT_FALSE(ShuffleVectorInst::isTransposeMask(Identity)); Constant *Select = ConstantVector::get({CU, C1, C5}); - EXPECT_FALSE(ShuffleVectorInst::isIdentityMask( - Select, cast<FixedVectorType>(Select->getType())->getNumElements())); - EXPECT_TRUE(ShuffleVectorInst::isSelectMask( - Select, cast<FixedVectorType>(Select->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isReverseMask( - Select, cast<FixedVectorType>(Select->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isSingleSourceMask( - Select, cast<FixedVectorType>(Select->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask( - Select, cast<FixedVectorType>(Select->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isTransposeMask( - Select, cast<FixedVectorType>(Select->getType())->getNumElements())); - + EXPECT_FALSE(ShuffleVectorInst::isIdentityMask(Select)); + EXPECT_TRUE(ShuffleVectorInst::isSelectMask(Select)); + EXPECT_FALSE(ShuffleVectorInst::isReverseMask(Select)); + EXPECT_FALSE(ShuffleVectorInst::isSingleSourceMask(Select)); + EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask(Select)); + EXPECT_FALSE(ShuffleVectorInst::isTransposeMask(Select)); + Constant *Reverse = ConstantVector::get({C3, C2, C1, CU}); - EXPECT_FALSE(ShuffleVectorInst::isIdentityMask( - Reverse, cast<FixedVectorType>(Reverse->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isSelectMask( - Reverse, cast<FixedVectorType>(Reverse->getType())->getNumElements())); - EXPECT_TRUE(ShuffleVectorInst::isReverseMask( - Reverse, cast<FixedVectorType>(Reverse->getType())->getNumElements())); - EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask( - Reverse, cast<FixedVectorType>(Reverse->getType()) - ->getNumElements())); // reverse is always single source - EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask( - Reverse, cast<FixedVectorType>(Reverse->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isTransposeMask( - Reverse, cast<FixedVectorType>(Reverse->getType())->getNumElements())); + EXPECT_FALSE(ShuffleVectorInst::isIdentityMask(Reverse)); + EXPECT_FALSE(ShuffleVectorInst::isSelectMask(Reverse)); + EXPECT_TRUE(ShuffleVectorInst::isReverseMask(Reverse)); + EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask(Reverse)); // reverse is always single source + EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask(Reverse)); + EXPECT_FALSE(ShuffleVectorInst::isTransposeMask(Reverse)); Constant *SingleSource = ConstantVector::get({C2, C2, C0, CU}); - EXPECT_FALSE(ShuffleVectorInst::isIdentityMask( - SingleSource, - cast<FixedVectorType>(SingleSource->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isSelectMask( - SingleSource, - cast<FixedVectorType>(SingleSource->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isReverseMask( - SingleSource, - cast<FixedVectorType>(SingleSource->getType())->getNumElements())); - EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask( - SingleSource, - cast<FixedVectorType>(SingleSource->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask( - SingleSource, - cast<FixedVectorType>(SingleSource->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isTransposeMask( - SingleSource, - cast<FixedVectorType>(SingleSource->getType())->getNumElements())); + EXPECT_FALSE(ShuffleVectorInst::isIdentityMask(SingleSource)); + EXPECT_FALSE(ShuffleVectorInst::isSelectMask(SingleSource)); + EXPECT_FALSE(ShuffleVectorInst::isReverseMask(SingleSource)); + EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask(SingleSource)); + EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask(SingleSource)); + EXPECT_FALSE(ShuffleVectorInst::isTransposeMask(SingleSource)); Constant *ZeroEltSplat = ConstantVector::get({C0, C0, CU, C0}); - EXPECT_FALSE(ShuffleVectorInst::isIdentityMask( - ZeroEltSplat, - cast<FixedVectorType>(ZeroEltSplat->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isSelectMask( - ZeroEltSplat, - cast<FixedVectorType>(ZeroEltSplat->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isReverseMask( - ZeroEltSplat, - cast<FixedVectorType>(ZeroEltSplat->getType())->getNumElements())); - EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask( - ZeroEltSplat, cast<FixedVectorType>(ZeroEltSplat->getType()) - ->getNumElements())); // 0-splat is always single source - EXPECT_TRUE(ShuffleVectorInst::isZeroEltSplatMask( - ZeroEltSplat, - cast<FixedVectorType>(ZeroEltSplat->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isTransposeMask( - ZeroEltSplat, - cast<FixedVectorType>(ZeroEltSplat->getType())->getNumElements())); + EXPECT_FALSE(ShuffleVectorInst::isIdentityMask(ZeroEltSplat)); + EXPECT_FALSE(ShuffleVectorInst::isSelectMask(ZeroEltSplat)); + EXPECT_FALSE(ShuffleVectorInst::isReverseMask(ZeroEltSplat)); + EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask(ZeroEltSplat)); // 0-splat is always single source + EXPECT_TRUE(ShuffleVectorInst::isZeroEltSplatMask(ZeroEltSplat)); + EXPECT_FALSE(ShuffleVectorInst::isTransposeMask(ZeroEltSplat)); Constant *Transpose = ConstantVector::get({C0, C4, C2, C6}); - EXPECT_FALSE(ShuffleVectorInst::isIdentityMask( - Transpose, - cast<FixedVectorType>(Transpose->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isSelectMask( - Transpose, - cast<FixedVectorType>(Transpose->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isReverseMask( - Transpose, - cast<FixedVectorType>(Transpose->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isSingleSourceMask( - Transpose, - cast<FixedVectorType>(Transpose->getType())->getNumElements())); - EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask( - Transpose, - cast<FixedVectorType>(Transpose->getType())->getNumElements())); - EXPECT_TRUE(ShuffleVectorInst::isTransposeMask( - Transpose, - cast<FixedVectorType>(Transpose->getType())->getNumElements())); + EXPECT_FALSE(ShuffleVectorInst::isIdentityMask(Transpose)); + EXPECT_FALSE(ShuffleVectorInst::isSelectMask(Transpose)); + EXPECT_FALSE(ShuffleVectorInst::isReverseMask(Transpose)); + EXPECT_FALSE(ShuffleVectorInst::isSingleSourceMask(Transpose)); + EXPECT_FALSE(ShuffleVectorInst::isZeroEltSplatMask(Transpose)); + EXPECT_TRUE(ShuffleVectorInst::isTransposeMask(Transpose)); // More tests to make sure the logic is/stays correct... - EXPECT_TRUE(ShuffleVectorInst::isIdentityMask( - ConstantVector::get({CU, C1, CU, C3}), 4)); - EXPECT_TRUE(ShuffleVectorInst::isIdentityMask( - ConstantVector::get({C4, CU, C6, CU}), 4)); - - EXPECT_TRUE(ShuffleVectorInst::isSelectMask( - ConstantVector::get({C4, C1, C6, CU}), 4)); - EXPECT_TRUE(ShuffleVectorInst::isSelectMask( - ConstantVector::get({CU, C1, C6, C3}), 4)); - - EXPECT_TRUE(ShuffleVectorInst::isReverseMask( - ConstantVector::get({C7, C6, CU, C4}), 4)); - EXPECT_TRUE(ShuffleVectorInst::isReverseMask( - ConstantVector::get({C3, CU, C1, CU}), 4)); - - EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask( - ConstantVector::get({C7, C5, CU, C7}), 4)); - EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask( - ConstantVector::get({C3, C0, CU, C3}), 4)); - - EXPECT_TRUE(ShuffleVectorInst::isZeroEltSplatMask( - ConstantVector::get({C4, CU, CU, C4}), 4)); - EXPECT_TRUE(ShuffleVectorInst::isZeroEltSplatMask( - ConstantVector::get({CU, C0, CU, C0}), 4)); - - EXPECT_TRUE(ShuffleVectorInst::isTransposeMask( - ConstantVector::get({C1, C5, C3, C7}), 4)); - EXPECT_TRUE( - ShuffleVectorInst::isTransposeMask(ConstantVector::get({C1, C3}), 2)); + EXPECT_TRUE(ShuffleVectorInst::isIdentityMask(ConstantVector::get({CU, C1, CU, C3}))); + EXPECT_TRUE(ShuffleVectorInst::isIdentityMask(ConstantVector::get({C4, CU, C6, CU}))); + + EXPECT_TRUE(ShuffleVectorInst::isSelectMask(ConstantVector::get({C4, C1, C6, CU}))); + EXPECT_TRUE(ShuffleVectorInst::isSelectMask(ConstantVector::get({CU, C1, C6, C3}))); + + EXPECT_TRUE(ShuffleVectorInst::isReverseMask(ConstantVector::get({C7, C6, CU, C4}))); + EXPECT_TRUE(ShuffleVectorInst::isReverseMask(ConstantVector::get({C3, CU, C1, CU}))); + + EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask(ConstantVector::get({C7, C5, CU, C7}))); + EXPECT_TRUE(ShuffleVectorInst::isSingleSourceMask(ConstantVector::get({C3, C0, CU, C3}))); + + EXPECT_TRUE(ShuffleVectorInst::isZeroEltSplatMask(ConstantVector::get({C4, CU, CU, C4}))); + EXPECT_TRUE(ShuffleVectorInst::isZeroEltSplatMask(ConstantVector::get({CU, C0, CU, C0}))); + + EXPECT_TRUE(ShuffleVectorInst::isTransposeMask(ConstantVector::get({C1, C5, C3, C7}))); + EXPECT_TRUE(ShuffleVectorInst::isTransposeMask(ConstantVector::get({C1, C3}))); // Nothing special about the values here - just re-using inputs to reduce code. Constant *V0 = ConstantVector::get({C0, C1, C2, C3}); |