diff options
author | Rasmus Munk Larsen <rmlarsen@google.com> | 2020-02-25 01:07:15 +0000 |
---|---|---|
committer | Rasmus Munk Larsen <rmlarsen@google.com> | 2020-02-25 01:07:15 +0000 |
commit | d7a42eade60ba64821c7879859837a4ea70ba026 (patch) | |
tree | 517be95e3ced351acb0feb741adb0824bc92f3ec /Eigen/src/Core/util | |
parent | 6ac37768a9f373484d73c2fe1f058ae7d7557059 (diff) |
Revert "do not pick full-packet if it'd result in more operations"
This reverts commit e9cc0cd353803a818204e48054bd89699b84e6c6
Diffstat (limited to 'Eigen/src/Core/util')
-rw-r--r-- | Eigen/src/Core/util/XprHelper.h | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/Eigen/src/Core/util/XprHelper.h b/Eigen/src/Core/util/XprHelper.h index cfceb7b18..22f8bdd6c 100644 --- a/Eigen/src/Core/util/XprHelper.h +++ b/Eigen/src/Core/util/XprHelper.h @@ -194,12 +194,8 @@ template<typename T> struct unpacket_traits }; }; -// If we vectorize regardless of alignment, pick the full-sized packet if: -// * The size is large enough; -// * 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. +// If we vectorize regardless of alignment, always pick the full-sized packet, +// if we have enough data to process. // // Otherwise, pick the packet size we know is going to work with the alignment // of the given data. See @@ -207,15 +203,7 @@ template<typename T> struct unpacket_traits // information. #if EIGEN_UNALIGNED_VECTORIZE template<int Size, typename PacketType, - bool Stop = - 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> + bool Stop = Size==Dynamic || Size >= unpacket_traits<PacketType>::size || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value> #else template<int Size, typename PacketType, bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value> |