2#ifdef EIGEN_POWER_USE_PREFETCH
3#define EIGEN_POWER_PREFETCH(p) prefetch(p)
5#define EIGEN_POWER_PREFETCH(p)
12template<
typename Scalar,
typename Packet,
typename DataMapper,
typename Index, const Index accRows, const Index accCols>
13EIGEN_ALWAYS_INLINE
void gemm_extra_row(
14 const DataMapper& res,
15 const Scalar* lhs_base,
16 const Scalar* rhs_base,
28template<
typename Scalar,
typename Packet,
typename DataMapper,
typename Index, const Index accCols,
bool ConjugateLhs,
bool ConjugateRhs,
bool LhsIsReal,
bool RhsIsReal>
29EIGEN_STRONG_INLINE
void gemm_extra_cols(
30 const DataMapper& res,
45template<
typename Packet>
46EIGEN_ALWAYS_INLINE Packet bmask(
const int remaining_rows);
48template<
typename Scalar,
typename Packet,
typename Packetc,
typename DataMapper,
typename Index, const Index accRows, const Index accCols,
bool ConjugateLhs,
bool ConjugateRhs,
bool LhsIsReal,
bool RhsIsReal>
49EIGEN_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,
66template<
typename Scalar,
typename Packet,
typename Packetc,
typename DataMapper,
typename Index, const Index accCols,
bool ConjugateLhs,
bool ConjugateRhs,
bool LhsIsReal,
bool RhsIsReal>
67EIGEN_STRONG_INLINE
void gemm_complex_extra_cols(
68 const DataMapper& res,
80 const Packet& pAlphaReal,
81 const Packet& pAlphaImag,
84template<
typename Scalar,
typename Packet>
85EIGEN_ALWAYS_INLINE Packet ploadLhs(
const Scalar* lhs);
87template<
typename DataMapper,
typename Packet,
typename Index, const Index accCols,
int StorageOrder,
bool Complex,
int N>
88EIGEN_ALWAYS_INLINE
void bload(PacketBlock<Packet,N>& acc,
const DataMapper& res,
Index row,
Index col);
90template<
typename Packet,
int N>
91EIGEN_ALWAYS_INLINE
void bscale(PacketBlock<Packet,N>& acc, PacketBlock<Packet,N>& accZ,
const Packet& pAlpha);
93template<
typename Packet,
int N>
94EIGEN_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);
97template<
typename Packet,
typename Packetc,
int N>
98EIGEN_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]);
123template<
typename Packet,
typename Packetc,
int N>
124EIGEN_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]);
152template<
typename Scalar,
typename Packet>
153EIGEN_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