Revert "fix scalar pselect"
diff --git a/Eigen/src/Core/GenericPacketMath.h b/Eigen/src/Core/GenericPacketMath.h
index 8bf8f90..e1347b9 100644
--- a/Eigen/src/Core/GenericPacketMath.h
+++ b/Eigen/src/Core/GenericPacketMath.h
@@ -580,13 +580,21 @@
 }
 
 // In the general case, use bitwise select.
-template <typename Packet>
+template <typename Packet, typename EnableIf = void>
 struct pselect_impl {
   static EIGEN_DEVICE_FUNC inline Packet run(const Packet& mask, const Packet& a, const Packet& b) {
     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 */
 template <typename Packet>
 EIGEN_DEVICE_FUNC inline Packet pselect(const Packet& mask, const Packet& a, const Packet& b) {