On Mon, 1 Dec 2003, Richard Ellis wrote:
> I just tried an experiment. I added a printf just after the
> assignment to the piqf pointer in quant_non_intra_sse to print out
> mulps_m2r( *(mmx_t*)&piqf[0], xmm2 );
>
> The value of &piqf[0] for my setup was 0x40eb7008, which is 8 byte
> aligned, but not 16 byte aligned. So, then I just tried hardwiring
> the mulps_m2r line to say:
>
> mulps_m2r( *(mmx_t*)0x40eb7010, xmm2 );
> where 0x40eb7010 is 16 byte aligned. Yes, I realize this will
> produce garbage output from mpeg2enc, I just wanted to see if...
This does confirm it though - P4 SSE instructions require 16
byte alignment and while older glibc versions have posix_memalign
there is a bug that causes it to not behave as expected.
> So it looks like the address for the piqf pointer needs to be 16 byte
> aligned, and at least with glibc 2.1.2 it's only getting 8 byte
> alignment from glibc.
Hmmm, &piqf needs to be aligned? The data accessed by dereference
(*piqf) needs to be aligned but the pointer itself?
I see that piqf is initialized with 'i_quant_matf' but I have not
traced the logic beyond that point.
Perhaps the problem isn't only in glibc, but the compiler and how
it is aligning data tables?
Steven Schultz
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
Mjpeg-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/mjpeg-users