[Pixman] [PATCH 0/2] SSSE3 iterator and fast path selection issues

Søren Sandmann Pedersen sandmann at cs.au.dk
Thu Aug 29 10:02:51 PDT 2013

The following patches add a new SSSE3 implementation and an iterator
for separable bilinear scaling. As expected, the new iterator is
clearly faster than the C iterator.

Unfortunately or fortunately, when combined with the SSE2 combiner, it
is also clearly faster than the existing SSE2 fast paths. This is a
problem because the fast paths will be chosen ahead of the general
implementation and therefore of the new iterator.

This is an instance of a more general problem that we have had for a
long time and which will only get worse as we add new iterators and
fast path. The following assumptions that we are making:

- That a fast path is always better than iterators + combiners
- That newer SIMD is always better than older (e.g., SSE2 > MMX)

are both wrong. The SSSE3 iterator demonstrates that the first is
wrong, and the second could be wrong for example if we had an MMX fast
path specialized for scaling and an SSE2 one specialized for general
bilinear transformation. Both could handle a scaling operation, but
it's quite likely that the MMX one would be faster.

It's not the first time this has come up:


but no clear solution has been found so far.

I still don't have a good answer; all ideas welcome.


ssse3: Add iterator for separable bilinear scaling

More information about the Pixman mailing list