[compiler-rt] cd0143c - tsan: switch from SSE3 to SSE4.2
Dmitry Vyukov via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 28 22:50:52 PDT 2021
Author: Dmitry Vyukov
Date: 2021-07-29T07:50:46+02:00
New Revision: cd0143c0f2a37332a1f7e29caa122db74b92a344
URL: https://github.com/llvm/llvm-project/commit/cd0143c0f2a37332a1f7e29caa122db74b92a344
DIFF: https://github.com/llvm/llvm-project/commit/cd0143c0f2a37332a1f7e29caa122db74b92a344.diff
LOG: tsan: switch from SSE3 to SSE4.2
Switch x86_64 requirement for optimized code from SSE3 to SSE4.2.
The new tsan runtime will need few instructions that are only
supported by SSE4:
_mm_max_epu32
_mm_extract_epi8
_mm_insert_epi32
SSE3 was introcued in 2004 and SSE4 in 2006:
https://en.wikipedia.org/wiki/SSE3
https://en.wikipedia.org/wiki/SSE4
We are still providing non-optimized C++ version of the code,
so either way it's possible to build tsan runtime for any CPU.
But for Go this will bump strict requirement for -race because
Go contains prebuilt versions and these will be built with -msse4.2.
But requiring a CPU produced at least in 2006 looks reasonable for
a debugging tool (more reasonable than disabling optimizations
for everybody).
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D106948
Added:
Modified:
compiler-rt/lib/tsan/CMakeLists.txt
compiler-rt/lib/tsan/go/build.bat
compiler-rt/lib/tsan/go/buildgo.sh
Removed:
################################################################################
diff --git a/compiler-rt/lib/tsan/CMakeLists.txt b/compiler-rt/lib/tsan/CMakeLists.txt
index a60c8f842a2d7..4beec6bffce81 100644
--- a/compiler-rt/lib/tsan/CMakeLists.txt
+++ b/compiler-rt/lib/tsan/CMakeLists.txt
@@ -18,7 +18,7 @@ if(COMPILER_RT_TSAN_DEBUG_OUTPUT)
endif()
set(TSAN_RTL_CFLAGS ${TSAN_CFLAGS})
-append_list_if(COMPILER_RT_HAS_MSSE3_FLAG -msse3 TSAN_RTL_CFLAGS)
+append_list_if(COMPILER_RT_HAS_MSSE4_2_FLAG -msse4.2 TSAN_RTL_CFLAGS)
append_list_if(SANITIZER_LIMIT_FRAME_SIZE -Wframe-larger-than=530
TSAN_RTL_CFLAGS)
append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
diff --git a/compiler-rt/lib/tsan/go/build.bat b/compiler-rt/lib/tsan/go/build.bat
index 8409c7e12ba82..4d05480263da9 100644
--- a/compiler-rt/lib/tsan/go/build.bat
+++ b/compiler-rt/lib/tsan/go/build.bat
@@ -58,4 +58,5 @@ gcc ^
-DSANITIZER_DEBUG=0 ^
-O3 ^
-fomit-frame-pointer ^
+ -msse4.2 ^
-std=c++14
diff --git a/compiler-rt/lib/tsan/go/buildgo.sh b/compiler-rt/lib/tsan/go/buildgo.sh
index e15f993f2703d..661a2e21c2f32 100755
--- a/compiler-rt/lib/tsan/go/buildgo.sh
+++ b/compiler-rt/lib/tsan/go/buildgo.sh
@@ -58,7 +58,7 @@ if [ "`uname -a | grep Linux`" != "" ]; then
ARCHCFLAGS="-m64 -mcpu=power8 -fno-function-sections"
elif [ "`uname -a | grep x86_64`" != "" ]; then
SUFFIX="linux_amd64"
- ARCHCFLAGS="-m64 -msse3"
+ ARCHCFLAGS="-m64 -msse4.2"
OSCFLAGS="$OSCFLAGS -ffreestanding -Wno-unused-const-variable -Werror -Wno-unknown-warning-option"
elif [ "`uname -a | grep aarch64`" != "" ]; then
SUFFIX="linux_arm64"
More information about the llvm-commits
mailing list