summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2016-05-16 19:10:35 +0000
committerjkim <jkim@FreeBSD.org>2016-05-16 19:10:35 +0000
commitd2a6ff6888ae760e0d4368dafcec9aa65b6ff57c (patch)
tree3794352b6b94bd5674c5cf4d071b4af75ab092cc /crypto
parent5635d52f8eeca3a6ddbb0c44aec1dee011de9fe0 (diff)
downloadFreeBSD-src-d2a6ff6888ae760e0d4368dafcec9aa65b6ff57c.zip
FreeBSD-src-d2a6ff6888ae760e0d4368dafcec9aa65b6ff57c.tar.gz
Detect Clang to support AVX instructions on x86 platforms.
Note head (OpenSSL 1.0.2 branch) has similar changes.
Diffstat (limited to 'crypto')
-rwxr-xr-xcrypto/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl1
-rw-r--r--crypto/openssl/crypto/sha/asm/sha1-586.pl3
-rwxr-xr-xcrypto/openssl/crypto/sha/asm/sha1-x86_64.pl2
3 files changed, 6 insertions, 0 deletions
diff --git a/crypto/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl b/crypto/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
index 3c8f6c1..324eec6 100755
--- a/crypto/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
+++ b/crypto/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
@@ -68,6 +68,7 @@ $avx=1 if (!$avx && $win64 && ($flavour =~ /nasm/ || $ENV{ASM} =~ /nasm/) &&
$avx=1 if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
`ml64 2>&1` =~ /Version ([0-9]+)\./ &&
$1>=10);
+$avx=1 if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/ && $2>=3.0);
open OUT,"| \"$^X\" $xlate $flavour $output";
*STDOUT=*OUT;
diff --git a/crypto/openssl/crypto/sha/asm/sha1-586.pl b/crypto/openssl/crypto/sha/asm/sha1-586.pl
index 2b119ff..25901f8 100644
--- a/crypto/openssl/crypto/sha/asm/sha1-586.pl
+++ b/crypto/openssl/crypto/sha/asm/sha1-586.pl
@@ -116,6 +116,9 @@ $ymm=1 if ($xmm && !$ymm && $ARGV[0] eq "win32n" &&
`nasm -v 2>&1` =~ /NASM version ([2-9]\.[0-9]+)/ &&
$1>=2.03); # first version supporting AVX
+$ymm=1 if ($xmm && !$ymm && `$ENV{CC} -v 2>&1` =~ /(^clang version|based on LLVM) ([3-9]\.[0-9]+)/ &&
+ $2>=3.0); # first version supporting AVX
+
&external_label("OPENSSL_ia32cap_P") if ($xmm);
diff --git a/crypto/openssl/crypto/sha/asm/sha1-x86_64.pl b/crypto/openssl/crypto/sha/asm/sha1-x86_64.pl
index f15c7ec..9f3c00c 100755
--- a/crypto/openssl/crypto/sha/asm/sha1-x86_64.pl
+++ b/crypto/openssl/crypto/sha/asm/sha1-x86_64.pl
@@ -81,6 +81,8 @@ $avx=1 if (!$avx && $win64 && ($flavour =~ /nasm/ || $ENV{ASM} =~ /nasm/) &&
$avx=1 if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
`ml64 2>&1` =~ /Version ([0-9]+)\./ &&
$1>=10);
+$avx=1 if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/ &&
+ $2>=3.0);
open OUT,"| \"$^X\" $xlate $flavour $output";
*STDOUT=*OUT;
OpenPOWER on IntegriCloud