On Tue, Feb 28, 2012 at 9:25 PM, Søren Sandmann <[email protected]> wrote: > Matt Turner <[email protected]> writes: > >> To be used by the next commit. >> >> Signed-off-by: Matt Turner <[email protected]> >> --- >> pixman/pixman-mmx.c | 17 +++++++++++++++++ >> 1 files changed, 17 insertions(+), 0 deletions(-) >> >> diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c >> index 8b55b32..63edf18 100644 >> --- a/pixman/pixman-mmx.c >> +++ b/pixman/pixman-mmx.c >> @@ -416,6 +416,23 @@ store8888 (uint32_t *dest, __m64 v) >> store(dest, v); >> } >> >> +static force_inline pixman_bool_t >> +is_equal (__m64 a, __m64 b) >> +{ >> +#ifdef USE_LOONGSON_MMI >> + /* __m64 is double, we can compare directly. */ >> + return a == b; >> +#else >> + return to_uint64 (a) == to_uint64 (b); >> +#endif >> +} > > This looks like it will be somewhat less efficient on x86 and possibly > iwmmxt, because it will result in a and b being converted from mmx to 64 > bit integers before comparing. > > A better way probably be to do something along the lines of what the SSE > implementation does and introduce is_opaque() and is_zero() functions > that use pcmpeqw and pmovmskb. > > The pmovmskb instruction is part of the MMX extended instruction set, so > it can be handled similarly to pshufw and pmulhuw.
Ah, good suggestion. I'll make that change. _______________________________________________ Pixman mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/pixman
