But then why test for non-aligned limbs?

Currently try test for all possible byte alignments! Or at least it is
supposed to. I'm still not sure I see what is going wrong with try. To
me this is still a puzzle.

I didn't actually look at the assembler yet. I am quite sure it *is*
broken, for some suitable definition of broken. But the real question
is how can that be? This code passes the tests and most certainly
should not!

Bill.

2009/12/10 Cactus <rieman...@googlemail.com>:
>
>
> On Dec 10, 3:56 pm, Dan Grayson <d...@math.uiuc.edu> wrote:
>> He could also mean that the machine instructions that move 8 byte
>> words to vector registers would segfault if you tried to use them on
>> nonaligned data, and that he tried to write mpn_lshift to try to avoid
>> doing that.  Those are the lines of code I pointed to in the original
>> report.  It would be a bug to write code that depended on alignment,
>> as I pointed out, unless you change the documentation about custom
>> memory allocators, which should not be done lightly.
>>
>> On Dec 10, 9:43 am, Bill Hart <goodwillh...@googlemail.com> wrote:
>>
>>
>>
>> > I found the following in correspondence with Jason (I can't just ask
>> > him, as his internet seems to be offline at the moment):
>>
>> > "Misaligned data will segfault on some arches and instructions eg K10
>> > and lshift"
>>
>> > So presumably he has assumed data is aligned on K10, written a fast
>> > version of the code for this case, then propagated it to other arches
>> > where no segfault will occur. Actually, I am unsure whether that is
>> > what he means, but that is what I infer.
>>
>> > If so, the solution would seem to be to replace the Core2 and Atom
>> > code with a safer version and leave the K10 code as is. That's really
>> > something Jason should do though, so we probably have to wait for him
>> > to pop up again.- Hide quoted text -
>>
>> - Show quoted text -
>
> Looking at the code, it seems to me that it has been designed for
> doing 16 byte operations that are at least 8 byte aligned.  This is
> what I would expect in 64-bit assembler code, which an reasonably be
> designed to rely on 8-byte alignment.
>
> Moreover, Jason's code does appear to account for any additional 8-
> byte segments are needed at the start or the end of a sequence of 16-
> byte aligned operations.
>
> So it looks to me like a code bug rather than a documentation bug.
>
> But the Custom Allocation section of tthe manual says nothing at all
> about alignment. It doesn't even require that limb allocations are
> properly aligned on the target machine - i.e. 4 byte alignment in 32-
> bit MPIR and 8 byte alignment in 64-bit MPIR!
>
> I suspect a lot of the assembler code won't deal well (if at all) with
> mis-aligned limbs so we should surely say something about this in the
> documentation of Custom Allocation.  In my view we should indicate
> that use of assembler code is suspect if memory allocation does not
> ensure correct limb alignment - i.e. n byte limbs should be at least n
> byte aligned.
>
>    Brian
>
> --
>
> You received this message because you are subscribed to the Google Groups 
> "mpir-devel" group.
> To post to this group, send email to mpir-de...@googlegroups.com.
> To unsubscribe from this group, send email to 
> mpir-devel+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/mpir-devel?hl=en.
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-de...@googlegroups.com.
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en.


Reply via email to