x86: Tune Skylake, Cannonlake and Icelake as Haswell
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / builtins / memops-asm-lib.c
blob3baf7a64622618b27132dee2e4a6fcecde8b3d66
1 extern void abort (void);
2 extern int inside_main;
3 typedef __SIZE_TYPE__ size_t;
5 #define TEST_ABORT if (inside_main) abort()
7 /* LTO code is at the present to able to track that asm alias my_bcopy on builtin
8 actually refers to this function. See PR47181. */
9 __attribute__ ((used))
10 void *
11 my_memcpy (void *d, const void *s, size_t n)
13 char *dst = (char *) d;
14 const char *src = (const char *) s;
15 while (n--)
16 *dst++ = *src++;
17 return (char *) d;
20 /* LTO code is at the present to able to track that asm alias my_bcopy on builtin
21 actually refers to this function. See PR47181. */
22 __attribute__ ((used))
23 void
24 my_bcopy (const void *s, void *d, size_t n)
26 char *dst = (char *) d;
27 const char *src = (const char *) s;
28 if (src >= dst)
29 while (n--)
30 *dst++ = *src++;
31 else
33 dst += n;
34 src += n;
35 while (n--)
36 *--dst = *--src;
40 __attribute__ ((used))
41 void *
42 my_memmove (void *d, const void *s, size_t n)
44 char *dst = (char *) d;
45 const char *src = (const char *) s;
46 if (src >= dst)
47 while (n--)
48 *dst++ = *src++;
49 else
51 dst += n;
52 src += n;
53 while (n--)
54 *--dst = *--src;
57 return d;
60 /* LTO code is at the present to able to track that asm alias my_bcopy on builtin
61 actually refers to this function. See PR47181. */
62 __attribute__ ((used))
63 void *
64 my_memset (void *d, int c, size_t n)
66 char *dst = (char *) d;
67 while (n--)
68 *dst++ = c;
69 return (char *) d;
72 /* LTO code is at the present to able to track that asm alias my_bcopy on builtin
73 actually refers to this function. See PR47181. */
74 __attribute__ ((used))
75 void
76 my_bzero (void *d, size_t n)
78 char *dst = (char *) d;
79 while (n--)
80 *dst++ = '\0';
83 void *
84 memcpy (void *d, const void *s, size_t n)
86 void *result = my_memcpy (d, s, n);
87 TEST_ABORT;
88 return result;
91 void
92 bcopy (const void *s, void *d, size_t n)
94 my_bcopy (s, d, n);
95 TEST_ABORT;
98 void *
99 memset (void *d, int c, size_t n)
101 void *result = my_memset (d, c, n);
102 TEST_ABORT;
103 return result;
106 void
107 bzero (void *d, size_t n)
109 my_bzero (d, n);
110 TEST_ABORT;
113 #ifdef __vxworks
114 /* The RTP C library uses bfill, which is defined in the same file as
115 bzero and bcopy. */
116 #include "lib/bfill.c"
117 #endif