diff options
author | Gael Guennebaud <g.gael@free.fr> | 2019-01-30 11:52:28 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2019-01-30 11:52:28 +0100 |
commit | df12fae8b8c0e10f671ffdded241be7a71684ffb (patch) | |
tree | 6b015883607243bac09ddb4eb2715e3b5bdabdf7 /Eigen/src/Core/products | |
parent | 3775926bbae69c23584dd9e6acdbe20ee6ac7050 (diff) |
According to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89101, the previous GCC issue is fixed in GCC trunk (will be gcc 9).
Diffstat (limited to 'Eigen/src/Core/products')
-rw-r--r-- | Eigen/src/Core/products/GeneralBlockPanelKernel.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h index c8c3d69cc..86767d0e9 100644 --- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h +++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h @@ -1037,7 +1037,7 @@ struct gebp_traits <float, float, false, false,Architecture::NEON> template<int LaneID> EIGEN_STRONG_INLINE void madd(const LhsPacket& a, const RhsPacketx4& b, AccPacket& c, RhsPacket& /*tmp*/, const FixedInt<LaneID>&) const { - #if EIGEN_COMP_GNUC_STRICT + #if EIGEN_COMP_GNUC_STRICT && !(EIGEN_GNUC_AT_LEAST(9,0)) // workaround gcc issue https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89101 // vfmaq_laneq_f32 is implemented through a costly dup if(LaneID==0) asm("fmla %0.4s, %1.4s, %2.s[0]\n" : "+w" (c) : "w" (a), "w" (b) : ); @@ -1093,7 +1093,7 @@ struct gebp_traits <double, double, false, false,Architecture::NEON> template<int LaneID> EIGEN_STRONG_INLINE void madd(const LhsPacket& a, const RhsPacketx4& b, AccPacket& c, RhsPacket& /*tmp*/, const FixedInt<LaneID>&) const { - #if EIGEN_COMP_GNUC_STRICT + #if EIGEN_COMP_GNUC_STRICT && !(EIGEN_GNUC_AT_LEAST(9,0)) // workaround gcc issue https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89101 // vfmaq_laneq_f64 is implemented through a costly dup if(LaneID==0) asm("fmla %0.2d, %1.2d, %2.d[0]\n" : "+w" (c) : "w" (a), "w" (b.B_0) : ); @@ -1314,7 +1314,7 @@ void gebp_kernel<LhsScalar,RhsScalar,Index,DataMapper,mr,nr,ConjugateLhs,Conjuga RhsPanel15 rhs_panel; RhsPacket T0; LhsPacket A2; - #if EIGEN_COMP_GNUC_STRICT && EIGEN_ARCH_ARM64 && defined(EIGEN_VECTORIZE_NEON) + #if EIGEN_COMP_GNUC_STRICT && EIGEN_ARCH_ARM64 && defined(EIGEN_VECTORIZE_NEON) && !(EIGEN_GNUC_AT_LEAST(9,0)) // see http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1633 // without this workaround A0, A1, and A2 are loaded in the same register, // which is not good for pipelining |