Changeset 726 for trunk/lib


Ignore:
Timestamp:
Nov 28, 2010, 4:40:19 PM (9 years ago)
Author:
cameron
Message:

Fix ADC64 version of double_int64_sbb to use sbb not sahf/lahf

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/block_carry.h

    r725 r726  
    123123
    124124
    125 
    126 
    127 #define double_int64_sbb(x1, x2, y1, y2, rslt1, rslt2, carry) \
    128   __asm__  ("sahf\n\t" \
    129         "sbb %[e1], %[z1]\n\t" \
    130         "sbb %[e2], %[z2]\n\t" \
    131         "lahf\n\t" \
    132      : [z1] "=r" (rslt1), [z2] "=r" (rslt2), [carryflag] "=a" (carry) \
    133          : "[z1]" (x1), "[z2]" (x2), \
    134            [e1] "r" (y1), [e2] "r" (y2), \
    135            "[carryflag]" (carry) \
    136          : "cc")
     125#define double_int64_sbb(x1, x2, y1, y2, rslt1, rslt2, borrow) \
     126   __asm__ __volatile__ ("sub %[borrowin], %[z1]\n\t" \
     127         "sbb %[e1], %[z1]\n\t" \
     128         "sbb %[e2], %[z2]\n\t" \
     129         "mov $0, %[borrowout]\n\t" \
     130         "adc $0, %[borrowout]\n\t" \
     131         : [z1] "=a" (rslt1), [z2] "=r" (rslt2), [borrowout] "=r" (borrow) \
     132         : "0" (y1), "1" (y2), [borrowin] "2" (borrow), \
     133                   [e1] "b" (x1), [e2] "r" (x2)\
     134         : "cc")
     135
    137136
    138137#define sbb128(first, second, borrow, diff) \
Note: See TracChangeset for help on using the changeset viewer.