83 Commits

Author SHA1 Message Date
Gael Guennebaud
620bd28480 enable posix_memalign for QNX 2010-03-05 09:44:21 +01:00
Konstantinos Margaritis
112c550b4a Added initial NEON support, most tests pass however we had to use some hackish workarounds
as gcc on ARM (both CodeSourcery 4.4.1 used and experimental 4.5) fail to
ensure proper alignment with __attribute__((aligned(16))). This has to be
fixed upstream to remove the workarounds.
2010-03-03 11:25:41 -06:00
Benoit Jacob
07023b94d8 forgot defined(...) 2010-02-28 10:11:28 -05:00
Benoit Jacob
9334ed4444 on 64-bit systems, glibc's malloc returns 16-byte aligned ptrs, and we now take advantage of that. 2010-02-28 10:10:53 -05:00
Benoit Jacob
a480e7e60f * fix ei_handmade_aligned_realloc (was calling realloc on wrong ptr)
* add missing std::  (at least for QNX compatibility)
* add big comments to "structure" the file
2010-02-28 09:10:41 -05:00
Hauke Heibel
ff8c2149c1 Added a generic reallocation implementation based on ei_aligned_malloc/_free.
Rewrote ei_handmade_aligned_realloc such that it is now using std::realloc.
Reorganized functions in Memory.h for better readability.
Add missing <cerrno> include to Core (it's now required in Memory.h).
2010-02-28 14:32:57 +01:00
Benoit Jacob
e84f7e07e9 add ei_posix_memalign_realloc 2010-02-27 18:57:07 -05:00
Benoit Jacob
22fabb8940 add missing inline keyword, thanks to Eamon. 2010-02-27 17:51:48 -05:00
Hauke Heibel
6c9eb36222 Added support for realloc based conservative resizing. 2010-02-27 17:25:07 +01:00
Benoit Jacob
769641bc58 * Implement the ByOuterInner accessors
* use them (big simplification in Assign.h)
* axe (Inner|Outer)StrideAtCompileTime that were just introduced
* ei_int_if_dynamic now asserts that the size is the expected one: adapt to that in Block.h
* add rowStride() / colStride() in DenseBase
* implement innerStride() / outerStride() everywhere needed
2010-02-25 21:01:52 -05:00
Benoit Jacob
37ca4200b2 Piotr's patch was missing many occurences of size_t. So,
using std::size_t;
This is the only way that we can ensure QCC support in the long term without having to think about it everytime.
2010-02-12 08:58:29 -05:00
Piotr Trojanek
1701a5d1f8 std:: namespace fixup for more restricive compilers such as QNX's QCC 2010-02-10 13:24:47 +01:00
Thomas Capricelli
57275b2b8c make some changes to please clang, fix some warnings too. 2010-01-04 23:21:04 +01:00
Benoit Jacob
25f8adfa6c * Fix bug #79: ei_alignmentOffset was assuming that ptr is multiple of
sizeof(Scalar), and that assumption breaks with double on linux x86-32.
* Rename ei_alignmentOffset to ei_first_aligned
* Rewrite its documentation and part of its body
* The variant taking a MatrixBase doesn't need a separate size argument.
2010-01-02 12:38:16 -05:00
Benoit Jacob
5cb779e5e1 * introduce ei_alignmentOffset(MatrixBase&,Integer)
couldnt put it in Memory.h as it needs the definition of MatrixBase
* make Redux use it
2009-12-16 08:53:14 -05:00
Hauke Heibel
4498864fc8 Fixed a bad type conversion. 2009-12-13 09:26:57 +01:00
Hauke Heibel
d088ee35f6 Added to possibility to compile unit tests at maximum warning level.
Silenced (amongst others) many conversion related warnings.
2009-12-12 11:39:07 +01:00
Gael Guennebaud
aa0974286f fix compilation adding a makeconst helper struct 2009-11-07 09:07:23 +01:00
Benoit Jacob
bf91003d37 FreeBSD: determine precisely when malloc is 16-byte aligned 2009-06-29 00:08:34 +02:00
Hauke Heibel
f26c691678 Renamed internal helper functions from the Memory header. 2009-06-04 17:25:15 +02:00
Hauke Heibel
5f04f8eb6b Fixes #9. Thanks to the (unknown) bug contributor. 2009-06-04 09:11:35 +02:00
Benoit Jacob
42848498aa fixes #5 : freebsd really has aligned malloc 2009-05-22 23:54:52 +02:00
Benoit Jacob
6347b1db5b remove sentence "Eigen itself is part of the KDE project."
it never made very precise sense. but now does it still make any?
2009-05-22 20:25:33 +02:00
Benoit Jacob
dd390470e1 simplification (no reason anymore to write that in that convoluted way) 2009-05-15 16:05:45 +00:00
Benoit Jacob
5ee9f1a705 argh, forgot to re-add the throw() 2009-05-15 15:54:52 +00:00
Benoit Jacob
126284d08b * fix bugs in EigenTesting.cmake: it didn't work with -DEIGEN_NO_ASSERTION_CHECKING=ON
* only try...catch if exceptions are enabled
2009-05-15 15:53:26 +00:00
Gael Guennebaud
b6c76c30cd apply patch from Hauke Heibel cleaning overloaded operator new/detete 2009-05-07 20:33:48 +00:00
Benoit Jacob
95bda5e6ab let the user disable alignment altogether by #defining EIGEN_DONT_ALIGN.
Until now, the user had to edit the source code to do that.
Internally, add EIGEN_ALIGN that takes into account both EIGEN_DONT_ALIGN.and
EIGEN_ARCH_WANTS_ALIGNMENT. From now on, only EIGEN_ALIGN should be used to
test whether we want to align.
2009-05-03 13:50:56 +00:00
Benoit Jacob
32e9801890 CREDIT Ross Smith: fix posix_memalign detection 2009-04-24 13:26:36 +00:00
Gael Guennebaud
d78eb02627 add aligned_allocator operator == and != as suggested by Hauke Heibel 2009-04-09 21:22:02 +00:00
Benoit Jacob
502bf4a81d * fix the binary bloat issue, Rohit's idea was the good one
* a few dox fixes (alloc routines do return 0 on error) and forgot to update version number in CMakeLists
2009-04-06 13:33:42 +00:00
Gael Guennebaud
3d86dcf473 oops, got confused by the preprocessor directives around
posix_memalign...
2009-02-21 16:35:57 +00:00
Gael Guennebaud
7c4f9ecf0c fix posix_memalign return value warning 2009-02-21 16:23:18 +00:00
Gael Guennebaud
3009d79a1f * allow Matrix to be resized to 0 (solve a lot of troubles with
some containers)
* new workaround for std::vector which is supposed to work for any
  classes having EIGEN_MAKE_ALIGNED_OPERATOR_NEW as discussed on ML
2009-02-07 11:16:15 +00:00
Benoit Jacob
93a089adc8 disable alignment altogether outside of the platforms which potentially have SSE or AltiVec
This should remove most portability issues to other platforms where data alignment issues (including
overloading operator new and new[]) can be tricky, and where data alignment is not needed in the first place.
2009-02-04 16:53:03 +00:00
Benoit Jacob
f3d5ba0c1f the BSD's don't have aligned malloc after all 2009-02-02 13:22:19 +00:00
Gael Guennebaud
9849931500 eventually it turns out that our current
EIGEN_WORK_AROUND_QT_BUG_CALLING_WRONG_OPERATOR_NEW_FIXED_IN_QT_4_5
is the right way to go for allowing placement new on a class having
overloaded operator new. Qt 4.5 won't add the :: prefix. (I still do not
understand how you can distinghish a placement new from an overloaded
operator new taking an allocator as argument...)
2009-01-23 16:31:03 +00:00
Benoit Jacob
5f43a42ee7 * remove set(), revert to old behavior where = resizes
* try to be clever in matrix ctors and operator=: be lazy when we can, always allow
  to copy rowvector into columnvector, check the template parameters,
  try to factor the code better
* add missing copy ctor in UnalignedType
* fix bug in the traits of DiagonalProduct
* renaming: EIGEN_TUNE_FOR_CPU_CACHE_SIZE
* update the dox a little
2009-01-21 17:10:23 +00:00
Benoit Jacob
385fd3d918 * clarify the situation with experimental parts
* remove all what was marked deprecated
2009-01-19 15:02:24 +00:00
Benoit Jacob
b179f8e1a4 add NetBSD to the list of OSes on which malloc is guaranteed to be 16
byte aligned, after discussion with Mark Davies.

CCMAIL: mark@ecs.vuw.ac.nz
2009-01-12 22:39:26 +00:00
Benoit Jacob
4d44ca226e * make std::vector specializations also for Transform and for Quaternion
* update test_stdvector
* Quaternion() does nothing (instead of bug)
* update test_geometry
* some renaming
2009-01-12 16:06:04 +00:00
Gael Guennebaud
f86818b5a6 bug fix in ei_stack_free 2009-01-12 14:20:21 +00:00
Gael Guennebaud
a4252584ed bugfix in ei_handmade_aligned_free for null pointers 2009-01-12 12:54:32 +00:00
Benoit Jacob
4361cb8913 EIGEN_NO_MALLOC must also block traditional unaligned malloc 2009-01-10 14:24:55 +00:00
Benoit Jacob
3efe6e4176 remove ei_new_allocator
remove corresponding part of test_dynalloc
2009-01-10 02:50:09 +00:00
Benoit Jacob
5bef59e371 (previous commit was bad) 2009-01-09 21:32:44 +00:00
Benoit Jacob
265ab86005 overloaded operator delete should call ei_conditinal_aligned_free, not
ei_aligned_free
2009-01-09 21:28:53 +00:00
Benoit Jacob
b3d580dec7 ei_aligned_delete was running through the various paths in the wrong
order
2009-01-09 20:57:06 +00:00
Benoit Jacob
fd831d5a12 * implement handmade aligned malloc, fast but always wastes 16 bytes of memory.
only used as fallback for now, needs benchmarking.
  also notice that some malloc() impls do waste memory to keep track of alignment
  and other stuff (check msdn's page on malloc).
* expand test_dynalloc to cover low level aligned alloc funcs. Remove the old
  #ifdef EIGEN_VECTORIZE...
* rewrite the logic choosing an aligned alloc, some new stuff:
  * malloc() already aligned on freebsd and windows x64 (plus apple already)
  * _mm_malloc() used only if EIGEN_VECTORIZE
  * posix_memalign: correct detection according to man page (not necessarily
    linux specific), don't attempt to declare it if the platform didn't declare it
    (there had to be a reason why it didn't declare it, right?)
2009-01-09 14:56:44 +00:00
Kenneth Frank Riddile
f52a9e5315 * Added aligned_allocator for using 16-byte aligned types with STL containers. There is still a compile-time problem with STL containers that have a standard-conformant resize() method, but this should resolve the original user issue which was storing aligned objects in a std::map. 2009-01-09 00:55:53 +00:00