[compiler-rt] debac0e - tsan: add a benchmark for vector memory accesses
Dmitry Vyukov via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 25 08:07:50 PST 2021
Author: Dmitry Vyukov
Date: 2021-11-25T17:07:46+01:00
New Revision: debac0ef37d865d3a61d9abacdd096a676f1819d
URL: https://github.com/llvm/llvm-project/commit/debac0ef37d865d3a61d9abacdd096a676f1819d
DIFF: https://github.com/llvm/llvm-project/commit/debac0ef37d865d3a61d9abacdd096a676f1819d.diff
LOG: tsan: add a benchmark for vector memory accesses
Depends on D114592.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D114593
Added:
Modified:
compiler-rt/test/tsan/bench_memory_access.cpp
Removed:
################################################################################
diff --git a/compiler-rt/test/tsan/bench_memory_access.cpp b/compiler-rt/test/tsan/bench_memory_access.cpp
index 78bb053f130e..899ce9255cf9 100644
--- a/compiler-rt/test/tsan/bench_memory_access.cpp
+++ b/compiler-rt/test/tsan/bench_memory_access.cpp
@@ -79,6 +79,24 @@ void thread(int tid) {
}
break;
}
+#if TSAN_VECTORIZE
+ case 12: {
+ // The compiler wants to optimize all this away.
+ // Use volatile to prevent optimization, but then use kBlock
+ // to avoid the additional non-vector load in the inner loop.
+ // Also use only even indexes to prevent compiler from
+ // inserting memset.
+ const int kBlock = 128;
+ __m128i data[kBlock * 2];
+ __m128i *volatile vptr = data;
+ for (int i = 0; i < bench_niter / kBlock; i++) {
+ __m128i *ptr = vptr;
+ for (int j = 0; j < kBlock; j++)
+ _mm_store_si128(&ptr[j * 2], _mm_setzero_si128());
+ }
+ break;
+ }
+#endif
}
}
More information about the llvm-commits
mailing list