Commit Graph

158 Commits

Author SHA1 Message Date
Gael Guennebaud
b47ef1431f Fix many long to int implicit conversions 2014-07-08 16:47:11 +02:00
Gael Guennebaud
450d0c3de0 Make sure that calls to broadcast4 are 16 bytes aligned 2014-04-25 22:25:48 +02:00
Gael Guennebaud
3d8d0f6269 Enable vectorization of pack_rhs with a column-major RHS.
Rename and generalize Kernel<*> to PacketBlock<*,N>.
2014-04-25 10:56:18 +02:00
Gael Guennebaud
b0e19db1cf Enable fused madd for Altivec 2014-04-24 23:17:18 +02:00
Gael Guennebaud
5c5231ab71 Workaround gcc's default ABI not being able to distinghish between vector types of different sizes. 2014-04-22 16:03:19 +02:00
Gael Guennebaud
d5a795f673 New gebp kernel handling up to 3 packets x 4 register-level blocks. Huge speeup on Haswell.
This changeset also introduce new vector functions: ploadquad and predux4.
2014-04-16 17:05:11 +02:00
Benoit Steiner
feaf7c7e6d Optimized SSE unaligned loads and stores when compiling a 64bit target with a recent version of gcc (ie gcc 4.8). 2014-04-14 10:44:17 -07:00
Gael Guennebaud
1c0728043a Workaround alignment warnings 2014-03-30 22:43:47 +02:00
Gael Guennebaud
10aa14592a Add a mechanism to recursively access to half-size packet types 2014-03-28 10:18:04 +01:00
Benoit Steiner
8a94cb3edd Implemented the SSE version of the gather and scatter packet primitives. 2014-03-27 18:29:01 -07:00
Gael Guennebaud
052aedd394 Implement pcplflip, palign, predux and the likes from AVC/complexes 2014-03-27 14:47:00 +01:00
Benoit Steiner
a419cea4a0 Created the ptranspose packet primitive that can transpose an array of N packets, where N is the number of words in each packet. This primitive will be used to complete the vectorization of the gemm_pack_lhs and gemm_pack_rhs functions.
Implemented the primitive using SSE instructions.
2014-03-26 19:03:07 -07:00
Benoit Steiner
cc73164aa8 Merged latest updates from the parent branch 2014-03-26 15:23:59 -07:00
Gael Guennebaud
bc401eb6fa Implement new 1 packet x 8 gebp kernel 2014-03-26 18:53:00 +01:00
Gael Guennebaud
b286a1e75c add pbroadcast2/4 generic intrinsics 2014-03-26 16:46:36 +01:00
Benoit Steiner
db7d49efbb Added support for FMA instructions 2014-02-24 13:45:32 -08:00
Benoit Steiner
64a85800bd Added support for AVX to Eigen. 2014-01-29 11:43:05 -08:00
Gael Guennebaud
a7621809fe Remove useless register keyword, and optimize predux_min/max for SSE4 2014-01-25 16:54:13 +01:00
Gael Guennebaud
01fd880424 Revert previous change and introduce a new workaround regarding gcc generating a shufps instruction instead of the more efficient pshufd instruction.
The trick consists in introducing a new pload1 function to be used in low level product kernels for which bug #203 does not apply.
Indeed, it turned out that using inline assembly prevents gcc of doing a good job at instructtion reordering.
2014-03-20 16:03:46 +01:00
Gael Guennebaud
c39a3fa7a1 Makes gcc to generate a pshufd instruction for pset1 2014-03-20 10:14:26 +01:00
Gael Guennebaud
9f3f42d66a fix a few "dead stores" warnings 2013-10-26 13:59:02 +02:00
Gael Guennebaud
c47010e3d2 typo 2013-08-19 16:10:00 +02:00
Gael Guennebaud
d4dd6aaed2 Fix bug #642: add vectorization of sqrt for doubles, and make sqrt really safe if EIGEN_FAST_MATH is disabled 2013-08-19 16:02:27 +02:00
Gael Guennebaud
9f11f80db1 Make psqrt works with numeric_limits<float>::min 2013-06-14 10:55:05 +02:00
Jeff Dean
d5fa5001a7 Fix bug #613: psqrt was incorrect for small numbers 2013-06-13 18:17:27 +02:00
Gael Guennebaud
62670c83a0 Fix bug #314: move remaining math functions from internal to numext namespace 2013-06-10 23:40:56 +02:00
Gael Guennebaud
b3adc4face Add missing pconj specializations 2013-05-17 17:25:29 +02:00
Gael Guennebaud
d63712163c Add SSE4 min/max for integers 2013-03-20 18:28:40 +01:00
Gael Guennebaud
8745da14d8 Fix SSE plog<float> to return -INF on 0 2013-02-14 23:34:05 +01:00
Gael Guennebaud
e4ec63aee7 Suppress annoying "may be used uninitialized in this function" warning with gcc >= 4.6 2013-01-24 11:59:17 +01:00
Gael Guennebaud
7d98c864ff fix warning 2012-08-01 10:44:59 +02:00
Gael Guennebaud
22e0ebbc2c fix lower acceptable bound of SSE pexp for double 2012-07-31 23:11:04 +02:00
Gael Guennebaud
e8aa1f00c5 add SSE pexp function for double, make use of _mm_floor_p* for pexp with SSE4.1 2012-07-27 23:40:04 +02:00
Benoit Jacob
69124cfca2 Automatic relicensing to MPL2 using Keirs script. Manual fixup follows. 2012-07-13 14:42:47 -04:00
Gael Guennebaud
a3e700db72 fix bug #475: .exp() now returns +inf when overflow occurs (SSE) 2012-06-14 10:38:39 +02:00
Jitse Niesen
3c412183b2 Get rid of include directives inside namespace blocks (bug #339). 2012-04-15 11:06:28 +01:00
Gael Guennebaud
634fedaf68 proper C++ casting 2012-01-31 18:56:25 +01:00
Gael Guennebaud
9c86ee2695 fix static inline versus inline static issues (the former is the correct order) 2012-01-31 12:58:52 +01:00
Gael Guennebaud
c331c092d5 no comment 2011-09-21 14:20:41 +02:00
Gael Guennebaud
7301f4345c quick workaround of MSVC9' ICE in pset1 2011-09-21 14:18:41 +02:00
Gael Guennebaud
c8e1b679fa re-enable fast pset1-pstore by introducing a new higher level pstore1 function 2011-03-02 10:55:44 +01:00
Benoit Jacob
eef03525b8 fix bug #203: revert to using _mm_set1_p[sd] 2011-02-28 00:04:05 -05:00
Benoit Jacob
9be2712bf7 remove now-useless comments 2011-02-27 22:35:17 -05:00
Benoit Jacob
0612768c1c fix bug #201: Clang too has intrinsics bugs preventing us to use custom unaligned loads 2011-02-27 21:59:07 -05:00
Benoit Jacob
b3544ce2ae bug #195 - fix this once and for all: just never use _mm_load_sd on gcc/i386, it generates redundant x87 ops 2011-02-27 17:26:59 -05:00
Benoit Jacob
5dfae4524b fix bug #195: fast unaligned load for integer using _mm_load_sd failed when the value interpreted as a NaN 2011-02-24 10:31:57 -05:00
Gael Guennebaud
c121e6f390 implement ploaddup for complex and SSE/NEON even though they are not used in practice 2011-02-23 16:31:42 +01:00
Gael Guennebaud
6e01780541 fix a couple of issues with pcplxflip 2011-02-23 17:51:40 +03:00
Gael Guennebaud
fb1a29fed5 fix ICE and warning with gcc 4.2.4 2011-02-21 16:11:18 +01:00
Gael Guennebaud
8f8c67b8bd fix bug #186 (in 32 bits mode, gcc 4.3 messed up with pfirst for complex<float>) 2011-02-18 15:47:17 +01:00