Skip to content

Commit

Permalink
bpf, tests: add tests for optmized memmove replacement
Browse files Browse the repository at this point in the history
Extend the builtin test suite and add __bpf_memmove() tests along the
existing __bpf_mem{set,cpy,cmp}() ones. The memmove is split into four
subtests: 1) same (non-overlapping) memcpy test just with memmove, 2)
overlapping with dst < src, 3) overlapping with dst == src, 4) overlapping
with dst > src. Also improve / only use barrier_data() where it makes
sense.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
  • Loading branch information
borkmann committed May 25, 2020
1 parent cab27df commit ac303a5
Show file tree
Hide file tree
Showing 3 changed files with 468 additions and 3 deletions.
376 changes: 376 additions & 0 deletions bpf/tests/builtin_memmove.h
@@ -0,0 +1,376 @@
test___builtin_memmove1_single(8, 1);
test___builtin_memmove1_single(8, 2);
test___builtin_memmove1_single(8, 4);
test___builtin_memmove1_single(8, 6);
test___builtin_memmove1_single(8, 8);
test___builtin_memmove1_single(8, 10);
test___builtin_memmove1_single(8, 12);
test___builtin_memmove1_single(8, 14);
test___builtin_memmove1_single(8, 16);
test___builtin_memmove1_single(8, 18);
test___builtin_memmove1_single(8, 20);
test___builtin_memmove1_single(8, 22);
test___builtin_memmove1_single(8, 24);
test___builtin_memmove1_single(8, 26);
test___builtin_memmove1_single(8, 28);
test___builtin_memmove1_single(8, 30);
test___builtin_memmove1_single(8, 32);
test___builtin_memmove1_single(8, 34);
test___builtin_memmove1_single(8, 36);
test___builtin_memmove1_single(8, 38);
test___builtin_memmove1_single(8, 40);
test___builtin_memmove1_single(8, 42);
test___builtin_memmove1_single(8, 44);
test___builtin_memmove1_single(8, 46);
test___builtin_memmove1_single(8, 48);
test___builtin_memmove1_single(8, 50);
test___builtin_memmove1_single(8, 52);
test___builtin_memmove1_single(8, 54);
test___builtin_memmove1_single(8, 56);
test___builtin_memmove1_single(8, 58);
test___builtin_memmove1_single(8, 60);
test___builtin_memmove1_single(8, 62);
test___builtin_memmove1_single(8, 64);
test___builtin_memmove1_single(8, 66);
test___builtin_memmove1_single(8, 68);
test___builtin_memmove1_single(8, 70);
test___builtin_memmove1_single(8, 72);
test___builtin_memmove1_single(8, 74);
test___builtin_memmove1_single(8, 76);
test___builtin_memmove1_single(8, 78);
test___builtin_memmove1_single(8, 80);
test___builtin_memmove1_single(8, 82);
test___builtin_memmove1_single(8, 84);
test___builtin_memmove1_single(8, 86);
test___builtin_memmove1_single(8, 88);
test___builtin_memmove1_single(8, 90);
test___builtin_memmove1_single(8, 92);
test___builtin_memmove1_single(8, 94);
test___builtin_memmove1_single(8, 96);
test___builtin_memmove1_single(16, 1);
test___builtin_memmove1_single(16, 2);
test___builtin_memmove1_single(16, 4);
test___builtin_memmove1_single(16, 6);
test___builtin_memmove1_single(16, 8);
test___builtin_memmove1_single(16, 10);
test___builtin_memmove1_single(16, 12);
test___builtin_memmove1_single(16, 14);
test___builtin_memmove1_single(16, 16);
test___builtin_memmove1_single(16, 18);
test___builtin_memmove1_single(16, 20);
test___builtin_memmove1_single(16, 22);
test___builtin_memmove1_single(16, 24);
test___builtin_memmove1_single(16, 26);
test___builtin_memmove1_single(16, 28);
test___builtin_memmove1_single(16, 30);
test___builtin_memmove1_single(16, 32);
test___builtin_memmove1_single(16, 34);
test___builtin_memmove1_single(16, 36);
test___builtin_memmove1_single(16, 38);
test___builtin_memmove1_single(16, 40);
test___builtin_memmove1_single(16, 42);
test___builtin_memmove1_single(16, 44);
test___builtin_memmove1_single(16, 46);
test___builtin_memmove1_single(16, 48);
test___builtin_memmove1_single(32, 1);
test___builtin_memmove1_single(32, 2);
test___builtin_memmove1_single(32, 4);
test___builtin_memmove1_single(32, 6);
test___builtin_memmove1_single(32, 8);
test___builtin_memmove1_single(32, 10);
test___builtin_memmove1_single(32, 12);
test___builtin_memmove1_single(32, 14);
test___builtin_memmove1_single(32, 16);
test___builtin_memmove1_single(32, 18);
test___builtin_memmove1_single(32, 20);
test___builtin_memmove1_single(32, 22);
test___builtin_memmove1_single(32, 24);
test___builtin_memmove1_single(64, 1);
test___builtin_memmove1_single(64, 2);
test___builtin_memmove1_single(64, 4);
test___builtin_memmove1_single(64, 6);
test___builtin_memmove1_single(64, 8);
test___builtin_memmove1_single(64, 10);
test___builtin_memmove1_single(64, 12);
test___builtin_memmove2_single(8, 1);
test___builtin_memmove2_single(8, 2);
test___builtin_memmove2_single(8, 4);
test___builtin_memmove2_single(8, 6);
test___builtin_memmove2_single(8, 8);
test___builtin_memmove2_single(8, 10);
test___builtin_memmove2_single(8, 12);
test___builtin_memmove2_single(8, 14);
test___builtin_memmove2_single(8, 16);
test___builtin_memmove2_single(8, 18);
test___builtin_memmove2_single(8, 20);
test___builtin_memmove2_single(8, 22);
test___builtin_memmove2_single(8, 24);
test___builtin_memmove2_single(8, 26);
test___builtin_memmove2_single(8, 28);
test___builtin_memmove2_single(8, 30);
test___builtin_memmove2_single(8, 32);
test___builtin_memmove2_single(8, 34);
test___builtin_memmove2_single(8, 36);
test___builtin_memmove2_single(8, 38);
test___builtin_memmove2_single(8, 40);
test___builtin_memmove2_single(8, 42);
test___builtin_memmove2_single(8, 44);
test___builtin_memmove2_single(8, 46);
test___builtin_memmove2_single(8, 48);
test___builtin_memmove2_single(8, 50);
test___builtin_memmove2_single(8, 52);
test___builtin_memmove2_single(8, 54);
test___builtin_memmove2_single(8, 56);
test___builtin_memmove2_single(8, 58);
test___builtin_memmove2_single(8, 60);
test___builtin_memmove2_single(8, 62);
test___builtin_memmove2_single(8, 64);
test___builtin_memmove2_single(8, 66);
test___builtin_memmove2_single(8, 68);
test___builtin_memmove2_single(8, 70);
test___builtin_memmove2_single(8, 72);
test___builtin_memmove2_single(8, 74);
test___builtin_memmove2_single(8, 76);
test___builtin_memmove2_single(8, 78);
test___builtin_memmove2_single(8, 80);
test___builtin_memmove2_single(8, 82);
test___builtin_memmove2_single(8, 84);
test___builtin_memmove2_single(8, 86);
test___builtin_memmove2_single(8, 88);
test___builtin_memmove2_single(8, 90);
test___builtin_memmove2_single(8, 92);
test___builtin_memmove2_single(8, 94);
test___builtin_memmove2_single(8, 96);
test___builtin_memmove2_single(16, 1);
test___builtin_memmove2_single(16, 2);
test___builtin_memmove2_single(16, 4);
test___builtin_memmove2_single(16, 6);
test___builtin_memmove2_single(16, 8);
test___builtin_memmove2_single(16, 10);
test___builtin_memmove2_single(16, 12);
test___builtin_memmove2_single(16, 14);
test___builtin_memmove2_single(16, 16);
test___builtin_memmove2_single(16, 18);
test___builtin_memmove2_single(16, 20);
test___builtin_memmove2_single(16, 22);
test___builtin_memmove2_single(16, 24);
test___builtin_memmove2_single(16, 26);
test___builtin_memmove2_single(16, 28);
test___builtin_memmove2_single(16, 30);
test___builtin_memmove2_single(16, 32);
test___builtin_memmove2_single(16, 34);
test___builtin_memmove2_single(16, 36);
test___builtin_memmove2_single(16, 38);
test___builtin_memmove2_single(16, 40);
test___builtin_memmove2_single(16, 42);
test___builtin_memmove2_single(16, 44);
test___builtin_memmove2_single(16, 46);
test___builtin_memmove2_single(16, 48);
test___builtin_memmove2_single(32, 1);
test___builtin_memmove2_single(32, 2);
test___builtin_memmove2_single(32, 4);
test___builtin_memmove2_single(32, 6);
test___builtin_memmove2_single(32, 8);
test___builtin_memmove2_single(32, 10);
test___builtin_memmove2_single(32, 12);
test___builtin_memmove2_single(32, 14);
test___builtin_memmove2_single(32, 16);
test___builtin_memmove2_single(32, 18);
test___builtin_memmove2_single(32, 20);
test___builtin_memmove2_single(32, 22);
test___builtin_memmove2_single(32, 24);
test___builtin_memmove2_single(64, 1);
test___builtin_memmove2_single(64, 2);
test___builtin_memmove2_single(64, 4);
test___builtin_memmove2_single(64, 6);
test___builtin_memmove2_single(64, 8);
test___builtin_memmove2_single(64, 10);
test___builtin_memmove2_single(64, 12);
test___builtin_memmove3_single(8, 1);
test___builtin_memmove3_single(8, 2);
test___builtin_memmove3_single(8, 4);
test___builtin_memmove3_single(8, 6);
test___builtin_memmove3_single(8, 8);
test___builtin_memmove3_single(8, 10);
test___builtin_memmove3_single(8, 12);
test___builtin_memmove3_single(8, 14);
test___builtin_memmove3_single(8, 16);
test___builtin_memmove3_single(8, 18);
test___builtin_memmove3_single(8, 20);
test___builtin_memmove3_single(8, 22);
test___builtin_memmove3_single(8, 24);
test___builtin_memmove3_single(8, 26);
test___builtin_memmove3_single(8, 28);
test___builtin_memmove3_single(8, 30);
test___builtin_memmove3_single(8, 32);
test___builtin_memmove3_single(8, 34);
test___builtin_memmove3_single(8, 36);
test___builtin_memmove3_single(8, 38);
test___builtin_memmove3_single(8, 40);
test___builtin_memmove3_single(8, 42);
test___builtin_memmove3_single(8, 44);
test___builtin_memmove3_single(8, 46);
test___builtin_memmove3_single(8, 48);
test___builtin_memmove3_single(8, 50);
test___builtin_memmove3_single(8, 52);
test___builtin_memmove3_single(8, 54);
test___builtin_memmove3_single(8, 56);
test___builtin_memmove3_single(8, 58);
test___builtin_memmove3_single(8, 60);
test___builtin_memmove3_single(8, 62);
test___builtin_memmove3_single(8, 64);
test___builtin_memmove3_single(8, 66);
test___builtin_memmove3_single(8, 68);
test___builtin_memmove3_single(8, 70);
test___builtin_memmove3_single(8, 72);
test___builtin_memmove3_single(8, 74);
test___builtin_memmove3_single(8, 76);
test___builtin_memmove3_single(8, 78);
test___builtin_memmove3_single(8, 80);
test___builtin_memmove3_single(8, 82);
test___builtin_memmove3_single(8, 84);
test___builtin_memmove3_single(8, 86);
test___builtin_memmove3_single(8, 88);
test___builtin_memmove3_single(8, 90);
test___builtin_memmove3_single(8, 92);
test___builtin_memmove3_single(8, 94);
test___builtin_memmove3_single(8, 96);
test___builtin_memmove3_single(16, 1);
test___builtin_memmove3_single(16, 2);
test___builtin_memmove3_single(16, 4);
test___builtin_memmove3_single(16, 6);
test___builtin_memmove3_single(16, 8);
test___builtin_memmove3_single(16, 10);
test___builtin_memmove3_single(16, 12);
test___builtin_memmove3_single(16, 14);
test___builtin_memmove3_single(16, 16);
test___builtin_memmove3_single(16, 18);
test___builtin_memmove3_single(16, 20);
test___builtin_memmove3_single(16, 22);
test___builtin_memmove3_single(16, 24);
test___builtin_memmove3_single(16, 26);
test___builtin_memmove3_single(16, 28);
test___builtin_memmove3_single(16, 30);
test___builtin_memmove3_single(16, 32);
test___builtin_memmove3_single(16, 34);
test___builtin_memmove3_single(16, 36);
test___builtin_memmove3_single(16, 38);
test___builtin_memmove3_single(16, 40);
test___builtin_memmove3_single(16, 42);
test___builtin_memmove3_single(16, 44);
test___builtin_memmove3_single(16, 46);
test___builtin_memmove3_single(16, 48);
test___builtin_memmove3_single(32, 1);
test___builtin_memmove3_single(32, 2);
test___builtin_memmove3_single(32, 4);
test___builtin_memmove3_single(32, 6);
test___builtin_memmove3_single(32, 8);
test___builtin_memmove3_single(32, 10);
test___builtin_memmove3_single(32, 12);
test___builtin_memmove3_single(32, 14);
test___builtin_memmove3_single(32, 16);
test___builtin_memmove3_single(32, 18);
test___builtin_memmove3_single(32, 20);
test___builtin_memmove3_single(32, 22);
test___builtin_memmove3_single(32, 24);
test___builtin_memmove3_single(64, 1);
test___builtin_memmove3_single(64, 2);
test___builtin_memmove3_single(64, 4);
test___builtin_memmove3_single(64, 6);
test___builtin_memmove3_single(64, 8);
test___builtin_memmove3_single(64, 10);
test___builtin_memmove3_single(64, 12);
test___builtin_memmove4_single(8, 1);
test___builtin_memmove4_single(8, 2);
test___builtin_memmove4_single(8, 4);
test___builtin_memmove4_single(8, 6);
test___builtin_memmove4_single(8, 8);
test___builtin_memmove4_single(8, 10);
test___builtin_memmove4_single(8, 12);
test___builtin_memmove4_single(8, 14);
test___builtin_memmove4_single(8, 16);
test___builtin_memmove4_single(8, 18);
test___builtin_memmove4_single(8, 20);
test___builtin_memmove4_single(8, 22);
test___builtin_memmove4_single(8, 24);
test___builtin_memmove4_single(8, 26);
test___builtin_memmove4_single(8, 28);
test___builtin_memmove4_single(8, 30);
test___builtin_memmove4_single(8, 32);
test___builtin_memmove4_single(8, 34);
test___builtin_memmove4_single(8, 36);
test___builtin_memmove4_single(8, 38);
test___builtin_memmove4_single(8, 40);
test___builtin_memmove4_single(8, 42);
test___builtin_memmove4_single(8, 44);
test___builtin_memmove4_single(8, 46);
test___builtin_memmove4_single(8, 48);
test___builtin_memmove4_single(8, 50);
test___builtin_memmove4_single(8, 52);
test___builtin_memmove4_single(8, 54);
test___builtin_memmove4_single(8, 56);
test___builtin_memmove4_single(8, 58);
test___builtin_memmove4_single(8, 60);
test___builtin_memmove4_single(8, 62);
test___builtin_memmove4_single(8, 64);
test___builtin_memmove4_single(8, 66);
test___builtin_memmove4_single(8, 68);
test___builtin_memmove4_single(8, 70);
test___builtin_memmove4_single(8, 72);
test___builtin_memmove4_single(8, 74);
test___builtin_memmove4_single(8, 76);
test___builtin_memmove4_single(8, 78);
test___builtin_memmove4_single(8, 80);
test___builtin_memmove4_single(8, 82);
test___builtin_memmove4_single(8, 84);
test___builtin_memmove4_single(8, 86);
test___builtin_memmove4_single(8, 88);
test___builtin_memmove4_single(8, 90);
test___builtin_memmove4_single(8, 92);
test___builtin_memmove4_single(8, 94);
test___builtin_memmove4_single(8, 96);
test___builtin_memmove4_single(16, 1);
test___builtin_memmove4_single(16, 2);
test___builtin_memmove4_single(16, 4);
test___builtin_memmove4_single(16, 6);
test___builtin_memmove4_single(16, 8);
test___builtin_memmove4_single(16, 10);
test___builtin_memmove4_single(16, 12);
test___builtin_memmove4_single(16, 14);
test___builtin_memmove4_single(16, 16);
test___builtin_memmove4_single(16, 18);
test___builtin_memmove4_single(16, 20);
test___builtin_memmove4_single(16, 22);
test___builtin_memmove4_single(16, 24);
test___builtin_memmove4_single(16, 26);
test___builtin_memmove4_single(16, 28);
test___builtin_memmove4_single(16, 30);
test___builtin_memmove4_single(16, 32);
test___builtin_memmove4_single(16, 34);
test___builtin_memmove4_single(16, 36);
test___builtin_memmove4_single(16, 38);
test___builtin_memmove4_single(16, 40);
test___builtin_memmove4_single(16, 42);
test___builtin_memmove4_single(16, 44);
test___builtin_memmove4_single(16, 46);
test___builtin_memmove4_single(16, 48);
test___builtin_memmove4_single(32, 1);
test___builtin_memmove4_single(32, 2);
test___builtin_memmove4_single(32, 4);
test___builtin_memmove4_single(32, 6);
test___builtin_memmove4_single(32, 8);
test___builtin_memmove4_single(32, 10);
test___builtin_memmove4_single(32, 12);
test___builtin_memmove4_single(32, 14);
test___builtin_memmove4_single(32, 16);
test___builtin_memmove4_single(32, 18);
test___builtin_memmove4_single(32, 20);
test___builtin_memmove4_single(32, 22);
test___builtin_memmove4_single(32, 24);
test___builtin_memmove4_single(64, 1);
test___builtin_memmove4_single(64, 2);
test___builtin_memmove4_single(64, 4);
test___builtin_memmove4_single(64, 6);
test___builtin_memmove4_single(64, 8);
test___builtin_memmove4_single(64, 10);
test___builtin_memmove4_single(64, 12);

0 comments on commit ac303a5

Please sign in to comment.