diff options
author | Rasmus Munk Larsen <rmlarsen@google.com> | 2020-05-08 15:41:50 -0700 |
---|---|---|
committer | Rasmus Munk Larsen <rmlarsen@google.com> | 2020-05-08 15:41:50 -0700 |
commit | c1d944dd913d05180b7d2d1229072c9c52a11f29 (patch) | |
tree | 80a936a6403af21079445e000c897c7357c122bf /Eigen/src/Core/GenericPacketMath.h | |
parent | 5c4e19fbe7ea19d9d8b51243515f972237a49267 (diff) |
Remove packet ops pinsertfirst and pinsertlast that are only used in a single place, and can be replaced by other ops when constructing the first/final packet in linspaced_op_impl::packetOp.
I cannot measure any performance changes for SSE, AVX, or AVX512.
name old time/op new time/op delta
BM_LinSpace<float>/1 1.63ns ± 0% 1.63ns ± 0% ~ (p=0.762 n=5+5)
BM_LinSpace<float>/8 4.92ns ± 3% 4.89ns ± 3% ~ (p=0.421 n=5+5)
BM_LinSpace<float>/64 34.6ns ± 0% 34.6ns ± 0% ~ (p=0.841 n=5+5)
BM_LinSpace<float>/512 217ns ± 0% 217ns ± 0% ~ (p=0.421 n=5+5)
BM_LinSpace<float>/4k 1.68µs ± 0% 1.68µs ± 0% ~ (p=1.000 n=5+5)
BM_LinSpace<float>/32k 13.3µs ± 0% 13.3µs ± 0% ~ (p=0.905 n=5+4)
BM_LinSpace<float>/256k 107µs ± 0% 107µs ± 0% ~ (p=0.841 n=5+5)
BM_LinSpace<float>/1M 427µs ± 0% 427µs ± 0% ~ (p=0.690 n=5+5)
Diffstat (limited to 'Eigen/src/Core/GenericPacketMath.h')
-rw-r--r-- | Eigen/src/Core/GenericPacketMath.h | 28 |
1 files changed, 0 insertions, 28 deletions
diff --git a/Eigen/src/Core/GenericPacketMath.h b/Eigen/src/Core/GenericPacketMath.h index 0ed5d2cc5..449793372 100644 --- a/Eigen/src/Core/GenericPacketMath.h +++ b/Eigen/src/Core/GenericPacketMath.h @@ -727,34 +727,6 @@ pblend(const Selector<unpacket_traits<Packet>::size>& ifPacket, const Packet& th return ifPacket.select[0] ? thenPacket : elsePacket; } -/** \internal \returns \a a with the first coefficient replaced by the scalar b */ -template<typename Packet> EIGEN_DEVICE_FUNC inline Packet -pinsertfirst(const Packet& a, typename unpacket_traits<Packet>::type b) -{ - // Default implementation based on pblend. - // It must be specialized for higher performance. - Selector<unpacket_traits<Packet>::size> mask; - mask.select[0] = true; - // This for loop should be optimized away by the compiler. - for(Index i=1; i<unpacket_traits<Packet>::size; ++i) - mask.select[i] = false; - return pblend(mask, pset1<Packet>(b), a); -} - -/** \internal \returns \a a with the last coefficient replaced by the scalar b */ -template<typename Packet> EIGEN_DEVICE_FUNC inline Packet -pinsertlast(const Packet& a, typename unpacket_traits<Packet>::type b) -{ - // Default implementation based on pblend. - // It must be specialized for higher performance. - Selector<unpacket_traits<Packet>::size> mask; - // This for loop should be optimized away by the compiler. - for(Index i=0; i<unpacket_traits<Packet>::size-1; ++i) - mask.select[i] = false; - mask.select[unpacket_traits<Packet>::size-1] = true; - return pblend(mask, pset1<Packet>(b), a); -} - /*************************************************************************** * Some generic implementations to be used by implementors ***************************************************************************/ |