|
MOAB
4.9.3pre
|
#include <GeneralBlockPanelKernel.h>
Public Types | |
| enum | { ConjLhs = _ConjLhs, ConjRhs = _ConjRhs, Vectorizable = packet_traits<LhsScalar>::Vectorizable && packet_traits<RhsScalar>::Vectorizable, LhsPacketSize = Vectorizable ? packet_traits<LhsScalar>::size : 1, RhsPacketSize = Vectorizable ? packet_traits<RhsScalar>::size : 1, ResPacketSize = Vectorizable ? packet_traits<ResScalar>::size : 1, NumberOfRegisters = EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS, nr = 4, default_mr = (EIGEN_PLAIN_ENUM_MIN(16,NumberOfRegisters)/2/nr)*LhsPacketSize, mr = default_mr, LhsProgress = LhsPacketSize, RhsProgress = 1 } |
| typedef _LhsScalar | LhsScalar |
| typedef _RhsScalar | RhsScalar |
| typedef scalar_product_traits < LhsScalar, RhsScalar > ::ReturnType | ResScalar |
| typedef packet_traits < LhsScalar >::type | _LhsPacket |
| typedef packet_traits < RhsScalar >::type | _RhsPacket |
| typedef packet_traits < ResScalar >::type | _ResPacket |
| typedef conditional < Vectorizable, _LhsPacket, LhsScalar >::type | LhsPacket |
| typedef conditional < Vectorizable, _RhsPacket, RhsScalar >::type | RhsPacket |
| typedef conditional < Vectorizable, _ResPacket, ResScalar >::type | ResPacket |
| typedef ResPacket | AccPacket |
Public Member Functions | |
| EIGEN_STRONG_INLINE void | initAcc (AccPacket &p) |
| EIGEN_STRONG_INLINE void | broadcastRhs (const RhsScalar *b, RhsPacket &b0, RhsPacket &b1, RhsPacket &b2, RhsPacket &b3) |
| template<typename RhsPacketType > | |
| EIGEN_STRONG_INLINE void | loadRhs (const RhsScalar *b, RhsPacketType &dest) const |
| EIGEN_STRONG_INLINE void | loadRhsQuad (const RhsScalar *b, RhsPacket &dest) const |
| template<typename LhsPacketType > | |
| EIGEN_STRONG_INLINE void | loadLhs (const LhsScalar *a, LhsPacketType &dest) const |
| template<typename LhsPacketType > | |
| EIGEN_STRONG_INLINE void | loadLhsUnaligned (const LhsScalar *a, LhsPacketType &dest) const |
| template<typename LhsPacketType , typename RhsPacketType , typename AccPacketType > | |
| EIGEN_STRONG_INLINE void | madd (const LhsPacketType &a, const RhsPacketType &b, AccPacketType &c, AccPacketType &tmp) const |
| EIGEN_STRONG_INLINE void | acc (const AccPacket &c, const ResPacket &alpha, ResPacket &r) const |
| template<typename ResPacketHalf > | |
| EIGEN_STRONG_INLINE void | acc (const ResPacketHalf &c, const ResPacketHalf &alpha, ResPacketHalf &r) const |
Definition at line 364 of file GeneralBlockPanelKernel.h.
| typedef packet_traits<LhsScalar>::type Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::_LhsPacket |
Definition at line 399 of file GeneralBlockPanelKernel.h.
| typedef packet_traits<ResScalar>::type Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::_ResPacket |
Definition at line 401 of file GeneralBlockPanelKernel.h.
| typedef packet_traits<RhsScalar>::type Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::_RhsPacket |
Definition at line 400 of file GeneralBlockPanelKernel.h.
| typedef ResPacket Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::AccPacket |
Definition at line 407 of file GeneralBlockPanelKernel.h.
| typedef conditional<Vectorizable,_LhsPacket,LhsScalar>::type Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::LhsPacket |
Definition at line 403 of file GeneralBlockPanelKernel.h.
| typedef _LhsScalar Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::LhsScalar |
Definition at line 367 of file GeneralBlockPanelKernel.h.
| typedef conditional<Vectorizable,_ResPacket,ResScalar>::type Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::ResPacket |
Definition at line 405 of file GeneralBlockPanelKernel.h.
| typedef scalar_product_traits<LhsScalar, RhsScalar>::ReturnType Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::ResScalar |
Definition at line 369 of file GeneralBlockPanelKernel.h.
| typedef conditional<Vectorizable,_RhsPacket,RhsScalar>::type Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::RhsPacket |
Definition at line 404 of file GeneralBlockPanelKernel.h.
| typedef _RhsScalar Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::RhsScalar |
Definition at line 368 of file GeneralBlockPanelKernel.h.
| anonymous enum |
| ConjLhs | |
| ConjRhs | |
| Vectorizable | |
| LhsPacketSize | |
| RhsPacketSize | |
| ResPacketSize | |
| NumberOfRegisters | |
| nr | |
| default_mr | |
| mr | |
| LhsProgress | |
| RhsProgress |
Definition at line 371 of file GeneralBlockPanelKernel.h.
{
ConjLhs = _ConjLhs,
ConjRhs = _ConjRhs,
Vectorizable = packet_traits<LhsScalar>::Vectorizable && packet_traits<RhsScalar>::Vectorizable,
LhsPacketSize = Vectorizable ? packet_traits<LhsScalar>::size : 1,
RhsPacketSize = Vectorizable ? packet_traits<RhsScalar>::size : 1,
ResPacketSize = Vectorizable ? packet_traits<ResScalar>::size : 1,
NumberOfRegisters = EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS,
// register block size along the N direction must be 1 or 4
nr = 4,
// register block size along the M direction (currently, this one cannot be modified)
default_mr = (EIGEN_PLAIN_ENUM_MIN(16,NumberOfRegisters)/2/nr)*LhsPacketSize,
#if defined(EIGEN_HAS_SINGLE_INSTRUCTION_MADD) && !defined(EIGEN_VECTORIZE_ALTIVEC) && !defined(EIGEN_VECTORIZE_VSX)
// we assume 16 registers
// See bug 992, if the scalar type is not vectorizable but that EIGEN_HAS_SINGLE_INSTRUCTION_MADD is defined,
// then using 3*LhsPacketSize triggers non-implemented paths in syrk.
mr = Vectorizable ? 3*LhsPacketSize : default_mr,
#else
mr = default_mr,
#endif
LhsProgress = LhsPacketSize,
RhsProgress = 1
};
| EIGEN_STRONG_INLINE void Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::acc | ( | const AccPacket & | c, |
| const ResPacket & | alpha, | ||
| ResPacket & | r | ||
| ) | const [inline] |
Definition at line 462 of file GeneralBlockPanelKernel.h.
{
r = pmadd(c,alpha,r);
}
| EIGEN_STRONG_INLINE void Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::acc | ( | const ResPacketHalf & | c, |
| const ResPacketHalf & | alpha, | ||
| ResPacketHalf & | r | ||
| ) | const [inline] |
Definition at line 468 of file GeneralBlockPanelKernel.h.
{
r = pmadd(c,alpha,r);
}
| EIGEN_STRONG_INLINE void Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::broadcastRhs | ( | const RhsScalar * | b, |
| RhsPacket & | b0, | ||
| RhsPacket & | b1, | ||
| RhsPacket & | b2, | ||
| RhsPacket & | b3 | ||
| ) | [inline] |
Definition at line 414 of file GeneralBlockPanelKernel.h.
{
pbroadcast4(b, b0, b1, b2, b3);
}
| EIGEN_STRONG_INLINE void Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::initAcc | ( | AccPacket & | p | ) | [inline] |
Definition at line 409 of file GeneralBlockPanelKernel.h.
{
p = pset1<ResPacket>(ResScalar(0));
}
| EIGEN_STRONG_INLINE void Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::loadLhs | ( | const LhsScalar * | a, |
| LhsPacketType & | dest | ||
| ) | const [inline] |
Definition at line 436 of file GeneralBlockPanelKernel.h.
{
dest = pload<LhsPacketType>(a);
}
| EIGEN_STRONG_INLINE void Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::loadLhsUnaligned | ( | const LhsScalar * | a, |
| LhsPacketType & | dest | ||
| ) | const [inline] |
Definition at line 442 of file GeneralBlockPanelKernel.h.
{
dest = ploadu<LhsPacketType>(a);
}
| EIGEN_STRONG_INLINE void Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::loadRhs | ( | const RhsScalar * | b, |
| RhsPacketType & | dest | ||
| ) | const [inline] |
Definition at line 425 of file GeneralBlockPanelKernel.h.
{
dest = pset1<RhsPacketType>(*b);
}
| EIGEN_STRONG_INLINE void Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::loadRhsQuad | ( | const RhsScalar * | b, |
| RhsPacket & | dest | ||
| ) | const [inline] |
Definition at line 430 of file GeneralBlockPanelKernel.h.
{
dest = ploadquad<RhsPacket>(b);
}
| EIGEN_STRONG_INLINE void Eigen::internal::gebp_traits< _LhsScalar, _RhsScalar, _ConjLhs, _ConjRhs >::madd | ( | const LhsPacketType & | a, |
| const RhsPacketType & | b, | ||
| AccPacketType & | c, | ||
| AccPacketType & | tmp | ||
| ) | const [inline] |
Definition at line 448 of file GeneralBlockPanelKernel.h.
{
// It would be a lot cleaner to call pmadd all the time. Unfortunately if we
// let gcc allocate the register in which to store the result of the pmul
// (in the case where there is no FMA) gcc fails to figure out how to avoid
// spilling register.
#ifdef EIGEN_HAS_SINGLE_INSTRUCTION_MADD
EIGEN_UNUSED_VARIABLE(tmp);
c = pmadd(a,b,c);
#else
tmp = b; tmp = pmul(a,tmp); c = padd(c,tmp);
#endif
}