1  /* { dg-do compile } */
       2  /* { dg-require-effective-target vect_int } */
       3  /* { dg-require-effective-target vect_float } */
       4  /* { dg-options "-Ofast" } */
       5  
       6  #pragma GCC target "+nosve"
       7  
       8  #include <arm_neon.h>
       9  
      10  void s_mult_i (int32_t* restrict res, int32_t* restrict a, int32_t b)
      11  {
      12      for (int x = 0; x < 16; x++)
      13        res[x] = a[x] * b;
      14  }
      15  
      16  void s_mult_f (float32_t* restrict res, float32_t* restrict a, float32_t b)
      17  {
      18      for (int x = 0; x < 16; x++)
      19        res[x] = a[x] * b;
      20  }
      21  
      22  /* { dg-final { scan-assembler-times {\s+mul\tv[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.s\[0\]} 4 } } */
      23  /* { dg-final { scan-assembler-times {\s+fmul\tv[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.s\[0\]} 4 } } */