mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 19:59:05 +08:00
workaround ICC compilation error with -strict-ansi
This commit is contained in:
parent
d615d39af0
commit
87f2af5930
@ -413,7 +413,7 @@ struct assign_impl<Derived1, Derived2, LinearVectorizedTraversal, NoUnrolling, V
|
|||||||
srcAlignment = assign_traits<Derived1,Derived2>::JointAlignment
|
srcAlignment = assign_traits<Derived1,Derived2>::JointAlignment
|
||||||
};
|
};
|
||||||
const Index alignedStart = assign_traits<Derived1,Derived2>::DstIsAligned ? 0
|
const Index alignedStart = assign_traits<Derived1,Derived2>::DstIsAligned ? 0
|
||||||
: first_aligned(&dst.coeffRef(0), size);
|
: internal::first_aligned(&dst.coeffRef(0), size);
|
||||||
const Index alignedEnd = alignedStart + ((size-alignedStart)/packetSize)*packetSize;
|
const Index alignedEnd = alignedStart + ((size-alignedStart)/packetSize)*packetSize;
|
||||||
|
|
||||||
unaligned_assign_impl<assign_traits<Derived1,Derived2>::DstIsAligned!=0>::run(src,dst,0,alignedStart);
|
unaligned_assign_impl<assign_traits<Derived1,Derived2>::DstIsAligned!=0>::run(src,dst,0,alignedStart);
|
||||||
@ -464,7 +464,7 @@ struct assign_impl<Derived1, Derived2, SliceVectorizedTraversal, NoUnrolling, Ve
|
|||||||
const Index outerSize = dst.outerSize();
|
const Index outerSize = dst.outerSize();
|
||||||
const Index alignedStep = alignable ? (packetSize - dst.outerStride() % packetSize) & packetAlignedMask : 0;
|
const Index alignedStep = alignable ? (packetSize - dst.outerStride() % packetSize) & packetAlignedMask : 0;
|
||||||
Index alignedStart = ((!alignable) || assign_traits<Derived1,Derived2>::DstIsAligned) ? 0
|
Index alignedStart = ((!alignable) || assign_traits<Derived1,Derived2>::DstIsAligned) ? 0
|
||||||
: first_aligned(&dst.coeffRef(0,0), innerSize);
|
: internal::first_aligned(&dst.coeffRef(0,0), innerSize);
|
||||||
|
|
||||||
for(Index outer = 0; outer < outerSize; ++outer)
|
for(Index outer = 0; outer < outerSize; ++outer)
|
||||||
{
|
{
|
||||||
|
@ -214,7 +214,7 @@ struct redux_impl<Func, Derived, LinearVectorizedTraversal, NoUnrolling>
|
|||||||
const Index size = mat.size();
|
const Index size = mat.size();
|
||||||
eigen_assert(size && "you are using an empty matrix");
|
eigen_assert(size && "you are using an empty matrix");
|
||||||
const Index packetSize = packet_traits<Scalar>::size;
|
const Index packetSize = packet_traits<Scalar>::size;
|
||||||
const Index alignedStart = first_aligned(mat);
|
const Index alignedStart = internal::first_aligned(mat);
|
||||||
enum {
|
enum {
|
||||||
alignment = bool(Derived::Flags & DirectAccessBit) || bool(Derived::Flags & AlignedBit)
|
alignment = bool(Derived::Flags & DirectAccessBit) || bool(Derived::Flags & AlignedBit)
|
||||||
? Aligned : Unaligned
|
? Aligned : Unaligned
|
||||||
|
@ -99,7 +99,7 @@ EIGEN_DONT_INLINE static void run(
|
|||||||
|
|
||||||
// How many coeffs of the result do we have to skip to be aligned.
|
// How many coeffs of the result do we have to skip to be aligned.
|
||||||
// Here we assume data are at least aligned on the base scalar type.
|
// Here we assume data are at least aligned on the base scalar type.
|
||||||
Index alignedStart = first_aligned(res,size);
|
Index alignedStart = internal::first_aligned(res,size);
|
||||||
Index alignedSize = ResPacketSize>1 ? alignedStart + ((size-alignedStart) & ~ResPacketAlignedMask) : 0;
|
Index alignedSize = ResPacketSize>1 ? alignedStart + ((size-alignedStart) & ~ResPacketAlignedMask) : 0;
|
||||||
const Index peeledSize = peels>1 ? alignedStart + ((alignedSize-alignedStart) & ~PeelAlignedMask) : alignedStart;
|
const Index peeledSize = peels>1 ? alignedStart + ((alignedSize-alignedStart) & ~PeelAlignedMask) : alignedStart;
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ EIGEN_DONT_INLINE static void run(
|
|||||||
: FirstAligned;
|
: FirstAligned;
|
||||||
|
|
||||||
// we cannot assume the first element is aligned because of sub-matrices
|
// we cannot assume the first element is aligned because of sub-matrices
|
||||||
const Index lhsAlignmentOffset = first_aligned(lhs,size);
|
const Index lhsAlignmentOffset = internal::first_aligned(lhs,size);
|
||||||
|
|
||||||
// find how many columns do we have to skip to be aligned with the result (if possible)
|
// find how many columns do we have to skip to be aligned with the result (if possible)
|
||||||
Index skipColumns = 0;
|
Index skipColumns = 0;
|
||||||
@ -351,7 +351,7 @@ EIGEN_DONT_INLINE static void run(
|
|||||||
// How many coeffs of the result do we have to skip to be aligned.
|
// How many coeffs of the result do we have to skip to be aligned.
|
||||||
// Here we assume data are at least aligned on the base scalar type
|
// Here we assume data are at least aligned on the base scalar type
|
||||||
// if that's not the case then vectorization is discarded, see below.
|
// if that's not the case then vectorization is discarded, see below.
|
||||||
Index alignedStart = first_aligned(rhs, depth);
|
Index alignedStart = internal::first_aligned(rhs, depth);
|
||||||
Index alignedSize = RhsPacketSize>1 ? alignedStart + ((depth-alignedStart) & ~RhsPacketAlignedMask) : 0;
|
Index alignedSize = RhsPacketSize>1 ? alignedStart + ((depth-alignedStart) & ~RhsPacketAlignedMask) : 0;
|
||||||
const Index peeledSize = peels>1 ? alignedStart + ((alignedSize-alignedStart) & ~PeelAlignedMask) : alignedStart;
|
const Index peeledSize = peels>1 ? alignedStart + ((alignedSize-alignedStart) & ~PeelAlignedMask) : alignedStart;
|
||||||
|
|
||||||
@ -361,7 +361,7 @@ EIGEN_DONT_INLINE static void run(
|
|||||||
: FirstAligned;
|
: FirstAligned;
|
||||||
|
|
||||||
// we cannot assume the first element is aligned because of sub-matrices
|
// we cannot assume the first element is aligned because of sub-matrices
|
||||||
const Index lhsAlignmentOffset = first_aligned(lhs,depth);
|
const Index lhsAlignmentOffset = internal::first_aligned(lhs,depth);
|
||||||
|
|
||||||
// find how many rows do we have to skip to be aligned with rhs (if possible)
|
// find how many rows do we have to skip to be aligned with rhs (if possible)
|
||||||
Index skipRows = 0;
|
Index skipRows = 0;
|
||||||
|
@ -326,7 +326,7 @@ void /*EIGEN_DONT_INLINE*/ apply_rotation_in_the_plane(VectorX& _x, VectorY& _y,
|
|||||||
// both vectors are sequentially stored in memory => vectorization
|
// both vectors are sequentially stored in memory => vectorization
|
||||||
enum { Peeling = 2 };
|
enum { Peeling = 2 };
|
||||||
|
|
||||||
Index alignedStart = first_aligned(y, size);
|
Index alignedStart = internal::first_aligned(y, size);
|
||||||
Index alignedEnd = alignedStart + ((size-alignedStart)/PacketSize)*PacketSize;
|
Index alignedEnd = alignedStart + ((size-alignedStart)/PacketSize)*PacketSize;
|
||||||
|
|
||||||
const Packet pc = pset1<Packet>(j.c());
|
const Packet pc = pset1<Packet>(j.c());
|
||||||
@ -344,7 +344,7 @@ void /*EIGEN_DONT_INLINE*/ apply_rotation_in_the_plane(VectorX& _x, VectorY& _y,
|
|||||||
Scalar* EIGEN_RESTRICT px = x + alignedStart;
|
Scalar* EIGEN_RESTRICT px = x + alignedStart;
|
||||||
Scalar* EIGEN_RESTRICT py = y + alignedStart;
|
Scalar* EIGEN_RESTRICT py = y + alignedStart;
|
||||||
|
|
||||||
if(first_aligned(x, size)==alignedStart)
|
if(internal::first_aligned(x, size)==alignedStart)
|
||||||
{
|
{
|
||||||
for(Index i=alignedStart; i<alignedEnd; i+=PacketSize)
|
for(Index i=alignedStart; i<alignedEnd; i+=PacketSize)
|
||||||
{
|
{
|
||||||
|
@ -194,7 +194,7 @@ static void verify_impl(bool condition, const char *testname, const char *file,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define VERIFY(a) verify_impl(a, g_test_stack.back().c_str(), __FILE__, __LINE__, EI_PP_MAKE_STRING(a))
|
#define VERIFY(a) ::verify_impl(a, g_test_stack.back().c_str(), __FILE__, __LINE__, EI_PP_MAKE_STRING(a))
|
||||||
|
|
||||||
#define VERIFY_IS_EQUAL(a, b) VERIFY(test_is_equal(a, b))
|
#define VERIFY_IS_EQUAL(a, b) VERIFY(test_is_equal(a, b))
|
||||||
#define VERIFY_IS_APPROX(a, b) VERIFY(test_isApprox(a, b))
|
#define VERIFY_IS_APPROX(a, b) VERIFY(test_isApprox(a, b))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user