Don't enable intrinsics on x86 without ABI support.

At some point after GCC 7.3, but before 8.2, GCC enabled the SSE ABI by
default. However, if it isn't enabled, the vector intrinsics in HRSS
cannot be used. (See https://github.com/grpc/grpc/issues/17540.)

Note that the intrinsics used are SSE2, but that should be ok because
they are guarded by a run-time check. The compile-time check for __SSE__
just ensures that GCC will build the code at all. (SDE does not simulate
anything that doesn't have SSE2, however.)

Change-Id: If092a06a441ed9d38576ea30351b3b40693a3399
Reviewed-on: https://boringssl-review.googlesource.com/c/33744
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
This commit is contained in:
Adam Langley 2018-12-18 08:41:34 -08:00 committed by CQ bot account: commit-bot@chromium.org
parent f8068ce885
commit c2897a158a

View File

@ -62,7 +62,7 @@
// NEON and SSE2 for implementing some vector operations. // NEON and SSE2 for implementing some vector operations.
// TODO: MSVC can likely also be made to work with vector operations. // TODO: MSVC can likely also be made to work with vector operations.
#if (defined(OPENSSL_X86) || defined(OPENSSL_X86_64)) && \ #if ((defined(__SSE__) && defined(OPENSSL_X86)) || defined(OPENSSL_X86_64)) && \
(defined(__clang__) || !defined(_MSC_VER)) (defined(__clang__) || !defined(_MSC_VER))
#define HRSS_HAVE_VECTOR_UNIT #define HRSS_HAVE_VECTOR_UNIT