mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-01-24 14:45:14 +08:00
Revert "do not pick full-packet if it'd result in more operations"
This reverts commit e9cc0cd353
This commit is contained in:
parent
6ac37768a9
commit
d7a42eade6
@ -194,12 +194,8 @@ template<typename T> struct unpacket_traits
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
// If we vectorize regardless of alignment, pick the full-sized packet if:
|
// If we vectorize regardless of alignment, always pick the full-sized packet,
|
||||||
// * The size is large enough;
|
// if we have enough data to process.
|
||||||
// * Picking it will result in less operations than picking the half size.
|
|
||||||
// Consider the case where the size is 12, the full packet is 8, and the
|
|
||||||
// half packet is 4. If we pick the full packet we'd have 1 + 4 operations,
|
|
||||||
// but only 3 operations if we pick the half-packet.
|
|
||||||
//
|
//
|
||||||
// Otherwise, pick the packet size we know is going to work with the alignment
|
// Otherwise, pick the packet size we know is going to work with the alignment
|
||||||
// of the given data. See
|
// of the given data. See
|
||||||
@ -207,15 +203,7 @@ template<typename T> struct unpacket_traits
|
|||||||
// information.
|
// information.
|
||||||
#if EIGEN_UNALIGNED_VECTORIZE
|
#if EIGEN_UNALIGNED_VECTORIZE
|
||||||
template<int Size, typename PacketType,
|
template<int Size, typename PacketType,
|
||||||
bool Stop =
|
bool Stop = Size==Dynamic || Size >= unpacket_traits<PacketType>::size || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
|
||||||
Size==Dynamic ||
|
|
||||||
(Size >= unpacket_traits<PacketType>::size &&
|
|
||||||
// If the packet size is 1 we're always good -- it will always divide things perfectly.
|
|
||||||
// We have this check since otherwise 1/2 would be 0 in the division below.
|
|
||||||
(unpacket_traits<PacketType>::size == 1 ||
|
|
||||||
(Size/unpacket_traits<PacketType>::size + Size%unpacket_traits<PacketType>::size) <=
|
|
||||||
(Size/(unpacket_traits<PacketType>::size/2) + Size%(unpacket_traits<PacketType>::size/2)))) ||
|
|
||||||
is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
|
|
||||||
#else
|
#else
|
||||||
template<int Size, typename PacketType,
|
template<int Size, typename PacketType,
|
||||||
bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
|
bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
|
||||||
|
Loading…
Reference in New Issue
Block a user