splash/SplashMath.h | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-)
New commits: commit 3a9bfd6ef981692b391e63c32725c12817a2d08f Author: Jean Ghali <[email protected]> Date: Mon Jul 20 18:34:30 2020 +0200 Fix x86 + windows asm It broke during the clang-reformat diff --git a/splash/SplashMath.h b/splash/SplashMath.h index cf034acb..776e212c 100644 --- a/splash/SplashMath.h +++ b/splash/SplashMath.h @@ -13,6 +13,7 @@ // // Copyright (C) 2009-2011 Albert Astals Cid <[email protected]> // Copyright (C) 2017 Adrian Johnson <[email protected]> +// Copyright (C) 2020 Jean Ghali <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -66,9 +67,16 @@ static inline int splashFloor(SplashCoord x) unsigned short oldCW, newCW; int result; - __asm fld QWORD PTR x __asm fnstcw WORD PTR oldCW __asm mov ax, WORD PTR oldCW __asm and ax, 0xf3ff __asm or ax, 0x0400 __asm mov WORD PTR newCW, - ax // round down - __asm fldcw WORD PTR newCW __asm fistp DWORD PTR result __asm fldcw WORD PTR oldCW return result; + __asm fld QWORD PTR x; + __asm fnstcw WORD PTR oldCW; + __asm mov ax, WORD PTR oldCW; + __asm and ax, 0xf3ff; + __asm or ax, 0x0400; + __asm mov WORD PTR newCW, ax; // round down + __asm fldcw WORD PTR newCW; + __asm fistp DWORD PTR result; + __asm fldcw WORD PTR oldCW; + return result; #else if (x > 0) return (int)x; @@ -107,9 +115,16 @@ static inline int splashCeil(SplashCoord x) unsigned short oldCW, newCW; int result; - __asm fld QWORD PTR x __asm fnstcw WORD PTR oldCW __asm mov ax, WORD PTR oldCW __asm and ax, 0xf3ff __asm or ax, 0x0800 __asm mov WORD PTR newCW, - ax // round up - __asm fldcw WORD PTR newCW __asm fistp DWORD PTR result __asm fldcw WORD PTR oldCW return result; + __asm fld QWORD PTR x; + __asm fnstcw WORD PTR oldCW; + __asm mov ax, WORD PTR oldCW; + __asm and ax, 0xf3ff; + __asm or ax, 0x0800; + __asm mov WORD PTR newCW, ax; // round up + __asm fldcw WORD PTR newCW; + __asm fistp DWORD PTR result; + __asm fldcw WORD PTR oldCW; + return result; #else return (int)ceil(x); #endif @@ -145,9 +160,16 @@ static inline int splashRound(SplashCoord x) int result; x += 0.5; - __asm fld QWORD PTR x __asm fnstcw WORD PTR oldCW __asm mov ax, WORD PTR oldCW __asm and ax, 0xf3ff __asm or ax, 0x0400 __asm mov WORD PTR newCW, - ax // round down - __asm fldcw WORD PTR newCW __asm fistp DWORD PTR result __asm fldcw WORD PTR oldCW return result; + __asm fld QWORD PTR x; + __asm fnstcw WORD PTR oldCW; + __asm mov ax, WORD PTR oldCW; + __asm and ax, 0xf3ff; + __asm or ax, 0x0400; + __asm mov WORD PTR newCW, ax; // round down + __asm fldcw WORD PTR newCW; + __asm fistp DWORD PTR result; + __asm fldcw WORD PTR oldCW; + return result; #else return (int)splashFloor(x + 0.5); #endif _______________________________________________ poppler mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/poppler
