Selaa lähdekoodia

AK: Add an SSE2 specific implementation of sqrt(double)

Hendiadyoin1 3 vuotta sitten
vanhempi
commit
d4fe02152a
1 muutettua tiedostoa jossa 15 lisäystä ja 0 poistoa
  1. 15 0
      AK/Math.h

+ 15 - 0
AK/Math.h

@@ -130,6 +130,21 @@ constexpr float sqrt(float x)
     return res;
     return res;
 }
 }
 
 
+#    ifdef __SSE2__
+template<>
+constexpr double sqrt(double x)
+{
+    if (is_constant_evaluated())
+        return __builtin_sqrt(x);
+
+    double res;
+    asm("sqrtsd %1, %0"
+        : "=x"(res)
+        : "x"(x));
+    return res;
+}
+#    endif
+
 template<>
 template<>
 constexpr float rsqrt(float x)
 constexpr float rsqrt(float x)
 {
 {