Added ARMv8 support

This commit is contained in:
Konstantinos Margaritis
2014-10-22 07:39:49 +00:00
parent b508619392
commit fae4fd7a26
2 changed files with 201 additions and 9 deletions

View File

@@ -34,8 +34,10 @@ namespace internal {
#define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 16
#endif
typedef float32x2_t Packet2f;
typedef float32x4_t Packet4f;
typedef int32x4_t Packet4i;
typedef int32x2_t Packet2i;
typedef uint32x4_t Packet4ui;
#define _EIGEN_DECLARE_CONST_Packet4f(NAME,X) \
@@ -74,12 +76,12 @@ typedef uint32x4_t Packet4ui;
template<> struct packet_traits<float> : default_packet_traits
{
typedef Packet4f type;
typedef Packet4f half;
typedef Packet2f half;
enum {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 4,
HasHalfPacket=0,
HasHalfPacket=1,
HasDiv = 1,
// FIXME check the Has*
@@ -93,11 +95,12 @@ template<> struct packet_traits<float> : default_packet_traits
template<> struct packet_traits<int> : default_packet_traits
{
typedef Packet4i type;
typedef Packet4i half;
typedef Packet2i half;
enum {
Vectorizable = 1,
AlignedOnScalar = 1,
size=4
size=4,
HasHalfPacket=1
// FIXME check the Has*
};
};
@@ -490,16 +493,17 @@ ptranspose(PacketBlock<Packet4i,4>& kernel) {
#ifdef __aarch64__
typedef float64x2_t Packet2d;
typedef float64x1_t Packet1d;
template<> struct packet_traits<double> : default_packet_traits
{
typedef Packet2d type;
typedef Packet2d half;
typedef Packet1d half;
enum {
Vectorizable = 1,
AlignedOnScalar = 1,
size = 2,
HasHalfPacket=0,
HasHalfPacket=1,
HasDiv = 1,
// FIXME check the Has*