Small packet math cleanup.

This commit is contained in:
Rasmus Munk Larsen 2023-04-04 16:14:32 +00:00
parent 9b48d10215
commit df1049ddf4
17 changed files with 29 additions and 70 deletions

View File

@ -33,7 +33,6 @@ template<> struct packet_traits<std::complex<float> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 1,
HasAdd = 1,
HasSub = 1,
@ -201,7 +200,6 @@ template<> struct packet_traits<std::complex<double> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 0,
size = 2,
HasHalfPacket = 1,
HasAdd = 1,
HasSub = 1,

View File

@ -66,7 +66,6 @@ template<> struct packet_traits<float> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 1,
HasCmp = 1,
HasDiv = 1,
@ -102,7 +101,6 @@ template<> struct packet_traits<double> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size=4,
HasHalfPacket = 1,
HasCmp = 1,
HasDiv = 1,
@ -128,7 +126,6 @@ struct packet_traits<Eigen::half> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 0,
HasCmp = 1,
HasAdd = 1,
@ -172,7 +169,6 @@ struct packet_traits<bfloat16> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 0,
HasCmp = 1,
HasAdd = 1,
@ -873,6 +869,9 @@ template<> EIGEN_STRONG_INLINE Packet4d pround<Packet4d>(const Packet4d& a)
template<> EIGEN_STRONG_INLINE Packet8f pselect<Packet8f>(const Packet8f& mask, const Packet8f& a, const Packet8f& b)
{ return _mm256_blendv_ps(b,a,mask); }
template<> EIGEN_STRONG_INLINE Packet8i pselect<Packet8i>(const Packet8i& mask, const Packet8i& a, const Packet8i& b)
{ return _mm256_castps_si256(_mm256_blendv_ps(_mm256_castsi256_ps(b), _mm256_castsi256_ps(a), _mm256_castsi256_ps(mask))); }
template<> EIGEN_STRONG_INLINE Packet4d pselect<Packet4d>(const Packet4d& mask, const Packet4d& a, const Packet4d& b)
{ return _mm256_blendv_pd(b,a,mask); }

View File

@ -32,7 +32,6 @@ template<> struct packet_traits<std::complex<float> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 1,
HasAdd = 1,
HasSub = 1,
@ -185,7 +184,6 @@ template<> struct packet_traits<std::complex<double> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 0,
size = 4,
HasHalfPacket = 1,
HasAdd = 1,
HasSub = 1,

View File

@ -63,7 +63,6 @@ struct packet_traits<half> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 16,
HasHalfPacket = 1,
HasCmp = 1,
HasAdd = 1,
@ -89,7 +88,7 @@ struct packet_traits<half> : default_packet_traits {
HasCos = EIGEN_FAST_MATH,
HasTanh = EIGEN_FAST_MATH,
HasErf = EIGEN_FAST_MATH,
HasBlend = 0,
HasBlend = 0,
HasRound = 1,
HasFloor = 1,
HasCeil = 1,
@ -106,13 +105,12 @@ template<> struct packet_traits<float> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 16,
HasHalfPacket = 1,
HasAbs = 1,
HasMin = 1,
HasMax = 1,
HasConj = 1,
HasBlend = 0,
HasMin = 1,
HasMax = 1,
HasConj = 1,
HasBlend = 1,
HasSin = EIGEN_FAST_MATH,
HasCos = EIGEN_FAST_MATH,
HasACos = 1,
@ -146,7 +144,7 @@ template<> struct packet_traits<double> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 1,
HasBlend = 1,
HasSqrt = 1,
HasRsqrt = 1,
HasLog = 1,
@ -168,6 +166,7 @@ template<> struct packet_traits<int> : default_packet_traits
enum {
Vectorizable = 1,
AlignedOnScalar = 1,
HasBlend = 0,
HasCmp = 1,
HasDiv = 1,
size=16
@ -455,11 +454,18 @@ template <>
EIGEN_DEVICE_FUNC inline Packet16f pselect(const Packet16f& mask,
const Packet16f& a,
const Packet16f& b) {
__mmask16 mask16 = _mm512_cmp_epi32_mask(
_mm512_castps_si512(mask), _mm512_setzero_epi32(), _MM_CMPINT_EQ);
__mmask16 mask16 = _mm512_cmpeq_epi32_mask(_mm512_castps_si512(mask), _mm512_setzero_epi32());
return _mm512_mask_blend_ps(mask16, a, b);
}
template <>
EIGEN_DEVICE_FUNC inline Packet16i pselect(const Packet16i& mask,
const Packet16i& a,
const Packet16i& b) {
__mmask16 mask16 = _mm512_cmpeq_epi32_mask(mask, _mm512_setzero_epi32());
return _mm512_mask_blend_epi32(mask16, a, b);
}
template <>
EIGEN_DEVICE_FUNC inline Packet8d pselect(const Packet8d& mask,
const Packet8d& a,
@ -1847,11 +1853,16 @@ EIGEN_DEVICE_FUNC inline void ptranspose(PacketBlock<Packet16i, 4>& kernel) {
}
template <>
EIGEN_STRONG_INLINE Packet16f pblend(const Selector<16>& /*ifPacket*/,
const Packet16f& /*thenPacket*/,
const Packet16f& /*elsePacket*/) {
eigen_assert(false && "To be implemented");
return Packet16f();
EIGEN_STRONG_INLINE Packet16f pblend(const Selector<16>& ifPacket,
const Packet16f& thenPacket,
const Packet16f& elsePacket) {
__mmask16 m = (ifPacket.select[0]) | (ifPacket.select[1] << 1) | (ifPacket.select[2] << 2) |
(ifPacket.select[3] << 3) | (ifPacket.select[4] << 4) | (ifPacket.select[5] << 5) |
(ifPacket.select[6] << 6) | (ifPacket.select[7] << 7) | (ifPacket.select[8] << 8) |
(ifPacket.select[9] << 9) | (ifPacket.select[10] << 10) | (ifPacket.select[11] << 11) |
(ifPacket.select[12] << 12) | (ifPacket.select[13] << 13) | (ifPacket.select[14] << 14) |
(ifPacket.select[15] << 15);
return _mm512_mask_blend_ps(m, elsePacket, thenPacket);
}
template <>
EIGEN_STRONG_INLINE Packet8d pblend(const Selector<8>& ifPacket,
@ -2295,7 +2306,6 @@ struct packet_traits<bfloat16> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 16,
HasHalfPacket = 1,
HasBlend = 0,
HasInsert = 1,
HasSin = EIGEN_FAST_MATH,

View File

@ -91,7 +91,6 @@ template<> struct packet_traits<std::complex<float> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -360,7 +359,6 @@ template<> struct packet_traits<std::complex<double> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 0,
size = 1,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,

View File

@ -157,7 +157,6 @@ struct packet_traits<float> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 1,
HasAdd = 1,
HasSub = 1,
@ -206,7 +205,6 @@ struct packet_traits<bfloat16> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -250,7 +248,6 @@ struct packet_traits<int> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -274,7 +271,6 @@ struct packet_traits<short int> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -293,7 +289,6 @@ struct packet_traits<unsigned short int> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -312,7 +307,6 @@ struct packet_traits<signed char> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 16,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -331,7 +325,6 @@ struct packet_traits<unsigned char> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 16,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -2710,7 +2703,6 @@ template<> struct packet_traits<double> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size=2,
HasHalfPacket = 1,
HasAdd = 1,
HasSub = 1,

View File

@ -46,7 +46,6 @@ template<> struct packet_traits<float> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size=4,
HasHalfPacket = 0,
HasDiv = 1,
HasSin = 0,
@ -82,7 +81,6 @@ template<> struct packet_traits<double> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size=2,
HasHalfPacket = 0,
HasDiv = 1,
HasLog = 1,
@ -534,7 +532,6 @@ template<> struct packet_traits<Eigen::half> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size=8,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
HasMul = 1,

View File

@ -107,7 +107,6 @@ struct packet_traits<std::complex<float> > : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -422,7 +421,6 @@ struct packet_traits<std::complex<double> > : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 0,
size = 1,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,

View File

@ -80,7 +80,6 @@ struct packet_traits<float> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 0, // Packet2f intrinsics not implemented yet
// FIXME check the Has*
HasDiv = 1,
HasSin = EIGEN_FAST_MATH,
@ -106,7 +105,6 @@ struct packet_traits<int32_t> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 0, // Packet2i intrinsics not implemented yet
// FIXME check the Has*
HasDiv = 1,
HasBlend = 1
@ -850,7 +848,6 @@ struct packet_traits<double> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket = 0,
// FIXME check the Has*
HasDiv = 1,
HasExp = 1,

View File

@ -59,7 +59,6 @@ template<> struct packet_traits<std::complex<float> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket = 1,
HasAdd = 1,
HasSub = 1,
@ -400,7 +399,6 @@ template<> struct packet_traits<std::complex<double> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 0,
size = 1,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,

View File

@ -187,7 +187,6 @@ struct packet_traits<float> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 1,
HasCmp = 1,
HasAdd = 1,
@ -237,7 +236,6 @@ struct packet_traits<int8_t> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 16,
HasHalfPacket = 1,
HasCmp = 1,
HasAdd = 1,
@ -267,7 +265,6 @@ struct packet_traits<uint8_t> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 16,
HasHalfPacket = 1,
HasCmp = 1,
HasAdd = 1,
@ -299,7 +296,6 @@ struct packet_traits<int16_t> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 1,
HasCmp = 1,
HasAdd = 1,
@ -329,7 +325,6 @@ struct packet_traits<uint16_t> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 1,
HasCmp = 1,
HasAdd = 1,
@ -360,7 +355,6 @@ struct packet_traits<int32_t> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 1,
HasCmp = 1,
HasAdd = 1,
@ -390,7 +384,6 @@ struct packet_traits<uint32_t> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 1,
HasCmp = 1,
HasAdd = 1,
@ -422,7 +415,6 @@ struct packet_traits<int64_t> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket = 0,
HasCmp = 1,
HasAdd = 1,
@ -452,7 +444,6 @@ struct packet_traits<uint64_t> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket = 0,
HasCmp = 1,
HasAdd = 1,
@ -3410,7 +3401,6 @@ template<> struct packet_traits<bfloat16> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 0,
HasCmp = 1,
HasAdd = 1,
@ -3784,7 +3774,6 @@ template<> struct packet_traits<double> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket = 0,
HasCmp = 1,
HasAdd = 1,
@ -4027,7 +4016,6 @@ struct packet_traits<Eigen::half> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 8,
HasHalfPacket = 1,
HasCmp = 1,
HasCast = 1,

View File

@ -35,7 +35,6 @@ template<> struct packet_traits<std::complex<float> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -185,7 +184,6 @@ template<> struct packet_traits<std::complex<double> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 0,
size = 1,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,

View File

@ -132,7 +132,6 @@ struct packet_traits<float> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 0,
HasCmp = 1,
HasDiv = 1,
@ -171,7 +170,6 @@ struct packet_traits<double> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size=2,
HasHalfPacket = 0,
HasCmp = 1,
HasDiv = 1,
@ -212,7 +210,6 @@ template<> struct packet_traits<bool> : default_packet_traits
enum {
Vectorizable = 1,
AlignedOnScalar = 1,
HasHalfPacket = 0,
size=16,
HasAdd = 1,
@ -1478,7 +1475,6 @@ struct packet_traits<Eigen::half> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
HasMul = 1,

View File

@ -42,7 +42,6 @@ struct packet_traits<numext::int32_t> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = sve_packet_size_selector<numext::int32_t, EIGEN_ARM64_SVE_VL>::size,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -377,7 +376,6 @@ struct packet_traits<float> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = sve_packet_size_selector<float, EIGEN_ARM64_SVE_VL>::size,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,

View File

@ -53,7 +53,6 @@ template<> struct packet_traits<std::complex<float> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -78,7 +77,6 @@ template<> struct packet_traits<std::complex<double> > : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 1,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,

View File

@ -160,7 +160,6 @@ template<> struct packet_traits<int> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -178,7 +177,6 @@ struct packet_traits<float> : default_packet_traits {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket = 0,
HasAdd = 1,
HasSub = 1,
@ -211,7 +209,6 @@ template<> struct packet_traits<double> : default_packet_traits
Vectorizable = 1,
AlignedOnScalar = 1,
size=2,
HasHalfPacket = 1,
HasAdd = 1,
HasSub = 1,

View File

@ -166,7 +166,6 @@ struct PacketType<Scalar, SyclDevice> : internal::default_packet_traits {
Vectorizable = 0,
size = 1,
AlignedOnScalar = 0,
HasHalfPacket = 0
};
enum {
HasAdd = 0,