{
size_t i, iters = INNER_LOOP_ITERS;
timing_t start, stop, cur;
-
+ for (i = 0; i < iters / 64; ++i)
+ {
+ CALL (impl, dst, src, len);
+ }
TIMING_NOW (start);
for (i = 0; i < iters; ++i)
{
size_t i, j;
char *s1, *s2;
size_t repeats;
- align1 &= 63;
+ align1 &= (getpagesize () - 1);
if (align1 + len >= page_size)
return;
- align2 &= 63;
+ align2 &= (getpagesize () - 1);
if (align2 + len >= page_size)
return;
{
json_ctx_t json_ctx;
size_t i;
-
+ size_t half_page = getpagesize () / 2;
test_init ();
json_init (&json_ctx, 0, stdout);
{
do_test (&json_ctx, 0, 0, 1 << i, 1);
do_test (&json_ctx, i, 0, 1 << i, 1);
+ do_test (&json_ctx, i + 32, 0, 1 << i, 1);
do_test (&json_ctx, 0, i, 1 << i, 1);
+ do_test (&json_ctx, 0, i + 32, 1 << i, 1);
do_test (&json_ctx, i, i, 1 << i, 1);
+ do_test (&json_ctx, i + 32, i + 32, 1 << i, 1);
+ do_test (&json_ctx, half_page, 0, 1 << i, 1);
+ do_test (&json_ctx, half_page + i, 0, 1 << i, 1);
+ do_test (&json_ctx, half_page, i, 1 << i, 1);
+ do_test (&json_ctx, half_page + i, i, 1 << i, 1);
}
for (i = 0; i < 32; ++i)
do_test (&json_ctx, i, 0, i, 0);
do_test (&json_ctx, 0, i, i, 0);
do_test (&json_ctx, i, i, i, 0);
+ do_test (&json_ctx, half_page, 0, i, 0);
+ do_test (&json_ctx, half_page + i, 0, i, 0);
+ do_test (&json_ctx, half_page, i, i, 0);
+ do_test (&json_ctx, half_page + i, i, i, 0);
+ do_test (&json_ctx, getpagesize () - 1, 0, i, 0);
+ do_test (&json_ctx, 0, getpagesize () - 1, i, 0);
}
for (i = 3; i < 32; ++i)
{
if ((i & (i - 1)) == 0)
- continue;
+ continue;
do_test (&json_ctx, 0, 0, 16 * i, 1);
do_test (&json_ctx, i, 0, 16 * i, 1);
do_test (&json_ctx, 0, i, 16 * i, 1);
do_test (&json_ctx, i, i, 16 * i, 1);
+ do_test (&json_ctx, half_page, 0, 16 * i, 1);
+ do_test (&json_ctx, half_page + i, 0, 16 * i, 1);
+ do_test (&json_ctx, half_page, i, 16 * i, 1);
+ do_test (&json_ctx, half_page + i, i, 16 * i, 1);
}
for (i = 32; i < 64; ++i)
do_test (&json_ctx, i, 0, 32 * i, 1);
do_test (&json_ctx, 0, i, 32 * i, 1);
do_test (&json_ctx, i, i, 32 * i, 1);
+ do_test (&json_ctx, half_page, 0, 32 * i, 1);
+ do_test (&json_ctx, half_page + i, 0, 32 * i, 1);
+ do_test (&json_ctx, half_page, i, 32 * i, 1);
+ do_test (&json_ctx, half_page + i, i, 32 * i, 1);
}
do_test (&json_ctx, 0, 0, getpagesize (), 1);
- for (i = 0; i <= 32; ++i)
+ for (i = 0; i <= 48; ++i)
{
do_test (&json_ctx, 0, 0, 2048 + 64 * i, 1);
do_test (&json_ctx, i, 0, 2048 + 64 * i, 1);
+ do_test (&json_ctx, i + 32, 0, 2048 + 64 * i, 1);
do_test (&json_ctx, 0, i, 2048 + 64 * i, 1);
+ do_test (&json_ctx, 0, i + 32, 2048 + 64 * i, 1);
do_test (&json_ctx, i, i, 2048 + 64 * i, 1);
+ do_test (&json_ctx, i + 32, i + 32, 2048 + 64 * i, 1);
+ do_test (&json_ctx, half_page, 0, 2048 + 64 * i, 1);
+ do_test (&json_ctx, half_page + i, 0, 2048 + 64 * i, 1);
+ do_test (&json_ctx, half_page, i, 2048 + 64 * i, 1);
+ do_test (&json_ctx, half_page + i, i, 2048 + 64 * i, 1);
+ do_test (&json_ctx, i, 1, 2048 + 64 * i, 1);
+ do_test (&json_ctx, 1, i, 2048 + 64 * i, 1);
+ do_test (&json_ctx, i + 32, 1, 2048 + 64 * i, 1);
+ do_test (&json_ctx, 1, i + 32, 2048 + 64 * i, 1);
+ do_test (&json_ctx, half_page + i, 1, 2048 + 64 * i, 1);
+ do_test (&json_ctx, half_page + 1, i, 2048 + 64 * i, 1);
}
json_array_end (&json_ctx);
{
size_t i, iters = INNER_LOOP_ITERS;
timing_t start, stop, cur;
-
+ for (i = 0; i < iters / 64; ++i)
+ {
+ CALL (impl, dst, src, len);
+ }
TIMING_NOW (start);
for (i = 0; i < iters; ++i)
{
size_t i, j;
char *s1, *s2;
- align1 &= 63;
+ align1 &= (getpagesize () - 1);
if (align1 + len >= page_size)
return;
- align2 &= 63;
+ align2 &= (getpagesize () - 1);
if (align2 + len >= page_size)
return;
{
json_ctx_t json_ctx;
size_t i;
+ size_t half_page = getpagesize () / 2;
test_init ();
do_test (&json_ctx, i, i, 32 * i);
}
+ for (i = 0; i <= 48; ++i)
+ {
+ do_test (&json_ctx, 0, 0, 2048 + 64 * i);
+ do_test (&json_ctx, i, 0, 2048 + 64 * i);
+ do_test (&json_ctx, 0, i, 2048 + 64 * i);
+ do_test (&json_ctx, i, i, 2048 + 64 * i);
+ do_test (&json_ctx, half_page, 0, 2048 + 64 * i);
+ do_test (&json_ctx, 0, half_page, 2048 + 64 * i);
+ do_test (&json_ctx, half_page + i, 0, 2048 + 64 * i);
+ do_test (&json_ctx, i, half_page, 2048 + 64 * i);
+ do_test (&json_ctx, half_page, i, 2048 + 64 * i);
+ do_test (&json_ctx, 0, half_page + i, 2048 + 64 * i);
+ do_test (&json_ctx, half_page + i, i, 2048 + 64 * i);
+ do_test (&json_ctx, i, half_page + i, 2048 + 64 * i);
+ }
+
json_array_end (&json_ctx);
json_attr_object_end (&json_ctx);
json_attr_object_end (&json_ctx);