mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-15 05:05:58 +08:00
Speed up complex * complex matrix multiplication.
This commit is contained in:
parent
b3e3b7b0ec
commit
2b7b7aac57
@ -718,10 +718,10 @@ class gebp_traits<std::complex<RealScalar>, std::complex<RealScalar>, ConjLhs_,
|
|||||||
LhsPacketSize = Vectorizable ? unpacket_traits<LhsPacket_>::size : 1,
|
LhsPacketSize = Vectorizable ? unpacket_traits<LhsPacket_>::size : 1,
|
||||||
RhsPacketSize = Vectorizable ? unpacket_traits<RhsScalar>::size : 1,
|
RhsPacketSize = Vectorizable ? unpacket_traits<RhsScalar>::size : 1,
|
||||||
RealPacketSize = Vectorizable ? unpacket_traits<RealPacket>::size : 1,
|
RealPacketSize = Vectorizable ? unpacket_traits<RealPacket>::size : 1,
|
||||||
|
NumberOfRegisters = EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS,
|
||||||
|
|
||||||
// FIXME: should depend on NumberOfRegisters
|
|
||||||
nr = 4,
|
nr = 4,
|
||||||
mr = ResPacketSize,
|
mr = (plain_enum_min(16, NumberOfRegisters) / 2 / nr) * ResPacketSize,
|
||||||
|
|
||||||
LhsProgress = ResPacketSize,
|
LhsProgress = ResPacketSize,
|
||||||
RhsProgress = 1
|
RhsProgress = 1
|
||||||
@ -795,8 +795,8 @@ class gebp_traits<std::complex<RealScalar>, std::complex<RealScalar>, ConjLhs_,
|
|||||||
DoublePacket<ResPacketType>& c,
|
DoublePacket<ResPacketType>& c,
|
||||||
TmpType& /*tmp*/,
|
TmpType& /*tmp*/,
|
||||||
const LaneIdType&) const {
|
const LaneIdType&) const {
|
||||||
c.first = padd(pmul(a, b.first), c.first);
|
c.first = pmadd(a, b.first, c.first);
|
||||||
c.second = padd(pmul(a, b.second), c.second);
|
c.second = pmadd(a, b.second, c.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename LaneIdType>
|
template <typename LaneIdType>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user