Go to file
Dmitry Vyukov afdcc96d9f tsan: optimize memory access functions
The optimization is two-fold:
First, the algorithm now uses SSE instructions to
handle all 4 shadow slots at once. This makes processing
faster.
Second, if shadow contains the same access, we do not
store the event into trace. This increases effective
trace size, that is, tsan can remember up to 10x more
previous memory accesses.

Perofrmance impact:
Before:
[       OK ] DISABLED_BENCH.Mop8Read (2461 ms)
[       OK ] DISABLED_BENCH.Mop8Write (1836 ms)
After:
[       OK ] DISABLED_BENCH.Mop8Read (1204 ms)
[       OK ] DISABLED_BENCH.Mop8Write (976 ms)
But this measures only fast-path.
On large real applications the speedup is ~20%.

Trace size impact:
On app1:
Memory accesses                   :       1163265870
  Including same                  :        791312905 (68%)
on app2:
Memory accesses                   :        166875345
  Including same                  :        150449689 (90%)
90% of filtered events means that trace size is effectively 10x larger.

llvm-svn: 209897
2014-05-30 13:36:29 +00:00
clang Remove unnecessary test. 2014-05-30 13:19:28 +00:00
clang-tools-extra Revert "Remove redundant check discovered in post-commit review of r209505." 2014-05-30 13:31:14 +00:00
compiler-rt tsan: optimize memory access functions 2014-05-30 13:36:29 +00:00
debuginfo-tests
libclc Add more log related float constants 2014-05-29 21:30:28 +00:00
libcxx Add a _LIBCPP_CONSTEXPR that was missed in r170026. 2014-05-30 12:09:47 +00:00
libcxxabi Fix typo in comment. 2014-05-14 17:16:57 +00:00
lld [ELF] Fix incorrect sorting of .init_array / .fini_array sections. 2014-05-30 05:29:46 +00:00
lldb iOS simulator cleanup to make sure we use "*-apple-ios" for iOS simulator apps and binaries. 2014-05-29 21:33:45 +00:00
llvm ARM: use AAPCS-style prologues for embedded MachO. 2014-05-30 13:23:06 +00:00
openmp Add testsuite from OpenUH 2014-05-10 17:02:09 +00:00
polly Added option for n-dimensional rectangular tiling 2014-05-28 17:21:02 +00:00