/* { dg-do compile } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.2 -mtune=corei7" } */
/* { dg-require-effective-target c99_runtime } */

#include <math.h>

struct XYZ
{
  float x;
  float y;
  float z;
};

void
norm (struct XYZ *in, struct XYZ *out, int size)
{
  int i;
  for (i = 0; i < size; ++i)
    {
      float n = sqrt (in[i].x * in[i].x + in[i].y * in[i].y + in[i].z * in[i].z);
      out[i].x = in[i].x / n;
      out[i].y = in[i].y / n;
      out[i].z = in[i].z / n;
    }
}

/* { dg-final { scan-assembler "rsqrtps" } } */