Alexandre Julliard : gdi32: Add assembly helpers for filling solid rectangles.

Alexandre Julliard julliard at winehq.org
Thu Nov 29 14:15:44 CST 2012


Module: wine
Branch: master
Commit: 2aff4696b67daaf19249e969258f106fad6043f8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2aff4696b67daaf19249e969258f106fad6043f8

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Nov 29 12:31:13 2012 +0100

gdi32: Add assembly helpers for filling solid rectangles.

---

 dlls/gdi32/dibdrv/primitives.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/dlls/gdi32/dibdrv/primitives.c b/dlls/gdi32/dibdrv/primitives.c
index e3807ac..649912b 100644
--- a/dlls/gdi32/dibdrv/primitives.c
+++ b/dlls/gdi32/dibdrv/primitives.c
@@ -258,12 +258,26 @@ static inline void do_rop_codes_line_rev_1(BYTE *dst, int dst_x, const BYTE *src
 
 static inline void memset_32( DWORD *start, DWORD val, DWORD size )
 {
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+    DWORD dummy;
+    __asm__ __volatile__( "cld; rep; stosl"
+                          : "=c" (dummy), "=D" (dummy)
+                          : "a" (val), "0" (size), "1" (start) );
+#else
     while (size--) *start++ = val;
+#endif
 }
 
 static inline void memset_16( WORD *start, WORD val, DWORD size )
 {
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+    DWORD dummy;
+    __asm__ __volatile__( "cld; rep; stosw"
+                          : "=c" (dummy), "=D" (dummy)
+                          : "a" (val), "0" (size), "1" (start) );
+#else
     while (size--) *start++ = val;
+#endif
 }
 
 static void solid_rects_32(const dib_info *dib, int num, const RECT *rc, DWORD and, DWORD xor)




More information about the wine-cvs mailing list