#line 2 "../src/kernel/ia64/asm0.h"
#ifdef ASMINLINE
#define LOCAL_HIREMAINDER register ulong hiremainder
#define bfffo(a) \
__extension__ ({ ulong __arg1 = (a), __tmp, _a, _c; \
__asm__ ("mux1 %0 = %1, @rev" : "=r" (__tmp) : "r" (__arg1)); \
__asm__ ("czx1.l %0 = %1" : "=r" (_a) : "r" (-__tmp | __tmp)); \
_c = (_a - 1) << 3; \
__arg1 >>= _c; \
if (__arg1 >= 1 << 4) \
__arg1 >>= 4, _c += 4; \
if (__arg1 >= 1 << 2) \
__arg1 >>= 2, _c += 2; \
_c += __arg1 >> 1; \
63 - _c; \
})
#define mulll(a, b) \
__extension__ ({ \
ulong __arg1 = (a), __arg2 = (b), __value; \
__asm__ ("xma.hu %0 = %2, %3, f0\n\t;;\n\txma.l %1 = %2, %3, f0" \
: "=&f" (hiremainder), "=f" (__value) \
: "f" (__arg1), "f" (__arg2)); \
__value; \
})
#define addmul(a, b) \
__extension__ ({ \
ulong __arg1 = (a), __arg2 = (b), __value; \
__asm__ ("xma.hu %0 = %2, %3, %4\n\txma.l %1 = %2, %3, %4" \
: "=&f" (hiremainder), "=f" (__value) \
: "f" (__arg1), "f" (__arg2), "f" (hiremainder)); \
__value; \
})
#endif