aes-gcm-avx512.pl: Fix the clang version detection on Apple Oses
authorTomas Mraz <tomas@openssl.org>
Wed, 15 Mar 2023 15:49:24 +0000 (16:49 +0100)
committerTomas Mraz <tomas@openssl.org>
Fri, 17 Mar 2023 10:25:25 +0000 (11:25 +0100)
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20519)

(cherry picked from commit 110dac578358014c29b86cf18d9a4bfe5561e3bc)

crypto/modes/asm/aes-gcm-avx512.pl

index 122183b4fffecc6b2649f878216e93e4e6ab6fdb..41d91ef710d0b71e0ea8b77694fa0fe01f1839f6 100644 (file)
@@ -59,8 +59,17 @@ if (!$avx512vaes
   $avx512vaes = ($1 == 2.13 && $2 >= 3) + ($1 >= 2.14);
 }
 
-if (!$avx512vaes && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
-  $avx512vaes = ($2 >= 7.0);
+if (!$avx512vaes && `$ENV{CC} -v 2>&1`
+    =~ /(Apple)?\s*((?:clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)\.([0-9]+)?/) {
+    my $ver = $3 + $4/100.0 + $5/10000.0; # 3.1.0->3.01, 3.10.1->3.1001
+    if ($1) {
+        # Apple conditions, they use a different version series, see
+        # https://en.wikipedia.org/wiki/Xcode#Xcode_7.0_-_10.x_(since_Free_On-Device_Development)_2
+        # clang 7.0.0 is Apple clang 10.0.1
+        $avx512vaes = ($ver>=10.0001)
+    } else {
+        $avx512vaes = ($ver>=7.0);
+    }
 }
 
 open OUT, "| \"$^X\" \"$xlate\" $flavour \"$output\""