(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arm/
simd/
mve-compare-scalar-1.c
       1  /* { dg-do assemble } */
       2  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
       3  /* { dg-add-options arm_v8_1m_mve } */
       4  /* { dg-additional-options "-O3" } */
       5  
       6  #define COMPARE_REG(NAME, OP, TYPE, SCALAR)	  \
       7    TYPE						  \
       8    cmp_##NAME##_##TYPE##_scalar (TYPE a, SCALAR b) \
       9    {						  \
      10      return a OP b;				  \
      11    }
      12  
      13  #define COMPARE_TYPE(SCALAR, TYPE)				\
      14    COMPARE_REG (eq, ==, TYPE, SCALAR)				\
      15    COMPARE_REG (ne, !=, TYPE, SCALAR)				\
      16    COMPARE_REG (lt, <, TYPE, SCALAR)				\
      17    COMPARE_REG (le, <=, TYPE, SCALAR)				\
      18    COMPARE_REG (gt, >, TYPE, SCALAR)				\
      19    COMPARE_REG (ge, >=, TYPE, SCALAR)
      20  
      21  #define TEST_TYPE(NAME, ELEM, SIZE)			      \
      22    typedef ELEM NAME##SIZE __attribute__((vector_size(SIZE))); \
      23    COMPARE_TYPE (ELEM, NAME##SIZE)
      24  
      25  /* 64-bits vectors, not vectorized.  */
      26  TEST_TYPE (vs8, __INT8_TYPE__, 8)
      27  TEST_TYPE (vu8, __UINT8_TYPE__, 8)
      28  TEST_TYPE (vs16, __INT16_TYPE__, 8)
      29  TEST_TYPE (vu16, __UINT16_TYPE__, 8)
      30  TEST_TYPE (vs32, __INT32_TYPE__, 8)
      31  TEST_TYPE (vu32, __UINT32_TYPE__, 8)
      32  
      33  /* 128-bits vectors.  */
      34  TEST_TYPE (vs8, __INT8_TYPE__, 16)
      35  TEST_TYPE (vu8, __UINT8_TYPE__, 16)
      36  TEST_TYPE (vs16, __INT16_TYPE__, 16)
      37  TEST_TYPE (vu16, __UINT16_TYPE__, 16)
      38  TEST_TYPE (vs32, __INT32_TYPE__, 16)
      39  TEST_TYPE (vu32, __UINT32_TYPE__, 16)
      40  
      41  /* { 8 bits } x { eq, ne, lt, le, gt, ge, hi, cs }.
      42  /* { dg-final { scan-assembler-times {\tvcmp.i8\teq, q[0-9]+, q[0-9]+\n} 2 } } */
      43  /* { dg-final { scan-assembler-times {\tvcmp.i8\tne, q[0-9]+, q[0-9]+\n} 2 } } */
      44  /* { dg-final { scan-assembler-times {\tvcmp.s8\tlt, q[0-9]+, q[0-9]+\n} 1 } } */
      45  /* { dg-final { scan-assembler-times {\tvcmp.s8\tle, q[0-9]+, q[0-9]+\n} 1 } } */
      46  /* { dg-final { scan-assembler-times {\tvcmp.s8\tgt, q[0-9]+, q[0-9]+\n} 1 } } */
      47  /* { dg-final { scan-assembler-times {\tvcmp.s8\tge, q[0-9]+, q[0-9]+\n} 1 } } */
      48  /* { dg-final { scan-assembler-times {\tvcmp.u8\thi, q[0-9]+, q[0-9]+\n} 2 } } */
      49  /* { dg-final { scan-assembler-times {\tvcmp.u8\tcs, q[0-9]+, q[0-9]+\n} 2 } } */
      50  
      51  /* { 16 bits } x { eq, ne, lt, le, gt, ge, hi, cs }.
      52  /* { dg-final { scan-assembler-times {\tvcmp.i16\teq, q[0-9]+, q[0-9]+\n} 2 } } */
      53  /* { dg-final { scan-assembler-times {\tvcmp.i16\tne, q[0-9]+, q[0-9]+\n} 2 } } */
      54  /* { dg-final { scan-assembler-times {\tvcmp.s16\tlt, q[0-9]+, q[0-9]+\n} 1 } } */
      55  /* { dg-final { scan-assembler-times {\tvcmp.s16\tle, q[0-9]+, q[0-9]+\n} 1 } } */
      56  /* { dg-final { scan-assembler-times {\tvcmp.s16\tgt, q[0-9]+, q[0-9]+\n} 1 } } */
      57  /* { dg-final { scan-assembler-times {\tvcmp.s16\tge, q[0-9]+, q[0-9]+\n} 1 } } */
      58  /* { dg-final { scan-assembler-times {\tvcmp.u16\thi, q[0-9]+, q[0-9]+\n} 2 } } */
      59  /* { dg-final { scan-assembler-times {\tvcmp.u16\tcs, q[0-9]+, q[0-9]+\n} 2 } } */
      60  
      61  /* { 32 bits } x { eq, ne, lt, le, gt, ge, hi, cs }.
      62  /* { dg-final { scan-assembler-times {\tvcmp.i32\teq, q[0-9]+, q[0-9]+\n} 2 } } */
      63  /* { dg-final { scan-assembler-times {\tvcmp.i32\tne, q[0-9]+, q[0-9]+\n} 2 } } */
      64  /* { dg-final { scan-assembler-times {\tvcmp.s32\tlt, q[0-9]+, q[0-9]+\n} 1 } } */
      65  /* { dg-final { scan-assembler-times {\tvcmp.s32\tle, q[0-9]+, q[0-9]+\n} 1 } } */
      66  /* { dg-final { scan-assembler-times {\tvcmp.s32\tgt, q[0-9]+, q[0-9]+\n} 1 } } */
      67  /* { dg-final { scan-assembler-times {\tvcmp.s32\tge, q[0-9]+, q[0-9]+\n} 1 } } */
      68  /* { dg-final { scan-assembler-times {\tvcmp.u32\thi, q[0-9]+, q[0-9]+\n} 2 } } */
      69  /* { dg-final { scan-assembler-times {\tvcmp.u32\tcs, q[0-9]+, q[0-9]+\n} 2 } } */