Browse code

Use cltd instead of cdq asm mnemonic, ICC and gcc support both, but SunStudio 12 only supports the former.

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

Reimar Döffinger authored on 2008/02/29 02:01:35
Showing 2 changed files
... ...
@@ -327,7 +327,7 @@ static inline void renorm_cabac_decoder_once(CABACContext *c){
327 327
     //P3:665    athlon:517
328 328
     asm(
329 329
         "lea -0x100(%0), %%eax      \n\t"
330
-        "cdq                        \n\t"
330
+        "cltd                       \n\t"
331 331
         "mov %0, %%eax              \n\t"
332 332
         "and %%edx, %0              \n\t"
333 333
         "and %1, %%edx              \n\t"
... ...
@@ -599,7 +599,7 @@ static int get_cabac_bypass(CABACContext *c){
599 599
         "shl $17, %%ebx                         \n\t"
600 600
         "add %%eax, %%eax                       \n\t"
601 601
         "sub %%ebx, %%eax                       \n\t"
602
-        "cdq                                    \n\t"
602
+        "cltd                                   \n\t"
603 603
         "and %%edx, %%ebx                       \n\t"
604 604
         "add %%ebx, %%eax                       \n\t"
605 605
         "test %%ax, %%ax                        \n\t"
... ...
@@ -646,7 +646,7 @@ static av_always_inline int get_cabac_bypass_sign(CABACContext *c, int val){
646 646
         "shl $17, %%ebx                         \n\t"
647 647
         "add %%eax, %%eax                       \n\t"
648 648
         "sub %%ebx, %%eax                       \n\t"
649
-        "cdq                                    \n\t"
649
+        "cltd                                   \n\t"
650 650
         "and %%edx, %%ebx                       \n\t"
651 651
         "add %%ebx, %%eax                       \n\t"
652 652
         "xor %%edx, %%ecx                       \n\t"
... ...
@@ -205,7 +205,7 @@ static inline unsigned int ff_sqrt(unsigned int a)
205 205
 #if defined(ARCH_X86)
206 206
 #define MASK_ABS(mask, level)\
207 207
             asm volatile(\
208
-                "cdq                    \n\t"\
208
+                "cltd                   \n\t"\
209 209
                 "xorl %1, %0            \n\t"\
210 210
                 "subl %1, %0            \n\t"\
211 211
                 : "+a" (level), "=&d" (mask)\