static void do_one_test (impl_t *impl, const char *s, const char *rej, RES_TYPE exp_res) { RES_TYPE res = CALL (impl, s, rej); size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; if (res != exp_res) { error (0, 0, "Wrong result in function %s %p %p", impl->name, (void *) res, (void *) exp_res); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, s, rej); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, const CHAR *s, int c, size_t n, CHAR *exp_res) { CHAR *res = CALL (impl, s, c, n); size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; if (res != exp_res) { error (0, 0, "Wrong result in function %s %p %p", impl->name, res, exp_res); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, s, c, n); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, size_t len __attribute__((unused))) { size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; if (CALL (impl, dst, src) != STRCPY_RESULT (dst, len)) { error (0, 0, "Wrong result in function %s %p %p", impl->name, CALL (impl, dst, src), STRCPY_RESULT (dst, len)); ret = 1; return; } if (STRCMP (dst, src) != 0) { error (0, 0, "Wrong result in function %s dst \"%" sfmt "\" src \"%" sfmt "\"", impl->name, dst, src); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, dst, src); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, const CHAR *s, size_t exp_len) { size_t len = CALL (impl, s), i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; if (len != exp_len) { error (0, 0, "Wrong result in function %s %zd %zd", impl->name, len, exp_len); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, s); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, void *dst, const void *src, int c, size_t len, size_t n) { void *expect = len > n ? NULL : (char *) dst + len; size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; if (CALL (impl, dst, src, c, n) != expect) { error (0, 0, "Wrong result in function %s %p %p", impl->name, CALL (impl, dst, src, c, n), expect); ret = 1; return; } if (memcmp (dst, src, len > n ? n : len) != 0) { error (0, 0, "Wrong result in function %s", impl->name); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, dst, src, c, n); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result) { size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; int result = CALL (impl, s1, s2); if ((exp_result == 0 && result != 0) || (exp_result < 0 && result >= 0) || (exp_result > 0 && result <= 0)) { error (0, 0, "Wrong result in function %s %d %d", impl->name, result, exp_result); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, s1, s2); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, char *dst, const char *src, size_t len, size_t dlen) { char *res; size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; if (dlen <= len) { if (impl->test == 1) return; chk_fail_ok = 1; if (setjmp (chk_fail_buf) == 0) { res = CALL (impl, dst, src, dlen); printf ("*** Function %s (%zd; %zd) did not __chk_fail\n", impl->name, len, dlen); chk_fail_ok = 0; ret = 1; } return; } else res = CALL (impl, dst, src, dlen); if (res != STRCPY_RESULT (dst, len)) { printf ("Wrong result in function %s %p %p\n", impl->name, res, STRCPY_RESULT (dst, len)); ret = 1; return; } if (strcmp (dst, src) != 0) { printf ("Wrong result in function %s dst \"%s\" src \"%s\"\n", impl->name, dst, src); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, dst, src, dlen); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, char *dst, char *src, const char *orig_src, size_t len) { size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; /* This also clears the destination buffer set by the previous run. */ memcpy (src, orig_src, len); #ifdef TEST_BCOPY CALL (impl, src, dst, len); #else char *res; res = CALL (impl, dst, src, len); if (res != dst) { error (0, 0, "Wrong result in function %s %p %p", impl->name, res, dst); ret = 1; return; } #endif if (memcmp (dst, orig_src, len) != 0) { error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"", impl->name, dst, src); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { #ifdef TEST_BCOPY CALL (impl, src, dst, len); #else CALL (impl, dst, src, len); #endif } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) { size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, s1, s2); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, const CHAR *s, int c, const CHAR *exp_res) { size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, s, c); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, size_t len, size_t n) { size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; if (CALL (impl, dst, src, n) != STRNCPY_RESULT (dst, len, n)) { error (0, 0, "Wrong result in function %s %p %p", impl->name, CALL (impl, dst, src, n), dst); ret = 1; return; } if (memcmp (dst, src, (len > n ? n : len) * sizeof (CHAR)) != 0) { error (0, 0, "Wrong result in function %s", impl->name); ret = 1; return; } if (n > len) { size_t i; for (i = len; i < n; ++i) if (dst [i] != '\0') { error (0, 0, "Wrong result in function %s", impl->name); ret = 1; return; } } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, dst, src, n); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, void *dst, const void *src, int c, size_t len, size_t n) { size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, dst, src, c, n); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, const void *haystack, size_t haystack_len, const void *needle, size_t needle_len, const void *expected) { size_t i, iters = INNER_LOOP_ITERS_SMALL; timing_t start, stop, cur; TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, haystack, haystack_len, needle, needle_len); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, char *dst, const char *src, size_t len) { size_t i, iters = 16; timing_t start, stop, cur; /* Must clear the destination buffer updated by the previous run. */ for (i = 0; i < len; i++) dst[i] = 0; if (CALL (impl, dst, src, len) != MEMCPY_RESULT (dst, len)) { error (0, 0, "Wrong result in function %s %p %p", impl->name, CALL (impl, dst, src, len), MEMCPY_RESULT (dst, len)); ret = 1; return; } if (memcmp (dst, src, len) != 0) { error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"", impl->name, dst, src); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, dst, src, len); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n) { size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; CHAR tstbuf[n]; #ifdef TEST_BZERO simple_bzero (tstbuf, n); CALL (impl, s, n); if (memcmp (s, tstbuf, n) != 0) #else CHAR *res = CALL (impl, s, c, n); if (res != s || SIMPLE_MEMSET (tstbuf, c, n) != tstbuf || MEMCMP (s, tstbuf, n) != 0) #endif /* !TEST_BZERO */ { error (0, 0, "Wrong result in function %s", impl->name); ret = 1; return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { #ifdef TEST_BZERO CALL (impl, s, n); #else CALL (impl, s, c, n); #endif /* !TEST_BZERO */ } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); }
static void do_one_test (impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n) { size_t i, iters = 16; timing_t start, stop, cur; CHAR *tstbuf = malloc (n * sizeof (*s)); assert (tstbuf != NULL); /* Must clear the destination buffer updated by the previous run. */ for (i = 0; i < n; i++) s[i] = 0; CHAR *res = CALL (impl, s, c, n); if (res != s || SIMPLE_MEMSET (tstbuf, c, n) != tstbuf || MEMCMP (s, tstbuf, n) != 0) { error (0, 0, "Wrong result in function %s", impl->name); ret = 1; free (tstbuf); return; } TIMING_NOW (start); for (i = 0; i < iters; ++i) { CALL (impl, s, c, n); } TIMING_NOW (stop); TIMING_DIFF (cur, start, stop); TIMING_PRINT_MEAN ((double) cur, (double) iters); free (tstbuf); }