Ticket #10328: longlong.diff

File longlong.diff, 2.2 KB (added by Snark, 10 years ago)

Patch to remove buggy sub_ddmmss implementation

  • longlong.h

    diff -ur flint-1.5.2.orig//longlong.h flint-1.5.2//longlong.h
    old new  
    411411  __asm__ ("adds\t%1, %4, %5\n\tadc\t%0, %2, %3"                        \
    412412           : "=r" (sh), "=&r" (sl)                                      \
    413413           : "r" (ah), "rI" (bh), "%r" (al), "rI" (bl) __CLOBBER_CC)
    414 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
    415   do {                                                                  \
    416     if (__builtin_constant_p (al))                                      \
    417       {                                                                 \
    418         if (__builtin_constant_p (ah))                                  \
    419           __asm__ ("rsbs\t%1, %5, %4\n\trsc\t%0, %3, %2"                \
    420                    : "=r" (sh), "=&r" (sl)                              \
    421                    : "rI" (ah), "r" (bh), "rI" (al), "r" (bl) __CLOBBER_CC); \
    422         else                                                            \
    423           __asm__ ("rsbs\t%1, %5, %4\n\tsbc\t%0, %2, %3"                \
    424                    : "=r" (sh), "=&r" (sl)                              \
    425                    : "r" (ah), "rI" (bh), "rI" (al), "r" (bl) __CLOBBER_CC); \
    426       }                                                                 \
    427     else if (__builtin_constant_p (ah))                                 \
    428       {                                                                 \
    429         if (__builtin_constant_p (bl))                                  \
    430           __asm__ ("subs\t%1, %4, %5\n\trsc\t%0, %3, %2"                \
    431                    : "=r" (sh), "=&r" (sl)                              \
    432                    : "rI" (ah), "r" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \
    433         else                                                            \
    434           __asm__ ("rsbs\t%1, %5, %4\n\trsc\t%0, %3, %2"                \
    435                    : "=r" (sh), "=&r" (sl)                              \
    436                    : "rI" (ah), "r" (bh), "rI" (al), "r" (bl) __CLOBBER_CC); \
    437       }                                                                 \
    438     else if (__builtin_constant_p (bl))                                 \
    439       {                                                                 \
    440         if (__builtin_constant_p (bh))                                  \
    441           __asm__ ("subs\t%1, %4, %5\n\tsbc\t%0, %2, %3"                \
    442                    : "=r" (sh), "=&r" (sl)                              \
    443                    : "r" (ah), "rI" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \
    444         else                                                            \
    445           __asm__ ("subs\t%1, %4, %5\n\trsc\t%0, %3, %2"                \
    446                    : "=r" (sh), "=&r" (sl)                              \
    447                    : "rI" (ah), "r" (bh), "r" (al), "rI" (bl) __CLOBBER_CC); \
    448       }                                                                 \
    449     else /* only bh might be a constant */                              \
    450       __asm__ ("subs\t%1, %4, %5\n\tsbc\t%0, %2, %3"                    \
    451                : "=r" (sh), "=&r" (sl)                                  \
    452                : "r" (ah), "rI" (bh), "r" (al), "rI" (bl) __CLOBBER_CC);\
    453     } while (0)
    454414#if 1 || defined (__arm_m__)    /* `M' series has widening multiply support */
    455415#define umul_ppmm(xh, xl, a, b) \
    456416  __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))