38 lines
1.4 KiB
Diff
38 lines
1.4 KiB
Diff
From af0de1c4b308ef8d9a081ecf407805b75a99d877 Mon Sep 17 00:00:00 2001
|
|
From: Rafael Kitover <rkitover@gmail.com>
|
|
Date: Fri, 4 Oct 2019 07:35:49 +0000
|
|
Subject: [PATCH] xbrz: fix inline asm check
|
|
|
|
Use correct cpp code to detect x86/amd64 architecture to use inline asm.
|
|
|
|
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
|
|
---
|
|
src/filters/xBRZ/xbrz.cpp | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git src/filters/xBRZ/xbrz.cpp src/filters/xBRZ/xbrz.cpp
|
|
index 36d70be26..13e6cdc13 100644
|
|
--- src/filters/xBRZ/xbrz.cpp
|
|
+++ src/filters/xBRZ/xbrz.cpp
|
|
@@ -66,17 +66,17 @@ uint32_t gradientARGB(uint32_t pixFront, uint32_t pixBack) //find intermediate c
|
|
|
|
inline double fastSqrt(double n)
|
|
{
|
|
-#ifdef __GNUC__ || __clang__ || __MINGW64_VERSION_MAJOR || __MINGW32_MAJOR_VERSION
|
|
+#if (defined(__GNUC__) || defined(__clang__)) && (defined(__x86_64__) || defined(__i386__))
|
|
__asm__ ("fsqrt" : "+t" (n));
|
|
return n;
|
|
-#elif _MSC_VER && _M_IX86
|
|
+#elif defined(_MSC_VER) && defined(_M_IX86)
|
|
// speeds up xBRZ by about 9% compared to std::sqrt which internally uses
|
|
// the same assembler instructions but adds some "fluff"
|
|
__asm {
|
|
fld n
|
|
fsqrt
|
|
}
|
|
-#else // _MSC_VER && _M_X64 OR other platforms
|
|
+#else // defined(_MSC_VER) && defined(_M_X64) OR other platforms
|
|
// VisualStudio x86_64 does not allow inline ASM
|
|
return std::sqrt(n);
|
|
#endif
|