From f574cb9b18a3e9ddf09ec80a3afb0270649d61a5 Mon Sep 17 00:00:00 2001 From: Rasmus Munk Larsen <4643818-rmlarsen1@users.noreply.gitlab.com> Date: Sun, 22 Mar 2026 22:12:57 -0700 Subject: [PATCH] Fix vectorization_logic test for generic clang backend libeigen/eigen!2333 Co-authored-by: Rasmus Munk Larsen --- test/vectorization_logic.cpp | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/test/vectorization_logic.cpp b/test/vectorization_logic.cpp index 49f93fc39..ab83d7e90 100644 --- a/test/vectorization_logic.cpp +++ b/test/vectorization_logic.cpp @@ -470,31 +470,31 @@ EIGEN_DECLARE_TEST(vectorization_logic) { CALL_SUBTEST(vectorization_logic_half >::run()); CALL_SUBTEST(vectorization_logic_half >::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::Vectorizable) { - VERIFY(test_assign(Matrix(), Matrix() + Matrix(), - internal::packet_traits::Vectorizable && EIGEN_UNALIGNED_VECTORIZE - ? LinearVectorizedTraversal - : LinearTraversal, - CompleteUnrolling)); + constexpr int kFloatBestPacketSize3x3 = + internal::unpacket_traits::type>::size; + VERIFY(test_assign( + Matrix(), Matrix() + Matrix(), + EIGEN_UNALIGNED_VECTORIZE && kFloatBestPacketSize3x3 <= 9 ? LinearVectorizedTraversal : LinearTraversal, + CompleteUnrolling)); - VERIFY(test_redux(Matrix(), - internal::packet_traits::Vectorizable && EIGEN_UNALIGNED_VECTORIZE - ? LinearVectorizedTraversal - : LinearTraversal, + VERIFY(test_redux(Matrix(), EIGEN_UNALIGNED_VECTORIZE ? LinearVectorizedTraversal : LinearTraversal, CompleteUnrolling)); } if (internal::packet_traits::Vectorizable) { - VERIFY(test_assign(Matrix(), Matrix() + Matrix(), - internal::packet_traits::Vectorizable && EIGEN_UNALIGNED_VECTORIZE - ? LinearVectorizedTraversal - : LinearTraversal, - CompleteUnrolling)); + constexpr int kDoubleBestPacketSize3x3 = + internal::unpacket_traits::type>::size; + VERIFY(test_assign( + Matrix(), Matrix() + Matrix(), + EIGEN_UNALIGNED_VECTORIZE && kDoubleBestPacketSize3x3 <= 9 ? LinearVectorizedTraversal : LinearTraversal, + CompleteUnrolling)); - VERIFY(test_redux(Matrix(), - internal::packet_traits::Vectorizable && EIGEN_UNALIGNED_VECTORIZE - ? LinearVectorizedTraversal - : LinearTraversal, + VERIFY(test_redux(Matrix(), EIGEN_UNALIGNED_VECTORIZE ? LinearVectorizedTraversal : LinearTraversal, CompleteUnrolling)); } #endif // EIGEN_VECTORIZE