mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-29 23:34:12 +08:00
fix scalar pselect
This commit is contained in:
parent
392b95bdf1
commit
02bcf9b591
@ -580,21 +580,13 @@ EIGEN_DEVICE_FUNC inline Packet pandnot(const Packet& a, const Packet& b) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// In the general case, use bitwise select.
|
// In the general case, use bitwise select.
|
||||||
template <typename Packet, typename EnableIf = void>
|
template <typename Packet>
|
||||||
struct pselect_impl {
|
struct pselect_impl {
|
||||||
static EIGEN_DEVICE_FUNC inline Packet run(const Packet& mask, const Packet& a, const Packet& b) {
|
static EIGEN_DEVICE_FUNC inline Packet run(const Packet& mask, const Packet& a, const Packet& b) {
|
||||||
return por(pand(a, mask), pandnot(b, mask));
|
return por(pand(a, mask), pandnot(b, mask));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// For scalars, use ternary select.
|
|
||||||
template <typename Packet>
|
|
||||||
struct pselect_impl<Packet, std::enable_if_t<is_scalar<Packet>::value>> {
|
|
||||||
static EIGEN_DEVICE_FUNC inline Packet run(const Packet& mask, const Packet& a, const Packet& b) {
|
|
||||||
return numext::equal_strict(mask, Packet(0)) ? b : a;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/** \internal \returns \a or \b for each field in packet according to \mask */
|
/** \internal \returns \a or \b for each field in packet according to \mask */
|
||||||
template <typename Packet>
|
template <typename Packet>
|
||||||
EIGEN_DEVICE_FUNC inline Packet pselect(const Packet& mask, const Packet& a, const Packet& b) {
|
EIGEN_DEVICE_FUNC inline Packet pselect(const Packet& mask, const Packet& a, const Packet& b) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user