[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


https://bugs.webkit.org/show_bug.cgi?id=73789





--- 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__
   ...
#else
   <original code>
#endif
 }

> 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