mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Fix vectorization_logic test for generic clang backend
libeigen/eigen!2333 Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
@@ -470,31 +470,31 @@ EIGEN_DECLARE_TEST(vectorization_logic) {
|
|||||||
CALL_SUBTEST(vectorization_logic_half<std::complex<float> >::run());
|
CALL_SUBTEST(vectorization_logic_half<std::complex<float> >::run());
|
||||||
CALL_SUBTEST(vectorization_logic_half<std::complex<double> >::run());
|
CALL_SUBTEST(vectorization_logic_half<std::complex<double> >::run());
|
||||||
|
|
||||||
|
// For backends without sub-packet types (e.g. the generic clang backend),
|
||||||
|
// find_best_packet may return a packet larger than the matrix, making
|
||||||
|
// MayLinearVectorize false in the assignment path (which requires
|
||||||
|
// SizeAtCompileTime >= PacketSize). The redux path has no such constraint.
|
||||||
if (internal::packet_traits<float>::Vectorizable) {
|
if (internal::packet_traits<float>::Vectorizable) {
|
||||||
VERIFY(test_assign(Matrix<float, 3, 3>(), Matrix<float, 3, 3>() + Matrix<float, 3, 3>(),
|
constexpr int kFloatBestPacketSize3x3 =
|
||||||
internal::packet_traits<float>::Vectorizable && EIGEN_UNALIGNED_VECTORIZE
|
internal::unpacket_traits<typename internal::find_best_packet<float, 9>::type>::size;
|
||||||
? LinearVectorizedTraversal
|
VERIFY(test_assign(
|
||||||
: LinearTraversal,
|
Matrix<float, 3, 3>(), Matrix<float, 3, 3>() + Matrix<float, 3, 3>(),
|
||||||
CompleteUnrolling));
|
EIGEN_UNALIGNED_VECTORIZE && kFloatBestPacketSize3x3 <= 9 ? LinearVectorizedTraversal : LinearTraversal,
|
||||||
|
CompleteUnrolling));
|
||||||
|
|
||||||
VERIFY(test_redux(Matrix<float, 5, 2>(),
|
VERIFY(test_redux(Matrix<float, 5, 2>(), EIGEN_UNALIGNED_VECTORIZE ? LinearVectorizedTraversal : LinearTraversal,
|
||||||
internal::packet_traits<float>::Vectorizable && EIGEN_UNALIGNED_VECTORIZE
|
|
||||||
? LinearVectorizedTraversal
|
|
||||||
: LinearTraversal,
|
|
||||||
CompleteUnrolling));
|
CompleteUnrolling));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (internal::packet_traits<double>::Vectorizable) {
|
if (internal::packet_traits<double>::Vectorizable) {
|
||||||
VERIFY(test_assign(Matrix<double, 3, 3>(), Matrix<double, 3, 3>() + Matrix<double, 3, 3>(),
|
constexpr int kDoubleBestPacketSize3x3 =
|
||||||
internal::packet_traits<double>::Vectorizable && EIGEN_UNALIGNED_VECTORIZE
|
internal::unpacket_traits<typename internal::find_best_packet<double, 9>::type>::size;
|
||||||
? LinearVectorizedTraversal
|
VERIFY(test_assign(
|
||||||
: LinearTraversal,
|
Matrix<double, 3, 3>(), Matrix<double, 3, 3>() + Matrix<double, 3, 3>(),
|
||||||
CompleteUnrolling));
|
EIGEN_UNALIGNED_VECTORIZE && kDoubleBestPacketSize3x3 <= 9 ? LinearVectorizedTraversal : LinearTraversal,
|
||||||
|
CompleteUnrolling));
|
||||||
|
|
||||||
VERIFY(test_redux(Matrix<double, 7, 3>(),
|
VERIFY(test_redux(Matrix<double, 7, 3>(), EIGEN_UNALIGNED_VECTORIZE ? LinearVectorizedTraversal : LinearTraversal,
|
||||||
internal::packet_traits<double>::Vectorizable && EIGEN_UNALIGNED_VECTORIZE
|
|
||||||
? LinearVectorizedTraversal
|
|
||||||
: LinearTraversal,
|
|
||||||
CompleteUnrolling));
|
CompleteUnrolling));
|
||||||
}
|
}
|
||||||
#endif // EIGEN_VECTORIZE
|
#endif // EIGEN_VECTORIZE
|
||||||
|
|||||||
Reference in New Issue
Block a user