]>
git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - tools/testing/selftests/powerpc/stringloops/memcmp.c
1 // SPDX-License-Identifier: GPL-2.0
8 #define ITERATIONS 10000
10 int test_memcmp(const void *s1
, const void *s2
, size_t n
);
12 /* test all offsets and lengths */
13 static void test_one(char *s1
, char *s2
)
15 unsigned long offset
, size
;
17 for (offset
= 0; offset
< SIZE
; offset
++) {
18 for (size
= 0; size
< (SIZE
-offset
); size
++) {
22 y
= memcmp(s1
+offset
, s2
+offset
, size
);
23 x
= test_memcmp(s1
+offset
, s2
+offset
, size
);
25 if (((x
^ y
) < 0) && /* Trick to compare sign */
26 ((x
| y
) != 0)) { /* check for zero */
27 printf("memcmp returned %d, should have returned %d (offset %ld size %ld)\n", x
, y
, offset
, size
);
29 for (i
= offset
; i
< offset
+size
; i
++)
30 printf("%02x ", s1
[i
]);
33 for (i
= offset
; i
< offset
+size
; i
++)
34 printf("%02x ", s2
[i
]);
42 static int testcase(void)
48 s1
= memalign(128, SIZE
);
54 s2
= memalign(128, SIZE
);
62 for (i
= 0; i
< ITERATIONS
; i
++) {
66 for (j
= 0; j
< SIZE
; j
++)
72 change
= random() % SIZE
;
73 s2
[change
] = random() & 0xff;
80 for (i
= 0; i
< ITERATIONS
; i
++) {
84 for (j
= 0; j
< SIZE
; j
++)
89 /* change multiple bytes, 1/8 of total */
90 for (j
= 0; j
< SIZE
/ 8; j
++) {
91 change
= random() % SIZE
;
92 s2
[change
] = random() & 0xff;
103 return test_harness(testcase
, "memcmp");