eigen3/eigen3-CastXML-support-for-aarch64.patch
Dirk Stoecker b4b27e89e0 Accepting request 842001 from home:badshah400:branches:science
- Update to version 3.3.8:
  * General bug fixes:
    - Issue #1995: Fix a failure in the GEBP kernel when using
      small L1 cache sizes, OpenMP and FMA.
    - Issue #1990: Make CMake accept installation paths relative
      to CMAKE_INSTALL_PREFIX.
    - Issue #1974: Fix issue when reserving an empty sparse matrix
    - Issue #1823: Fix incorrect use of std::abs
    - Issue #1788: Fix rule-of-three violations inside the stable
      modules. This fixes deprecated-copy warnings when compiling
      with GCC>=9. Also protect some additional Base-constructors
      from getting called by user code code (Issue #1587)
    - Issue #1796: Make matrix squareroot usable for Map and Ref
      types.
    - Issue #1281: Fix AutoDiffScalar's make_coherent for nested
      expression of constant ADs.
    - Issue #1761: Fall back is_integral to std::is_integral in
      c++11 and fix internal::is_integral<size_t/ptrdiff_t> with
      MSVC 2013 and older.
    - Issue #1741: Fix self-adjoint*matrix, triangular*matrix, and
      triangular^1*matrix with a destination having a non-trivial
      inner-stride.
    - Issue #1741: Fix SelfAdjointView::rankUpdate and product to
      triangular part for destination with non-trivial inner
      stride.
    - Issue #1741: Fix C.noalias() = A*C; with C.innerStride()!=1.
    - Issue #1695: Fix a numerical robustness issue in BDCSVD.
    - Issue #1692: Enable enum as sizes of Matrix and Array.
    - Issue #1689: Fix used-but-marked-unused warning.
    - Issue #1679: Avoid possible division by 0 in complex-schur.
    - Issue #1676: Fix C++17 template deduction in DenseBase.
    - Issue #1669: Fix PartialPivLU/inverse with zero-sized
      matrices.
    - Issue #1557: Fix RealSchur and EigenSolver for matrices with
      only zeros on the diagonal.
  * Performance related fixes:
    - Issue #1562: Optimize evaluation of small products of the
      form s*A*B by rewriting them as: s*(A.lazyProduct(B)) to
      save a costly temporary. Measured speedup from 2x to 5x...
    - Fix performance issue with SimplicialLDLT for complexes
      coefficients.
  * Misc fixes:
    - Fix QuaternionBase::cast for quaternion map and wrapper.
    - Fix case issue with Lapack unit tests.
    - Fix possible conflict with an externally defined "real" type
      when using gcc-5.
    - Provide numext::[u]int{32,64}_t.
    - Initialize isometric transforms like affine transforms.
    - Change typedefs from private to protected to fix MSVC
      compilation.
    - Fix compilation of FFTW unit test.
    - Fix compilation of BLAS backend and frontend.
    - Fix real/imag namespace conflict.
    - Avoid throwing in destructors.
    - Fix precision issue in SelfAdjointEigenSolver.h
    - Make digits10() return an integer.
    - Use pade for matrix exponential also for complex values.
    - Cast Index to RealScalar in SVDBase to fix an issue when
      RealScalar is not implicitly convertible to Index.
    - Provide EIGEN_HAS_C99_MATH when using MSVC.
    - Various fixes in polynomial solver and its unit tests.
    - nd 4415d4e2d: Extend polynomial solver unit tests to
      complexes.
    - Automatically switch between EigenSolver and
      ComplexEigenSolver, and fix a few Real versus Scalar issues.
    - Enable construction of Ref<VectorType> from a runtime
      vector.
    - Fix a problem of old gcc versions having problems with
      recursive #pragma GCC diagnostic push/pop.
    - Fix compilation with expression template scalar type.
    - Backport AVX512 implementation to 3.3.
    - Fix StlDeque compilation issue with GCC 10.
    - Avoid false-positive test results in non-linear optimization
      tests.
    - Fix undefined behaviour caused by uncaught exceptions in OMP
      section of parallel GEBP kernel.
    - Fix a bug with half-precision floats on GPUs.
  * Fixed warnings:
    - Fix some maybe-uninitialized warnings in AmbiVector.h and
      test bdcsvd.
    - Silent cmake warnings in Lapack CMakeLists.txt.
    - Rename variable which shadows class name in Polynomials
      module.
    - Workaround gcc's alloc-size-larger-than= warning in
      DenseStorage.h.
    - Hide some unused variable warnings in g++8.1 in Tensor
      contraction mapper.
    - Fix gcc 8.1 warning: "maybe use uninitialized" in std tests.
    - Fix always true warning with gcc 4.7in test numext.
    - Fix nonnull-compare warning in test geo_alignedbox.
    - Disable ignoring attributes warning in vectorization logic
      test.
    - Fix a gcc7 warning about bool * bool in abs2 default
      implementation.
    - Fix a warning in SparseSelfAdjointView about a branch
      statement always evaluation to false.
- Minor rebase of patches to fix offsets.
- Specify relative path to includedir as option to cmake as it
  only accepts paths relative to CMAKE_INSTALL_PREFIX now.
- Drop Group tags.

OBS-URL: https://build.opensuse.org/request/show/842001
OBS-URL: https://build.opensuse.org/package/show/science/eigen3?expand=0&rev=31
2020-10-19 14:36:21 +00:00

55 lines
1.9 KiB
Diff

From 880fa43b2ba9c25f45ae3ad4871a6aabe558329f Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Wed, 16 Sep 2020 13:37:27 -0400
Subject: [PATCH] Add support for CastXML on ARM aarch64
CastXML simulates the preprocessors of other compilers, but actually
parses the translation unit with an internal Clang compiler.
Use the same `vld1q_u64` workaround that we do for Clang.
Fixes: #1979
---
Eigen/src/Core/arch/NEON/Complex.h | 4 ++--
Eigen/src/Core/util/Macros.h | 6 ++++++
2 files changed, 8 insertions(+), 2 deletions(-)
Index: eigen-3.3.8/Eigen/src/Core/arch/NEON/Complex.h
===================================================================
--- eigen-3.3.8.orig/Eigen/src/Core/arch/NEON/Complex.h
+++ eigen-3.3.8/Eigen/src/Core/arch/NEON/Complex.h
@@ -17,7 +17,7 @@ namespace internal {
inline uint32x4_t p4ui_CONJ_XOR() {
// See bug 1325, clang fails to call vld1q_u64.
-#if EIGEN_COMP_CLANG
+#if EIGEN_COMP_CLANG || EIGEN_COMP_CASTXML
uint32x4_t ret = { 0x00000000, 0x80000000, 0x00000000, 0x80000000 };
return ret;
#else
@@ -291,7 +291,7 @@ ptranspose(PacketBlock<Packet2cf,2>& ker
#if EIGEN_ARCH_ARM64 && !EIGEN_APPLE_DOUBLE_NEON_BUG
// See bug 1325, clang fails to call vld1q_u64.
-#if EIGEN_COMP_CLANG
+#if EIGEN_COMP_CLANG || EIGEN_COMP_CASTXML
static uint64x2_t p2ul_CONJ_XOR = {0x0, 0x8000000000000000};
#else
const uint64_t p2ul_conj_XOR_DATA[] = { 0x0, 0x8000000000000000 };
Index: eigen-3.3.8/Eigen/src/Core/util/Macros.h
===================================================================
--- eigen-3.3.8.orig/Eigen/src/Core/util/Macros.h
+++ eigen-3.3.8/Eigen/src/Core/util/Macros.h
@@ -35,6 +35,12 @@
#define EIGEN_COMP_CLANG 0
#endif
+/// \internal EIGEN_COMP_CASTXML set to 1 if being preprocessed by CastXML
+#if defined(__castxml__)
+ #define EIGEN_COMP_CASTXML 1
+#else
+ #define EIGEN_COMP_CASTXML 0
+#endif
/// \internal EIGEN_COMP_LLVM set to 1 if the compiler backend is llvm
#if defined(__llvm__)