Difference for 2d/linear.h from version 1.2 to 1.3


version 1.2 version 1.3
Line 280
 
Line 280
   
 static inline void modex_copy_column_m(ubyte * src, ubyte * dest, int num_pixels, int src_rowsize, int dest_rowsize ) {  static inline void modex_copy_column_m(ubyte * src, ubyte * dest, int num_pixels, int src_rowsize, int dest_rowsize ) {
 /* #pragma aux modex_copy_column_m parm [esi] [edi] [ecx] [ebx] [edx] modify exact [ecx esi edi] = */  /* #pragma aux modex_copy_column_m parm [esi] [edi] [ecx] [ebx] [edx] modify exact [ecx esi edi] = */
    int dummy[3];
  __asm__ __volatile__ (   __asm__ __volatile__ (
 "0: ;"  "0: ;"
     "movb    (%%esi), %%al;"      "movb    (%%esi), %%al;"
Line 291
 
Line 292
     "addl   %%edx, %%edi;"      "addl   %%edx, %%edi;"
     "decl   %%ecx;"      "decl   %%ecx;"
     "jne    0b"      "jne    0b"
  : : "S" (src), "D" (dest), "c" (num_pixels), "b" (src_rowsize), "d" (dest_rowsize)   : "=c" (dummy[0]), "=S" (dummy[1]), "=D" (dummy[2])
  : "%eax", "%ecx", "%esi", "%edi");   : "1" (src), "2" (dest), "0" (num_pixels), "b" (src_rowsize), "d" (dest_rowsize)
    :      "%eax" );
 }  }
   
 static inline void modex_copy_scanline( ubyte * src, ubyte * dest, int npixels ) {  static inline void modex_copy_scanline( ubyte * src, ubyte * dest, int npixels ) {
 /* #pragma aux modex_copy_scanline parm [esi] [edi] [ecx] modify exact [ecx esi edi eax ebx edx] */  /* #pragma aux modex_copy_scanline parm [esi] [edi] [ecx] modify exact [ecx esi edi eax ebx edx] */
   int dummy[3];
  __asm__ __volatile__ (   __asm__ __volatile__ (
 "       movl %%ecx, %%ebx;"  "       movl %%ecx, %%ebx;"
 "       andl $3, %%ebx;"  "       andl $3, %%ebx;"
Line 325
 
Line 328
 "       decl %%ebx;"  "       decl %%ebx;"
 "       jne 2b;"  "       jne 2b;"
 "3:"  "3:"
  : : "S" (src), "D" (dest), "c" (npixels)   : "=c" (dummy[0]), "=S" (dummy[1]), "=D" (dummy[2])
  :      "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi");   : "1" (src), "2" (dest), "0" (npixels)
    :      "%eax", "%ebx", "%edx" );
 }  }
   
 static inline void modex_copy_scanline_2x( ubyte * src, ubyte * dest, int npixels ) {  static inline void modex_copy_scanline_2x( ubyte * src, ubyte * dest, int npixels ) {
 /* #pragma aux modex_copy_scanline_2x parm [esi] [edi] [ecx] modify exact [ecx esi edi eax ebx edx] = */  /* #pragma aux modex_copy_scanline_2x parm [esi] [edi] [ecx] modify exact [ecx esi edi eax ebx edx] = */
   int dummy[3];
  __asm__ __volatile__ (   __asm__ __volatile__ (
 "       movl %%ecx, %%ebx;"  "       movl %%ecx, %%ebx;"
 "       andl $3, %%ebx;"  "       andl $3, %%ebx;"
Line 359
 
Line 364
 "       decl %%ebx;"  "       decl %%ebx;"
 "       jne 2b;"  "       jne 2b;"
 "3:"  "3:"
  : : "S" (src), "D" (dest), "c" (npixels)   : "=c" (dummy[0]), "=S" (dummy[1]), "=D" (dummy[2])
  : "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi");   : "1" (src), "2" (dest), "0" (npixels)
    :      "%eax", "%ebx", "%edx" );
 }  }
 #elif defined _MSC_VER  #elif defined _MSC_VER
   

Legend:
line(s) removed in v.1.2 
line(s) changed
 line(s) added in v.1.3