https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111683

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org
           Keywords|needs-bisection             |

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r7-3163-g973625a04b3d9351f2485e37f7d3382af2aed87e
Slightly reduced:
#include <emmintrin.h>

void convn_script(const double in9[10], const double in10[7], double out5[16])
{
  int iB = 0;
  int iC = 0;
  __builtin_memset(&out5[0], 0, 16U * sizeof(double));
  for (int i = 0; i < 7; i++) {
    int b_i;
    int vectorUB;
    if (i + 10 <= 15)
      b_i = 9;
    else
      b_i = 15 - i;
    vectorUB = (((b_i + 1) / 2) << 1) - 2;
    for (int r = 0; r <= vectorUB; r += 2) {
      __m128d b_r;
      b_i = iC + r;
      b_r = _mm_loadu_pd(&out5[b_i]);
      _mm_storeu_pd(&out5[b_i],
                    _mm_add_pd(b_r, _mm_mul_pd(_mm_set1_pd(in10[iB]),
                                               _mm_loadu_pd(&in9[r]))));
    }
    iC = iB + 1;
    iB++;
  }
}

int main() {
  double in9[10] = {0.8147, 0.9058, 0.1270, 0.9134, 0.6324, 0.0975, 0.2785,
0.5469, 0.9575, 0.9649};
  double in10[7] = {0.1576, 0.9706, 0.9572, 0.4854, 0.8003, 0.1419, 0.4218};
  double out5[16];
  convn_script(in9, in10, out5);
  for(int i = 0; i < 16; i++)
    __builtin_printf ("%d %f\n", i, out5[i]);
}

Reply via email to