(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
clastb_8.c
       1  /* { dg-do assemble { target aarch64_asm_sve_ok } } */
       2  /* { dg-options "-O2 -ftree-vectorize -msve-vector-bits=256 --save-temps" } */
       3  
       4  #include <stdint.h>
       5  
       6  #define TEST_TYPE(TYPE) \
       7    void \
       8    test_##TYPE (TYPE *ptr, TYPE *a, TYPE *b, TYPE min_v) \
       9    { \
      10      TYPE last = *ptr; \
      11      for (int i = 0; i < 1024; i++) \
      12        if (a[i] < min_v) \
      13  	last = b[i]; \
      14      *ptr = last; \
      15    }
      16  
      17  TEST_TYPE (uint8_t);
      18  TEST_TYPE (uint16_t);
      19  TEST_TYPE (uint32_t);
      20  TEST_TYPE (uint64_t);
      21  
      22  /* { dg-final { scan-assembler {\tclastb\t(b[0-9]+), p[0-7], \1, z[0-9]+\.b\n} } } */
      23  /* { dg-final { scan-assembler {\tclastb\t(h[0-9]+), p[0-7], \1, z[0-9]+\.h\n} } } */
      24  /* { dg-final { scan-assembler {\tclastb\t(s[0-9]+), p[0-7], \1, z[0-9]+\.s\n} } } */
      25  /* { dg-final { scan-assembler {\tclastb\t(d[0-9]+), p[0-7], \1, z[0-9]+\.d\n} } } */
      26  /* { dg-final { scan-assembler-times {\tptrue\tp[0-9]+\.b,} 4 } } */