mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-08 09:49:03 +08:00
Add MMA and performance improvements for VSX in GEMV for PowerPC.
This commit is contained in:
parent
d1bf056394
commit
708fd6d136
@ -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 *
|
||||
* **********************************/
|
||||
|
2319
Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.h
Normal file
2319
Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -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];
|
||||
|
Loading…
x
Reference in New Issue
Block a user