[Webkit-unassigned] [Bug 73789] Need SSE optimization for SincResampler::Process()

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Dec 6 10:14:56 PST 2011


--- Comment #21 from Raymond Toy <rtoy at chromium.org>  2011-12-06 10:14:56 PST ---
(From update of attachment 118008)
View in context: https://bugs.webkit.org/attachment.cgi?id=118008&action=review

> Source/WebCore/platform/audio/SincResampler.cpp:260
> +#ifdef __SSE2__

I think visually, it might make more sense to stick the entire #ifdef __SSE2__ code inside the original
   float input;

So we get something like
   float input;
#ifdef __SSE2__
   <original code>

> Source/WebCore/platform/audio/SincResampler.cpp:282
> +#define CONVOLVE_4_SAMPLE                    \

Nit:  Probably should be named CONVOLVE_4_SAMPLES (plural, not singular).

> Source/WebCore/platform/audio/SincResampler.cpp:293
> +                    mInput = _mm_load_ps(inputP);

I might consider adding a new macro

#define LOAD_DATA(l1, l2) \
  mInput = mm_load_ps(inputP); \
  mK1 = _mm_##l1_ps(k1); \
  mK2 = _mm_##l2_ps(k2)

Then here we can say
  LOAD_DATA(load, load);

And below, we can have
  LOAD_DATA(loadu, load);
  LOAD_DATA(load, loadu);
  LOAD_DATA(loadu, loadu);

This makes it easy to see that they're all the same except whether we do aligned or unaligned loads.

(I didn't test this code; some minor changes might be needed.)

> Source/WebCore/platform/audio/SincResampler.cpp:327
> +            groupSumP = reinterpret_cast<float*>(&sums2);

I think I'd write the above as

sum1 += groupSumP[0];
sum1 += groupSumP[1];
sum1 += groupSumP[2];
sum1 += groupSumP[3];

Or maybe just sum1 += groupSumP[0] + groupSumP[1] + groupSumP[2] + groupSumP[3]

Same for sum2 below.

Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

More information about the webkit-unassigned mailing list