Add MMA and performance improvements for VSX in GEMV for PowerPC.

This commit is contained in:
Chip Kerchner 2022-01-13 13:23:18 +00:00 committed by Everton Constantino
parent d1bf056394
commit 708fd6d136
3 changed files with 2334 additions and 1 deletions

View File

@ -2226,6 +2226,8 @@ EIGEN_STRONG_INLINE void gemm_complex(const DataMapper& res, const LhsScalar* bl
#undef advanceCols
#undef advanceRows
#include "MatrixVectorProduct.h"
/************************************
* ppc64le template specializations *
* **********************************/

File diff suppressed because it is too large Load Diff

View File

@ -87,7 +87,7 @@ public:
eigen_assert(incr==1);
}
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(int i) const {
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(Index i) const {
internal::prefetch(&operator()(i));
}
@ -100,6 +100,11 @@ public:
return ploadt<PacketType, AlignmentType>(m_data + i);
}
template<typename PacketType, int AlignmentT>
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketType load(Index i) const {
return ploadt<PacketType, AlignmentT>(m_data + i);
}
template<typename PacketType>
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacket(Index i, const PacketType &p) const {
pstoret<Scalar, PacketType, AlignmentType>(m_data + i, p);
@ -189,6 +194,9 @@ public:
return VectorMapper(&operator()(i, j));
}
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(Index i, Index j) const {
internal::prefetch(&operator()(i, j));
}
EIGEN_DEVICE_FUNC
EIGEN_ALWAYS_INLINE Scalar& operator()(Index i, Index j) const {
@ -284,6 +292,10 @@ public:
return LinearMapper(&operator()(i, j), m_incr.value());
}
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(Index i, Index j) const {
internal::prefetch(&operator()(i, j));
}
EIGEN_DEVICE_FUNC
EIGEN_ALWAYS_INLINE Scalar& operator()(Index i, Index j) const {
return m_data[StorageOrder==RowMajor ? j*m_incr.value() + i*m_stride : i*m_incr.value() + j*m_stride];