* 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.
This commit is contained in:
Benoit Jacob
2010-01-02 12:38:16 -05:00
parent ed5c972801
commit 25f8adfa6c
13 changed files with 140 additions and 43 deletions

View File

@@ -124,7 +124,7 @@ public :
Scalar* A0 = dst.data() + j*dst.stride();
int starti = j;
int alignedEnd = starti;
int alignedStart = (starti) + ei_alignmentOffset(&A0[starti], size-starti);
int alignedStart = (starti) + ei_first_aligned(&A0[starti], size-starti);
alignedEnd = alignedStart + ((size-alignedStart)/(2*PacketSize))*(PacketSize*2);
// do the non-vectorizable part of the assignment

View File

@@ -265,7 +265,7 @@ public :
int starti = j+2;
int alignedEnd = starti;
int alignedStart = (starti) + ei_alignmentOffset(&X[starti], N-starti);
int alignedStart = (starti) + ei_first_aligned(&X[starti], N-starti);
alignedEnd = alignedStart + ((N-alignedStart)/(PacketSize))*(PacketSize);
X[j] += t0 * A0[j];