2 #ifdef EIGEN_POWER_USE_PREFETCH 3 #define EIGEN_POWER_PREFETCH(p) prefetch(p) 5 #define EIGEN_POWER_PREFETCH(p) 12 template<
typename Scalar,
typename Packet,
typename DataMapper,
typename Index, const Index accRows, const Index accCols>
13 EIGEN_ALWAYS_INLINE
void gemm_extra_row(
14 const DataMapper& res,
15 const Scalar* lhs_base,
16 const Scalar* rhs_base,
28 template<
typename Scalar,
typename Packet,
typename DataMapper,
typename Index, const Index accCols,
bool ConjugateLhs,
bool ConjugateRhs,
bool LhsIsReal,
bool RhsIsReal>
29 EIGEN_STRONG_INLINE
void gemm_extra_cols(
30 const DataMapper& res,
45 template<
typename Packet>
46 EIGEN_ALWAYS_INLINE Packet bmask(
const int remaining_rows);
48 template<
typename Scalar,
typename Packet,
typename Packetc,
typename DataMapper,
typename Index, const Index accRows, const Index accCols,
bool ConjugateLhs,
bool ConjugateRhs,
bool LhsIsReal,
bool RhsIsReal>
49 EIGEN_ALWAYS_INLINE
void gemm_complex_extra_row(
50 const DataMapper& res,
51 const Scalar* lhs_base,
52 const Scalar* rhs_base,
62 const Packet& pAlphaReal,
63 const Packet& pAlphaImag,
66 template<
typename Scalar,
typename Packet,
typename Packetc,
typename DataMapper,
typename Index, const Index accCols,
bool ConjugateLhs,
bool ConjugateRhs,
bool LhsIsReal,
bool RhsIsReal>
67 EIGEN_STRONG_INLINE
void gemm_complex_extra_cols(
68 const DataMapper& res,
80 const Packet& pAlphaReal,
81 const Packet& pAlphaImag,
84 template<
typename Scalar,
typename Packet>
85 EIGEN_ALWAYS_INLINE Packet ploadLhs(
const Scalar* lhs);
87 template<
typename DataMapper,
typename Packet,
typename Index, const Index accCols,
int StorageOrder,
bool Complex,
int N>
88 EIGEN_ALWAYS_INLINE
void bload(PacketBlock<Packet,N>& acc,
const DataMapper& res,
Index row,
Index col);
90 template<
typename Packet,
int N>
91 EIGEN_ALWAYS_INLINE
void bscale(PacketBlock<Packet,N>& acc, PacketBlock<Packet,N>& accZ,
const Packet& pAlpha);
93 template<
typename Packet,
int N>
94 EIGEN_ALWAYS_INLINE
void bscalec(PacketBlock<Packet,N>& aReal, PacketBlock<Packet,N>& aImag,
const Packet& bReal,
const Packet& bImag, PacketBlock<Packet,N>& cReal, PacketBlock<Packet,N>& cImag);
97 template<
typename Packet,
typename Packetc,
int N>
98 EIGEN_ALWAYS_INLINE
void bcouple_common(PacketBlock<Packet,N>& taccReal, PacketBlock<Packet,N>& taccImag, PacketBlock<Packetc, N>& acc1, PacketBlock<Packetc, N>& acc2)
100 acc1.packet[0].v = vec_mergeh(taccReal.packet[0], taccImag.packet[0]);
102 acc1.packet[1].v = vec_mergeh(taccReal.packet[1], taccImag.packet[1]);
105 acc1.packet[2].v = vec_mergeh(taccReal.packet[2], taccImag.packet[2]);
108 acc1.packet[3].v = vec_mergeh(taccReal.packet[3], taccImag.packet[3]);
111 acc2.packet[0].v = vec_mergel(taccReal.packet[0], taccImag.packet[0]);
113 acc2.packet[1].v = vec_mergel(taccReal.packet[1], taccImag.packet[1]);
116 acc2.packet[2].v = vec_mergel(taccReal.packet[2], taccImag.packet[2]);
119 acc2.packet[3].v = vec_mergel(taccReal.packet[3], taccImag.packet[3]);
123 template<
typename Packet,
typename Packetc,
int N>
124 EIGEN_ALWAYS_INLINE
void bcouple(PacketBlock<Packet,N>& taccReal, PacketBlock<Packet,N>& taccImag, PacketBlock<Packetc,N*2>& tRes, PacketBlock<Packetc, N>& acc1, PacketBlock<Packetc, N>& acc2)
126 bcouple_common<Packet, Packetc, N>(taccReal, taccImag, acc1, acc2);
128 acc1.packet[0] = padd<Packetc>(tRes.packet[0], acc1.packet[0]);
130 acc1.packet[1] = padd<Packetc>(tRes.packet[1], acc1.packet[1]);
133 acc1.packet[2] = padd<Packetc>(tRes.packet[2], acc1.packet[2]);
136 acc1.packet[3] = padd<Packetc>(tRes.packet[3], acc1.packet[3]);
139 acc2.packet[0] = padd<Packetc>(tRes.packet[0+N], acc2.packet[0]);
141 acc2.packet[1] = padd<Packetc>(tRes.packet[1+N], acc2.packet[1]);
144 acc2.packet[2] = padd<Packetc>(tRes.packet[2+N], acc2.packet[2]);
147 acc2.packet[3] = padd<Packetc>(tRes.packet[3+N], acc2.packet[3]);
152 template<
typename Scalar,
typename Packet>
153 EIGEN_ALWAYS_INLINE Packet ploadRhs(
const Scalar* rhs)
155 return ploadu<Packet>(rhs);
Namespace containing all symbols from the Eigen library.
Definition: Core:141
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
Definition: Eigen_Colamd.h:50