1  /* { dg-do assemble } */
       2  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
       3  /* { dg-add-options arm_v8_1m_mve_fp } */
       4  /* { dg-additional-options "-O3 -funsafe-math-optimizations" } */
       5  
       6  #include <stdint.h>
       7  
       8  #define NB 4
       9  
      10  #define FUNC(OP, NAME)							\
      11    void test_ ## NAME ##_f (float * __restrict__ dest, float *a, float *b) { \
      12      int i;								\
      13      for (i=0; i<NB; i++) {						\
      14        dest[i] = a[i] OP b[i];						\
      15      }									\
      16    }
      17  
      18  FUNC(==, vcmpeq)
      19  FUNC(!=, vcmpne)
      20  FUNC(<, vcmplt)
      21  FUNC(<=, vcmple)
      22  FUNC(>, vcmpgt)
      23  FUNC(>=, vcmpge)
      24  
      25  /* { dg-final { scan-assembler-times {\tvcmp.f32\teq, q[0-9]+, q[0-9]+\n} 1 } } */
      26  /* { dg-final { scan-assembler-times {\tvcmp.f32\tne, q[0-9]+, q[0-9]+\n} 1 } } */
      27  /* { dg-final { scan-assembler-times {\tvcmp.f32\tlt, q[0-9]+, q[0-9]+\n} 1 } } */
      28  /* { dg-final { scan-assembler-times {\tvcmp.f32\tle, q[0-9]+, q[0-9]+\n} 1 } } */
      29  /* { dg-final { scan-assembler-times {\tvcmp.f32\tgt, q[0-9]+, q[0-9]+\n} 1 } } */
      30  /* { dg-final { scan-assembler-times {\tvcmp.f32\tge, q[0-9]+, q[0-9]+\n} 1 } } */