* add a IsVectorized mechanism (instead of packet-size>1...)

* vectorize complex<double>
This commit is contained in:
Gael Guennebaud
2010-07-06 23:36:00 +02:00
parent 38d0a0d5d6
commit bfa606d16f
9 changed files with 230 additions and 32 deletions

View File

@@ -61,8 +61,11 @@ template<> struct ei_is_arithmetic<__m128d> { enum { ret = true }; };
template<> struct ei_packet_traits<float> : ei_default_packet_traits
{
typedef Packet4f type; enum {size=4};
typedef Packet4f type;
enum {
IsVectorized = 1,
size=4,
HasDiv = 1,
HasSin = EIGEN_FAST_MATH,
HasCos = EIGEN_FAST_MATH,
@@ -73,13 +76,23 @@ template<> struct ei_packet_traits<float> : ei_default_packet_traits
};
template<> struct ei_packet_traits<double> : ei_default_packet_traits
{
typedef Packet2d type; enum {size=2};
typedef Packet2d type;
enum {
IsVectorized = 1,
size=2,
HasDiv = 1
};
};
template<> struct ei_packet_traits<int> : ei_default_packet_traits
{ typedef Packet4i type; enum {size=4}; };
{
typedef Packet4i type;
enum {
// FIXME check the Has*
IsVectorized = 1,
size=4
};
};
template<> struct ei_unpacket_traits<Packet4f> { typedef float type; enum {size=4}; };
template<> struct ei_unpacket_traits<Packet2d> { typedef double type; enum {size=2}; };