*.c: Check for ARM64 SIMD before using the accelerated code.
authorMark Wooding <mdw@distorted.org.uk>
Fri, 15 Nov 2019 17:09:01 +0000 (17:09 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 9 May 2020 19:57:33 +0000 (20:57 +0100)
I don't expect ARM64 processors to omit the SIMD instructions, but it's
convenient to have a way to inhibit the accelerated code (e.g., for
performance measurement).

math/mpmont.c
math/mpx.c

index 6109c85..b4bf982 100644 (file)
@@ -125,7 +125,8 @@ static redccore__functype *pick_redccore(void)
                     cpu_feature_p(CPUFEAT_ARM_NEON));
 #endif
 #if CPUFAM_ARM64
-  DISPATCH_PICK_COND(mpmont_reduce, maybe_redc4_arm64_simd, 1);
+  DISPATCH_PICK_COND(mpmont_reduce, maybe_redc4_arm64_simd,
+                    cpu_feature_p(CPUFEAT_ARM_NEON));
 #endif
   DISPATCH_PICK_FALLBACK(mpmont_reduce, simple_redccore);
 }
@@ -246,7 +247,8 @@ static mulcore__functype *pick_mulcore(void)
                     cpu_feature_p(CPUFEAT_ARM_NEON));
 #endif
 #if CPUFAM_ARM64
-  DISPATCH_PICK_COND(mpmont_mul, maybe_mul4_arm64_simd, 1);
+  DISPATCH_PICK_COND(mpmont_mul, maybe_mul4_arm64_simd,
+                    cpu_feature_p(CPUFEAT_ARM_NEON));
 #endif
   DISPATCH_PICK_FALLBACK(mpmont_mul, simple_mulcore);
 }
index d3d0a04..ac82688 100644 (file)
@@ -958,7 +958,8 @@ static mpx_umul__functype *pick_umul(void)
                     cpu_feature_p(CPUFEAT_ARM_NEON));
 #endif
 #if CPUFAM_ARM64
-  DISPATCH_PICK_COND(mpx_umul, maybe_umul4_arm64_simd, 1);
+  DISPATCH_PICK_COND(mpx_umul, maybe_umul4_arm64_simd,
+                    cpu_feature_p(CPUFEAT_ARM_NEON));
 #endif
   DISPATCH_PICK_FALLBACK(mpx_umul, simple_umul);
 }