47 lines
2.6 KiB
Diff
47 lines
2.6 KiB
Diff
Subject: Disable inline assembly for e2k
|
|
Bug: 144382
|
|
Tags: e2k
|
|
|
|
diff -rupN a/Eigen/src/Core/arch/AVX/PacketMath.h b/Eigen/src/Core/arch/AVX/PacketMath.h
|
|
--- a/Eigen/src/Core/arch/AVX/PacketMath.h 2022-10-24 04:08:03.701220594 +0300
|
|
+++ b/Eigen/src/Core/arch/AVX/PacketMath.h 2022-10-24 04:12:04.342798091 +0300
|
|
@@ -317,7 +317,7 @@ template<> EIGEN_STRONG_INLINE Packet8i
|
|
|
|
#ifdef EIGEN_VECTORIZE_FMA
|
|
template<> EIGEN_STRONG_INLINE Packet8f pmadd(const Packet8f& a, const Packet8f& b, const Packet8f& c) {
|
|
-#if ( (EIGEN_COMP_GNUC_STRICT && EIGEN_COMP_GNUC<80) || (EIGEN_COMP_CLANG) )
|
|
+#if ( ((EIGEN_COMP_GNUC_STRICT && EIGEN_COMP_GNUC<80) || (EIGEN_COMP_CLANG)) && !defined(__e2k__))
|
|
// Clang stupidly generates a vfmadd213ps instruction plus some vmovaps on registers,
|
|
// and even register spilling with clang>=6.0 (bug 1637).
|
|
// Gcc stupidly generates a vfmadd132ps instruction.
|
|
@@ -331,7 +331,7 @@ template<> EIGEN_STRONG_INLINE Packet8f
|
|
#endif
|
|
}
|
|
template<> EIGEN_STRONG_INLINE Packet4d pmadd(const Packet4d& a, const Packet4d& b, const Packet4d& c) {
|
|
-#if ( (EIGEN_COMP_GNUC_STRICT && EIGEN_COMP_GNUC<80) || (EIGEN_COMP_CLANG) )
|
|
+#if ( ((EIGEN_COMP_GNUC_STRICT && EIGEN_COMP_GNUC<80) || (EIGEN_COMP_CLANG)) && !defined(__e2k__))
|
|
// see above
|
|
Packet4d res = c;
|
|
__asm__("vfmadd231pd %[a], %[b], %[c]" : [c] "+x" (res) : [a] "x" (a), [b] "x" (b));
|
|
diff -rupN a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h
|
|
--- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h 2022-10-24 04:07:28.349801691 +0300
|
|
+++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h 2022-10-24 04:15:47.718552538 +0300
|
|
@@ -1201,7 +1201,7 @@ struct lhs_process_one_packet
|
|
traits.madd(*A0, *rhs_panel, *C1, *T0, fix<1>);
|
|
traits.madd(*A0, *rhs_panel, *C2, *T0, fix<2>);
|
|
traits.madd(*A0, *rhs_panel, *C3, *T0, fix<3>);
|
|
- #if EIGEN_GNUC_AT_LEAST(6,0) && defined(EIGEN_VECTORIZE_SSE)
|
|
+ #if EIGEN_GNUC_AT_LEAST(6,0) && defined(EIGEN_VECTORIZE_SSE) && !defined(__e2k__)
|
|
__asm__ ("" : "+x,m" (*A0));
|
|
#endif
|
|
EIGEN_ASM_COMMENT("end step of gebp micro kernel 1X4");
|
|
@@ -1727,7 +1727,7 @@ void gebp_kernel<LhsScalar,RhsScalar,Ind
|
|
|
|
// NOTE: the begin/end asm comments below work around bug 935!
|
|
// but they are not enough for gcc>=6 without FMA (bug 1637)
|
|
- #if EIGEN_GNUC_AT_LEAST(6,0) && defined(EIGEN_VECTORIZE_SSE)
|
|
+ #if EIGEN_GNUC_AT_LEAST(6,0) && defined(EIGEN_VECTORIZE_SSE) && !defined(__e2k__)
|
|
#define EIGEN_GEBP_2PX4_SPILLING_WORKAROUND __asm__ ("" : [a0] "+x,m" (A0),[a1] "+x,m" (A1));
|
|
#else
|
|
#define EIGEN_GEBP_2PX4_SPILLING_WORKAROUND
|