[Pixman] mmx: Improving the load8888/store8888 functions

Matt Turner mattst88 at gmail.com
Fri Feb 24 05:50:03 PST 2012


On Thu, Feb 23, 2012 at 5:49 PM, Søren Sandmann <sandmann at cs.au.dk> wrote:
> 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".

I agree, and I've actually found use for a load 32-bits from memory
into __m64 without the expand. I will send a patch soon that adds it,
and from there I'll see how I can simplify this.

Thanks for the review.

Matt


More information about the Pixman mailing list