http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61108

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The tree level looks fine at least to me:
  vect_val_8.15_127 = MEM[(const uint32_t *)vectp_vals.14_85];
  vect_patt_47.16_128 = WIDEN_MULT_EVEN_EXPR <vect_val_8.15_127, { 613566757,
613566757, 613566757, 613566757 }>;
  vect_patt_47.16_129 = WIDEN_MULT_ODD_EXPR <vect_val_8.15_127, { 613566757,
613566757, 613566757, 613566757 }>;
  vect__11.18_130 = vect_patt_47.16_128 >> 32;
  vect__11.18_131 = vect_patt_47.16_129 >> 32;
  vect_q_12.19_132 = VEC_PACK_TRUNC_EXPR <vect__11.18_130, vect__11.18_131>;
  vect__13.20_133 = vect_q_12.19_132 + vect_val_8.15_127;
  vect_t_14.21_134 = vect__13.20_133 >> 1;

But the assembly code looks broken:
    leaq    (%rdi,%r8,4), %r8
    movdqa    .LC0(%rip), %xmm1
    cmpl    $2, %r10d
    movdqa    (%r8), %xmm2
    movdqa    %xmm2, %xmm0
    movdqa    %xmm2, %xmm3
    pmuludq    %xmm1, %xmm0
    psrlq    $32, %xmm0
    psrlq    $32, %xmm3 <---- where did this come from?
    pmuludq    %xmm1, %xmm3
    psrlq    $32, %xmm3
    shufps    $136, %xmm3, %xmm0
    paddd    %xmm2, %xmm0
    psrld    $1, %xmm0

Reply via email to