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. Soren _______________________________________________ Pixman mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/pixman
