Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bpf, tests: add tests for optmized memmove replacement
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
Showing
3 changed files
with
468 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); |
Oops, something went wrong.