mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-23 01:59:38 +08:00
fix vectorization_logic when EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT
This commit is contained in:
parent
f2837aebc4
commit
501bc602ec
@ -124,6 +124,7 @@ template<typename Scalar, bool Enable = internal::packet_traits<Scalar>::Vectori
|
||||
(PacketSize==8 ? 6 : PacketSize==4 ? 2 : PacketSize==2 ? ((Matrix11::Flags&RowMajorBit)?3:2) : /*PacketSize==1 ?*/ 3)
|
||||
> Matrix3;
|
||||
|
||||
#if !EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT
|
||||
VERIFY(test_assign(Vector1(),Vector1(),
|
||||
InnerVectorizedTraversal,CompleteUnrolling));
|
||||
VERIFY(test_assign(Vector1(),Vector1()+Vector1(),
|
||||
@ -174,24 +175,6 @@ template<typename Scalar, bool Enable = internal::packet_traits<Scalar>::Vectori
|
||||
DefaultTraversal,CompleteUnrolling));
|
||||
}
|
||||
|
||||
VERIFY(test_assign(MatrixXX(10,10),MatrixXX(20,20).block(10,10,2,3),
|
||||
SliceVectorizedTraversal,NoUnrolling));
|
||||
|
||||
VERIFY((test_assign<
|
||||
Map<Matrix22, Aligned, OuterStride<3*PacketSize> >,
|
||||
Matrix22
|
||||
>(InnerVectorizedTraversal,CompleteUnrolling)));
|
||||
|
||||
VERIFY((test_assign<
|
||||
Map<Matrix22, Aligned, InnerStride<3*PacketSize> >,
|
||||
Matrix22
|
||||
>(DefaultTraversal,CompleteUnrolling)));
|
||||
|
||||
VERIFY((test_assign(Matrix11(), Matrix11()*Matrix11(), InnerVectorizedTraversal, CompleteUnrolling)));
|
||||
|
||||
VERIFY(test_redux(VectorX(10),
|
||||
LinearVectorizedTraversal,NoUnrolling));
|
||||
|
||||
VERIFY(test_redux(Matrix3(),
|
||||
LinearVectorizedTraversal,CompleteUnrolling));
|
||||
|
||||
@ -206,6 +189,27 @@ template<typename Scalar, bool Enable = internal::packet_traits<Scalar>::Vectori
|
||||
|
||||
VERIFY(test_redux(Matrix44r().template block<1,2*PacketSize>(2,1),
|
||||
LinearVectorizedTraversal,CompleteUnrolling));
|
||||
|
||||
VERIFY((test_assign<
|
||||
Map<Matrix22, Aligned, OuterStride<3*PacketSize> >,
|
||||
Matrix22
|
||||
>(InnerVectorizedTraversal,CompleteUnrolling)));
|
||||
|
||||
VERIFY((test_assign<
|
||||
Map<Matrix22, Aligned, InnerStride<3*PacketSize> >,
|
||||
Matrix22
|
||||
>(DefaultTraversal,CompleteUnrolling)));
|
||||
|
||||
VERIFY((test_assign(Matrix11(), Matrix11()*Matrix11(), InnerVectorizedTraversal, CompleteUnrolling)));
|
||||
#endif
|
||||
|
||||
VERIFY(test_assign(MatrixXX(10,10),MatrixXX(20,20).block(10,10,2,3),
|
||||
SliceVectorizedTraversal,NoUnrolling));
|
||||
|
||||
VERIFY(test_redux(VectorX(10),
|
||||
LinearVectorizedTraversal,NoUnrolling));
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
@ -219,10 +223,10 @@ void test_vectorization_logic()
|
||||
|
||||
#ifdef EIGEN_VECTORIZE
|
||||
|
||||
vectorization_logic<float>::run();
|
||||
vectorization_logic<double>::run();
|
||||
vectorization_logic<std::complex<float> >::run();
|
||||
vectorization_logic<std::complex<double> >::run();
|
||||
CALL_SUBTEST( vectorization_logic<float>::run() );
|
||||
CALL_SUBTEST( vectorization_logic<double>::run() );
|
||||
CALL_SUBTEST( vectorization_logic<std::complex<float> >::run() );
|
||||
CALL_SUBTEST( vectorization_logic<std::complex<double> >::run() );
|
||||
|
||||
if(internal::packet_traits<float>::Vectorizable)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user