aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/IR/InstructionsTest.cpp
diff options
context:
space:
mode:
authorArthur Eubanks <aeubanks@google.com>2023-10-04 14:31:59 -0700
committerArthur Eubanks <aeubanks@google.com>2023-10-04 14:37:16 -0700
commit07389535a702863248ee052bb406c93c814c3d03 (patch)
tree511b43bf26600d48ba5f9bdaff113f362e24e297 /llvm/unittests/IR/InstructionsTest.cpp
parent28245b4ecb2baa74ab97320d6bf4ddcfe3a43429 (diff)
downloadllvm-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.cpp178
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});