OSDN Git Service

Add explicit (int) cast to i386 optimized MUL* macros.
authorVladimir Voroshilov <voroshil@gmail.com>
Tue, 26 Aug 2008 19:38:17 +0000 (19:38 +0000)
committerVladimir Voroshilov <voroshil@gmail.com>
Tue, 26 Aug 2008 19:38:17 +0000 (19:38 +0000)
Wrong result is returned when 16-bit value is passed as value.
Also fixes "Warning: using `%edx' instead of `%dx' due to `l' suffix".

Originally committed as revision 14981 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/i386/mathops.h

index 51d5939..75ed55c 100644 (file)
             "imull %3               \n\t"\
             "shrdl %4, %%edx, %%eax \n\t"\
             : "=a"(rt), "=d"(dummy)\
-            : "a" (ra), "rm" (rb), "i"(FRAC_BITS));\
+            : "a" ((int)ra), "rm" ((int)rb), "i"(FRAC_BITS));\
          rt; })
 #endif
 
 #define MULH(ra, rb) \
     ({ int rt, dummy;\
-     asm ("imull %3\n\t" : "=d"(rt), "=a"(dummy): "a" (ra), "rm" (rb));\
+     asm ("imull %3\n\t" : "=d"(rt), "=a"(dummy): "a" ((int)ra), "rm" ((int)rb));\
      rt; })
 
 #define MUL64(ra, rb) \
     ({ int64_t rt;\
-     asm ("imull %2\n\t" : "=A"(rt) : "a" (ra), "g" (rb));\
+     asm ("imull %2\n\t" : "=A"(rt) : "a" ((int)ra), "g" ((int)rb));\
      rt; })
 
 #endif /* FFMPEG_I386_MATHOPS_H */