mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-20 08:39:37 +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)
|
(PacketSize==8 ? 6 : PacketSize==4 ? 2 : PacketSize==2 ? ((Matrix11::Flags&RowMajorBit)?3:2) : /*PacketSize==1 ?*/ 3)
|
||||||
> Matrix3;
|
> Matrix3;
|
||||||
|
|
||||||
|
#if !EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT
|
||||||
VERIFY(test_assign(Vector1(),Vector1(),
|
VERIFY(test_assign(Vector1(),Vector1(),
|
||||||
InnerVectorizedTraversal,CompleteUnrolling));
|
InnerVectorizedTraversal,CompleteUnrolling));
|
||||||
VERIFY(test_assign(Vector1(),Vector1()+Vector1(),
|
VERIFY(test_assign(Vector1(),Vector1()+Vector1(),
|
||||||
@ -174,24 +175,6 @@ template<typename Scalar, bool Enable = internal::packet_traits<Scalar>::Vectori
|
|||||||
DefaultTraversal,CompleteUnrolling));
|
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(),
|
VERIFY(test_redux(Matrix3(),
|
||||||
LinearVectorizedTraversal,CompleteUnrolling));
|
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),
|
VERIFY(test_redux(Matrix44r().template block<1,2*PacketSize>(2,1),
|
||||||
LinearVectorizedTraversal,CompleteUnrolling));
|
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
|
#ifdef EIGEN_VECTORIZE
|
||||||
|
|
||||||
vectorization_logic<float>::run();
|
CALL_SUBTEST( vectorization_logic<float>::run() );
|
||||||
vectorization_logic<double>::run();
|
CALL_SUBTEST( vectorization_logic<double>::run() );
|
||||||
vectorization_logic<std::complex<float> >::run();
|
CALL_SUBTEST( vectorization_logic<std::complex<float> >::run() );
|
||||||
vectorization_logic<std::complex<double> >::run();
|
CALL_SUBTEST( vectorization_logic<std::complex<double> >::run() );
|
||||||
|
|
||||||
if(internal::packet_traits<float>::Vectorizable)
|
if(internal::packet_traits<float>::Vectorizable)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user