This bugzilla service is closed. All entries have been migrated to https://gitlab.com/libeigen/eigen

Bug 1428

Summary: Eigen 3.3.3 does not compile on Windows with __ARM_NEON__ defined
Product: Eigen Reporter: Ryan Tremblay <ryan.tremblay>
Component: Core - vectorizationAssignee: Nobody <eigen.nobody>
Status: RESOLVED FIXED    
Severity: Compilation Problem CC: chtz, gael.guennebaud, jacob.benoit.1, markos
Priority: Normal    
Version: 3.3 (current stable)   
Hardware: ARM - NEON   
OS: Windows   
Whiteboard:

Description Ryan Tremblay 2017-05-19 20:01:29 UTC
See http://stackoverflow.com/questions/44033691/is-it-possible-to-use-eigen-3-3-3-on-windows-with-arm-neon-defined

When Eigen is used on Windows with __ARM_NEON__ defined, the following compilation error is produced:

eigen\src/Core/arch/NEON/PacketMath.h(109): error C2766: explicit specialization; 'Eigen::internal::unpacket_traits<Eigen::internal::Packet4f>' has already been defined

Packet4f and Packet4i are defined (in PacketMath.h) as:

typedef float32x4_t Packet4f;
typedef int32x4_t   Packet4i;

And float32x4_t and int32x4_t are defined (in MSVC's arm_neon.h) as:

typedef __n128   float32x4_t;
typedef __n128   int32x4_t;

Presumably the preprocessor checks need to be updated to handle this case specifically for MSVC.
Comment 1 Gael Guennebaud 2018-04-24 09:59:35 UTC
here is an attempt to fix the issue:

  https://bitbucket.org/eigen/eigen/commits/c576f16f3a596

anybody should be able to check the success of it there:

  https://godbolt.org/g/qPhNgh

once the trunk version of Eigen will be updated (nightly).
Comment 2 Christoph Hertzberg 2018-04-24 13:34:01 UTC
This sounds like a problem that could be solved cleaner with Meta-Packets (Bug 692)
Comment 3 Gael Guennebaud 2018-04-26 08:55:22 UTC
another smaller fix:
https://bitbucket.org/eigen/eigen/commits/2af650906b57/
Comment 4 Nobody 2019-12-04 16:59:50 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/1428.