blob: 77aa88b5b9cbe9bd5937c5d289e3d5ff7aff7fca [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-march=rv32gc_zbb" { target { rv32 } } } */
/* { dg-options "-march=rv64gc_zbb" { target { rv64 } } } */
/* { dg-skip-if "" { *-*-* } { "-O0" "-Os" "-Og" "-Oz" } } */
#include <stddef.h>
#define aligned32 __attribute__ ((aligned (32)))
const char myconst15[] aligned32 = { 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7 };
const char myconst23[] aligned32 = { 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7 };
const char myconst31[] aligned32 = { 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7 };
/* No expansion (unknown alignment) */
#define MY_MEM_CMP_N(N) \
int my_mem_cmp_##N(const char *b1, const char *b2) \
{ \
return __builtin_memcmp (b1, b2, N); \
}
/* No expansion (unknown alignment) */
#define MY_MEM_CMP_CONST_N(N) \
int my_mem_cmp_const_##N(const char *b1) \
{ \
return __builtin_memcmp (b1, myconst##N, sizeof(myconst##N)); \
}
MY_MEM_CMP_N(15)
MY_MEM_CMP_CONST_N(15)
MY_MEM_CMP_N(23)
MY_MEM_CMP_CONST_N(23)
MY_MEM_CMP_N(31)
MY_MEM_CMP_CONST_N(31)
/* { dg-final { scan-assembler-times "\t(call|tail)\tmemcmp" 6 } } */