FYI there are some benchmarks in https://reviews.llvm.org/D64082 that are not submitted but could be used as basis for making decisions for this patch.
Jul 18 2019
Jul 3 2019
Clarify top comment.
Add comment for buffer size.
Name magical constant.
Be evel less permissive as to what we allow the compiler to see.
Thanks for working on this! I'm not familiar with how the benchmarking framework works, so someone else should definitely have a look.
Does the framework automatically account for and filter out noisy results? I'm guessing that tiny memcmp() will have a lot of run-to-run variation.
Address review comments.
Jul 2 2019
test-suite benchmarks: https://reviews.llvm.org/D64082
Jun 27 2019
For information, I had to roll this back at it breaks sanitizers. Sanitizer passes insert some nobuiltin attributes on all memcmp calls to prevent expansion and still be able to intercept them (maybeMarkSanitizerLibraryCallNoBuiltin), and these passes are added last in opt:
Jun 26 2019
I encourage adding small memcmp tests to test-suite as a follow-up, so we know that things won't break going forward.
Rebase on r364384.
Jun 25 2019
Remove asm testing.
Split off options refactoring to r364281, rebase.
Jun 21 2019
Ping. Any other concerns ?
Amazing work Roman ! A few nits on the form, I'll let others more knowledgeable about AMD architectures comment on the model itself.
Jun 19 2019
Thanks for the review.
Jun 17 2019
Jun 11 2019
Jun 6 2019
- Mark ldmxscr as writing to memory. Unfortunately the DAG relies on intrinsics writing to memory to determine side-effet-ness.
- Mark stmxscr as having side effects, as discusse din the review.
- Update tests.
Jun 5 2019
A side effecting instruction doesn't prevent other non-side effecting instructions from moving across it.
Don’t we need stmxcsr to have side effects to keep it from reordering relative to ldmxcsr?
There are a bunch of tests to update, but I'd like to get opinions on this before going further. I'm not sure why the properties were not already there. Did I miss something ?
Jun 3 2019
May 28 2019
Make ExpandMemCmp preserve the DomTree.
May 24 2019
May 23 2019
May 22 2019
add missing inline
May 21 2019
@courbet Please can you ensure you have EXPENSIVE_CHECKS enabled in all your builds before going any further - you've been breaking the buildbots for well over a week now and you still haven't fixed the underlying issue.
May 17 2019
May 16 2019
Do we have a test for this? I don't think it is a problem but if we do we could update it. Otherwise, LGTM.