mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-29 15:24:51 +08:00
Added support for vectorized type casting of int to char.
This commit is contained in:
parent
4ab63a3f6f
commit
f535378995
@ -134,6 +134,11 @@ pcast(const SrcPacket& a, const SrcPacket& /*b*/) {
|
|||||||
return static_cast<TgtPacket>(a);
|
return static_cast<TgtPacket>(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename SrcPacket, typename TgtPacket>
|
||||||
|
EIGEN_DEVICE_FUNC inline TgtPacket
|
||||||
|
pcast(const SrcPacket& a, const SrcPacket& /*b*/, const SrcPacket& /*c*/, const SrcPacket& /*d*/) {
|
||||||
|
return static_cast<TgtPacket>(a);
|
||||||
|
}
|
||||||
|
|
||||||
/** \internal \returns a + b (coeff-wise) */
|
/** \internal \returns a + b (coeff-wise) */
|
||||||
template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
|
template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
|
||||||
|
@ -86,6 +86,26 @@ struct PacketConverter<TensorEvaluator, SrcPacket, TgtPacket, 2, 1> {
|
|||||||
const TensorEvaluator& m_impl;
|
const TensorEvaluator& m_impl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <typename TensorEvaluator, typename SrcPacket, typename TgtPacket>
|
||||||
|
struct PacketConverter<TensorEvaluator, SrcPacket, TgtPacket, 4, 1> {
|
||||||
|
PacketConverter(const TensorEvaluator& impl)
|
||||||
|
: m_impl(impl) {}
|
||||||
|
|
||||||
|
template<int LoadMode, typename Index>
|
||||||
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TgtPacket packet(Index index) const {
|
||||||
|
const int SrcPacketSize = internal::unpacket_traits<SrcPacket>::size;
|
||||||
|
|
||||||
|
SrcPacket src1 = m_impl.template packet<LoadMode>(index);
|
||||||
|
SrcPacket src2 = m_impl.template packet<LoadMode>(index + SrcPacketSize);
|
||||||
|
SrcPacket src3 = m_impl.template packet<LoadMode>(index + 2 * SrcPacketSize);
|
||||||
|
SrcPacket src4 = m_impl.template packet<LoadMode>(index + 3 * SrcPacketSize);
|
||||||
|
TgtPacket result = internal::pcast<SrcPacket, TgtPacket>(src1, src2, src3, src4);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
const TensorEvaluator& m_impl;
|
||||||
|
};
|
||||||
|
|
||||||
template <typename TensorEvaluator, typename SrcPacket, typename TgtPacket>
|
template <typename TensorEvaluator, typename SrcPacket, typename TgtPacket>
|
||||||
struct PacketConverter<TensorEvaluator, SrcPacket, TgtPacket, 1, 2> {
|
struct PacketConverter<TensorEvaluator, SrcPacket, TgtPacket, 1, 2> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user