Load hg-to-git hash maps from ./eigen_git/.git/
#3.0.1
#3.1.1
#3.2.0
3.2.4
#574a7621809fe
58964a85800bd  # introduce AVX
#589cbd7e98174  # merge
589db7d49efbb  # introduce FMA
#590a078f442a3  # complex and AVX
590a419cea4a0  # improve packing with ptranspose
#59251e85c936d  # merge
#592e497a27ddc
593d5a795f673  # New gebp kernel: up to 3 packets x 4 register-level blocks
#5942c3c95990d  # merge
#596c9788d55b9  # Disable 3pX4 kernel on Altivec
#5999aa3dc4e21  # merge
6209452eb38f8   # before-evaluators
#6333eba5e1101  # Implement evaluator for sparse outer products
#663b9d314ae19
#6655ef95fabee  # Properly detect FMA support on ARM
#667fe25f3b8e3   # FMA has been wrongly disabled
#668409547a0c8
#6694304c73542   # merge default to tensors
#67216047c8d4a   # merge default to tensors
#67410a79ca3a3   # merge default to tensors
#674b7271dffb5   # Generalized the gebp apis
676bfdd9f3ac9   # Made the blocking computation aware of the l3 cache;<br/> Also optimized the blocking parameters to take<br/> into account the number of threads used for a computation.
6782dde63499c   # generalized gemv
6799f98650d0a   # ensured that contractions that can be reduced to a matrix vector product
#6840918c51e60   # merge tensor
684e972b55ec4   # change prefetching in gebp
#68598604576d1   # merge index conversion
68963eb0f6fe6   # clean blocking size computation
689db05f2d01e   # rotating kernel for ARM only
#6901b7e12847d   # result_of
69226275b250a   # fix prefetching change for ARM
692692136350b   # prefetching
693a8ad8887bf   # blocking size strategy
693bcf9bb5c1f   # avoid redundant pack_rhs
6987550107028   # dynamic loop swapping
69858740ce4c6   # rm dynamic loop swapping,<br/> adjust lhs's micro panel height to fully exploit L1 cache
698cd3bbffa73   # blocking heuristic:<br/> block on the rhs in L1 if the lhs fit in L1.
701488c15615a   # organize a little our default cache sizes,<br/> and use a saner default L1 outside of x86 (10% faster on Nexus 5)
701e56aabf205   # Refactor computeProductBlockingSizes to make room<br/> for the possibility of using lookup tables
701ca5c12587b   # Polish lookup tables generation
7013589a9c115   # actual_panel_rows computation should always be resilient<br/> to parameters not consistent with the known L1 cache size, see comment
70102babb9c0f   # Provide a empirical lookup table for blocking sizes measured on a Nexus 5.<br/> Only for float, only for Android on ARM 32bit for now.
7088481dc21ea   # Bug 986: add support for coefficient-based<br/> product with 0 depth.
709d7f51feb07   # Bug 992: don't select a 3p GEMM path with non-SIMD scalar types.
759f9303cc7c5   # 3.3-alpha1
765aba1eda71e   # help clang inlining
770fe630c9873   # Improve numerical accuracy in LLT and triangular solve<br/> by using true scalar divisions (instead of x * (1/y))
#8741d23430628   # Improved the matrix multiplication blocking in the case<br/> where mr is not a power of 2 (e.g on Haswell CPUs)
878f629fe95c8   # Made the index type a template parameter to evaluateProductBlockingSizes.<br/> Use numext::mini and numext::maxi instead of <br/> std::min/std::max to compute blocking sizes.
8975d51a7f12c   # Don't optimize the processing of the last rows of<br/> a matrix matrix product in cases that violate<br/> the assumptions made by the optimized code path.
8986136f4fdd4   # Remove the rotating kernel.
898e68e165a23   # Bug 256: enable vectorization with unaligned loads/stores.
91466e99ab6a1   # Relax mixing-type constraints for binary coeff-wise operators
91776236cdea4   # merge
917101ea26f5e   # Include the cost of stores in unrolling
921672076db5d   # Fix perf regression introduced in changeset e56aabf205
9210fa9e4a15c   # Fix perf regression in dgemm introduced by changeset 5d51a7f12c
936f6b3cf8de9   # 3.3-beta2
944504a4404f1   # Optimize expression matching 'd?=a-b*c' as 'd?=a; d?=b*c;'
95877e27fbeee   # 3.3-rc1
959779774f98c   # Bug 1311: fix alignment logic in some cases<br/> of (scalar*small).lazyProduct(small)
9729f9d8d2f62   # Disabled part of the matrix matrix peeling code<br/> that's incompatible with 512 bit registers
979eeac81b8c0   # 3.3.0
989c927af60ed   # Fix a performance regression in (mat*mat)*vec<br/> for which mat*mat was evaluated multiple times.
994fe696022ec   # Operators += and -= do not resize!
99466f65ccc36   # Ease compiler generating clean and efficient code in mat*vec
9946a5fe86098   # Complete rewrite of column-major-matrix * vector product<br/> to deliver higher performance of modern CPU.
99591003f3b86   # Improve performance of row-major-dense-matrix * vector products<br/> for recent CPUs.
997eb621413c1   # Revert vec/y to vec*(1/y) in row-major TRSM
10444bbc320468  # Bug 1435: fix aliasing issue in exressions like: A = C - B*A;
1073624df50945  # Adds missing EIGEN_STRONG_INLINE to support MSVC<br/> properly inlining small vector calculations
1094d428a199ab  # Bug 1562: optimize evaluation of small products<br/> of the form s*A*B by rewriting them as: s*(A.lazyProduct(B))<br/> to save a costly temporary.<br/> Measured speedup from 2x to 5x.
1096de9e31a06d  # Introduce the macro ei_declare_local_nested_eval to<br/> help allocating on the stack local temporaries via alloca,<br/> and let outer-products makes a good use of it.
11087b91c11207  # Bug 1578: Improve prefetching in matrix multiplication on MIPS.
1153aa110e681b  # PR 526: Speed up multiplication of small, dynamically sized matrices
11544ad359237a  # Vectorize row-by-row gebp loop iterations on 16 packets as well
1157a476054879  # Bug 1624: improve matrix-matrix product on ARM 64, 20% speedup
1160a4159dba08  # do not read buffers out of bounds
1163c53eececb0  # Implement AVX512 vectorization of std::complex<float/double>
11644e7746fe22  # Bug 1636: fix gemm performance issue with gcc>=6 and no FMA
1164956678a4ef  # Bug 1515: disable gebp's 3pX4 micro kernel<br/> for MSVC<=19.14 because of register spilling.
1165426bce7529  # fix EIGEN_GEBP_2PX4_SPILLING_WORKAROUND<br/> for non vectorized type, and non x86/64 target
11660d90637838  # enable spilling workaround on architectures with SSE/AVX
1166f159cf3d75  # Artificially increase l1-blocking size for AVX512.<br/> +10% speedup with current kernels.
11686dd93f7e3b  # Make code compile again for older compilers.
1175dbfcceabf5  # Bug: 1633: refactor gebp kernel and optimize for neon
117670e133333d  # Bug 1661: fix regression in GEBP and AVX512
11760f028f61cb  # GEBP: cleanup logic to choose between<br/> a 4 packets of 1 packet (=e118ce86fd+fix)
1180de77bf5d6c  # gebp: Add new ½ and ¼ packet rows per (peeling) round on the lhs
