On Thu, Jun 28, 2012 at 8:57 AM, Richard Henderson <r...@redhat.com> wrote:
> On 2012-06-28 07:05, Jakub Jelinek wrote:
>> Unfortunately the addition of the builtin_mul_widen_* hooks on i?86 seems
>> to pessimize the generated code for gcc.dg/vect/pr51581-3.c
>> testcase (at least with -O3 -mavx) compared to when the hooks aren't
>> present, because i?86 has more natural support for widen mult lo/hi
>> compoared to widen mult even/odd, but I assume that on powerpc it is the
>> other way around.  So, how should I find out if both VEC_WIDEN_MULT_*_EXPR
>> and builtin_mul_widen_* are possible for the particular vectype which one
>> will be cheaper?
>
> I would assume that if the builtin exists, then it is cheaper.
>
> I disagree about "x86 has more natural support for hi/lo".  The basic sse2 
> multiplication is even.  One shift per input is needed to generate odd.  On 
> the other hand, one interleave per input is required for both hi/lo.  So 4 
> setup insns for hi/lo, and 2 setup insns for even/odd.  And on top of all 
> that, XOP includes multiply odd at least for signed V4SI.
>
> I'll have a look at the test case you mention while I re-look at the 
> patches...
>

The upper 128-bit of 256-bit AVX instructions aren't a good fit with the
current vectorizer infrastructure.


-- 
H.J.

Reply via email to