[Pixman] mmx: Improving the load8888/store8888 functions

Søren Sandmann sandmann at cs.au.dk
Thu Feb 23 14:49:48 PST 2012


Matt Turner <mattst88 at gmail.com> writes:

> The load8888/store8888 functions act as a boundary between the integer
> and vector registers.
>
> Consider code like
>     uint32_t d = *dst;
>     __m64 vdest = load8888(d);
>
> The program loads 4 bytes of data into an integer register and then
> transfers it to the vector register, when it could have simply loaded
> into the vector register initially.
>
> The same situation exists for store8888.
>
> These patch modify the load8888 and store8888 functions to take pointers
> to load from and store into, allowing us to control exactly how they're
> done.

I'm fine with these patches, though it would make more sense to me to
separate more cleanly the concepts of "loading 32 bits from memory into
__m64" and "expanding 32 bits within an __m64".

The first part is the one that has to be done differently on Loongson.


Soren


More information about the Pixman mailing list