Import libgcrypt 1.5.3.
This commit is contained in:
parent
c12936c5d1
commit
d1307d873a
72 changed files with 11732 additions and 2916 deletions
|
@ -184,28 +184,53 @@ extern UDItype __udiv_qrnnd ();
|
|||
/***************************************
|
||||
************** ARM ******************
|
||||
***************************************/
|
||||
#if defined (__arm__) && W_TYPE_SIZE == 32 && !defined (__thumb__)
|
||||
#if defined (__arm__) && W_TYPE_SIZE == 32 && \
|
||||
(!defined (__thumb__) || defined (__thumb2__))
|
||||
/* The __ARM_ARCH define is provided by gcc 4.8. Construct it otherwise. */
|
||||
#ifndef __ARM_ARCH
|
||||
# ifdef __ARM_ARCH_2__
|
||||
# define __ARM_ARCH 2
|
||||
# elif defined (__ARM_ARCH_3__) || defined (__ARM_ARCH_3M__)
|
||||
# define __ARM_ARCH 3
|
||||
# elif defined (__ARM_ARCH_4__) || defined (__ARM_ARCH_4T__)
|
||||
# define __ARM_ARCH 4
|
||||
# elif defined (__ARM_ARCH_5__) || defined (__ARM_ARCH_5E__) \
|
||||
|| defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) \
|
||||
|| defined(__ARM_ARCH_5TEJ__)
|
||||
# define __ARM_ARCH 5
|
||||
# elif defined (__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
|
||||
|| defined (__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \
|
||||
|| defined (__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__)
|
||||
# define __ARM_ARCH 6
|
||||
# elif defined (__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
|
||||
|| defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
|
||||
|| defined(__ARM_ARCH_7EM__)
|
||||
# define __ARM_ARCH 7
|
||||
# else
|
||||
/* could not detect? */
|
||||
# endif
|
||||
#endif
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("adds %1, %4, %5\n" \
|
||||
"adc %0, %2, %3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "%r" ((USItype)(ah)), \
|
||||
"rI" ((USItype)(bh)), \
|
||||
"%r" ((USItype)(al)), \
|
||||
"rI" ((USItype)(bl)))
|
||||
"rI" ((USItype)(bl)) __CLOBBER_CC)
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("subs %1, %4, %5\n" \
|
||||
"sbc %0, %2, %3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "r" ((USItype)(ah)), \
|
||||
"rI" ((USItype)(bh)), \
|
||||
"r" ((USItype)(al)), \
|
||||
"rI" ((USItype)(bl)))
|
||||
#if defined __ARM_ARCH_2__ || defined __ARM_ARCH_3__
|
||||
"rI" ((USItype)(bl)) __CLOBBER_CC)
|
||||
#if (defined __ARM_ARCH && __ARM_ARCH <= 3)
|
||||
#define umul_ppmm(xh, xl, a, b) \
|
||||
__asm__ ("%@ Inlined umul_ppmm\n" \
|
||||
__asm__ ("@ Inlined umul_ppmm\n" \
|
||||
"mov %|r0, %2, lsr #16 @ AAAA\n" \
|
||||
"mov %|r2, %3, lsr #16 @ BBBB\n" \
|
||||
"bic %|r1, %2, %|r0, lsl #16 @ aaaa\n" \
|
||||
|
@ -218,23 +243,28 @@ extern UDItype __udiv_qrnnd ();
|
|||
"addcs %|r2, %|r2, #65536\n" \
|
||||
"adds %1, %|r1, %|r0, lsl #16\n" \
|
||||
"adc %0, %|r2, %|r0, lsr #16" \
|
||||
: "=&r" ((USItype)(xh)), \
|
||||
"=r" ((USItype)(xl)) \
|
||||
: "=&r" ((xh)), \
|
||||
"=r" ((xl)) \
|
||||
: "r" ((USItype)(a)), \
|
||||
"r" ((USItype)(b)) \
|
||||
: "r0", "r1", "r2")
|
||||
#else
|
||||
: "r0", "r1", "r2" __CLOBBER_CC)
|
||||
#else /* __ARM_ARCH >= 4 */
|
||||
#define umul_ppmm(xh, xl, a, b) \
|
||||
__asm__ ("%@ Inlined umul_ppmm\n" \
|
||||
"umull %r1, %r0, %r2, %r3" \
|
||||
: "=&r" ((USItype)(xh)), \
|
||||
"=r" ((USItype)(xl)) \
|
||||
__asm__ ("@ Inlined umul_ppmm\n" \
|
||||
"umull %1, %0, %2, %3" \
|
||||
: "=&r" ((xh)), \
|
||||
"=r" ((xl)) \
|
||||
: "r" ((USItype)(a)), \
|
||||
"r" ((USItype)(b)) \
|
||||
: "r0", "r1")
|
||||
#endif
|
||||
"r" ((USItype)(b)))
|
||||
#endif /* __ARM_ARCH >= 4 */
|
||||
#define UMUL_TIME 20
|
||||
#define UDIV_TIME 100
|
||||
#if (defined __ARM_ARCH && __ARM_ARCH >= 5)
|
||||
#define count_leading_zeros(count, x) \
|
||||
__asm__ ("clz %0, %1" \
|
||||
: "=r" ((count)) \
|
||||
: "r" ((USItype)(x)))
|
||||
#endif /* __ARM_ARCH >= 5 */
|
||||
#endif /* __arm__ */
|
||||
|
||||
/***************************************
|
||||
|
@ -437,43 +467,48 @@ extern USItype __udiv_qrnnd ();
|
|||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("addl %5,%1\n" \
|
||||
"adcl %3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "%0" ((USItype)(ah)), \
|
||||
"g" ((USItype)(bh)), \
|
||||
"%1" ((USItype)(al)), \
|
||||
"g" ((USItype)(bl)))
|
||||
"g" ((USItype)(bl)) \
|
||||
__CLOBBER_CC)
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("subl %5,%1\n" \
|
||||
"sbbl %3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "0" ((USItype)(ah)), \
|
||||
"g" ((USItype)(bh)), \
|
||||
"1" ((USItype)(al)), \
|
||||
"g" ((USItype)(bl)))
|
||||
"g" ((USItype)(bl)) \
|
||||
__CLOBBER_CC)
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ("mull %3" \
|
||||
: "=a" ((USItype)(w0)), \
|
||||
"=d" ((USItype)(w1)) \
|
||||
: "=a" ((w0)), \
|
||||
"=d" ((w1)) \
|
||||
: "%0" ((USItype)(u)), \
|
||||
"rm" ((USItype)(v)))
|
||||
"rm" ((USItype)(v)) \
|
||||
__CLOBBER_CC)
|
||||
#define udiv_qrnnd(q, r, n1, n0, d) \
|
||||
__asm__ ("divl %4" \
|
||||
: "=a" ((USItype)(q)), \
|
||||
"=d" ((USItype)(r)) \
|
||||
: "=a" ((q)), \
|
||||
"=d" ((r)) \
|
||||
: "0" ((USItype)(n0)), \
|
||||
"1" ((USItype)(n1)), \
|
||||
"rm" ((USItype)(d)))
|
||||
"rm" ((USItype)(d)) \
|
||||
__CLOBBER_CC)
|
||||
#define count_leading_zeros(count, x) \
|
||||
do { \
|
||||
USItype __cbtmp; \
|
||||
__asm__ ("bsrl %1,%0" \
|
||||
: "=r" (__cbtmp) : "rm" ((USItype)(x))); \
|
||||
: "=r" (__cbtmp) : "rm" ((USItype)(x)) \
|
||||
__CLOBBER_CC); \
|
||||
(count) = __cbtmp ^ 31; \
|
||||
} while (0)
|
||||
#define count_trailing_zeros(count, x) \
|
||||
__asm__ ("bsfl %1,%0" : "=r" (count) : "rm" ((USItype)(x)))
|
||||
__asm__ ("bsfl %1,%0" : "=r" (count) : "rm" ((USItype)(x)) __CLOBBER_CC)
|
||||
#ifndef UMUL_TIME
|
||||
#define UMUL_TIME 40
|
||||
#endif
|
||||
|
@ -826,22 +861,22 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
|
|||
do { \
|
||||
if (__builtin_constant_p (bh) && (bh) == 0) \
|
||||
__asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "%r" ((USItype)(ah)), \
|
||||
"%r" ((USItype)(al)), \
|
||||
"rI" ((USItype)(bl))); \
|
||||
else if (__builtin_constant_p (bh) && (bh) ==~(USItype) 0) \
|
||||
__asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "%r" ((USItype)(ah)), \
|
||||
"%r" ((USItype)(al)), \
|
||||
"rI" ((USItype)(bl))); \
|
||||
else \
|
||||
__asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "%r" ((USItype)(ah)), \
|
||||
"r" ((USItype)(bh)), \
|
||||
"%r" ((USItype)(al)), \
|
||||
|
@ -851,36 +886,36 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
|
|||
do { \
|
||||
if (__builtin_constant_p (ah) && (ah) == 0) \
|
||||
__asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "r" ((USItype)(bh)), \
|
||||
"rI" ((USItype)(al)), \
|
||||
"r" ((USItype)(bl))); \
|
||||
else if (__builtin_constant_p (ah) && (ah) ==~(USItype) 0) \
|
||||
__asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "r" ((USItype)(bh)), \
|
||||
"rI" ((USItype)(al)), \
|
||||
"r" ((USItype)(bl))); \
|
||||
else if (__builtin_constant_p (bh) && (bh) == 0) \
|
||||
__asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "r" ((USItype)(ah)), \
|
||||
"rI" ((USItype)(al)), \
|
||||
"r" ((USItype)(bl))); \
|
||||
else if (__builtin_constant_p (bh) && (bh) ==~(USItype) 0) \
|
||||
__asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "r" ((USItype)(ah)), \
|
||||
"rI" ((USItype)(al)), \
|
||||
"r" ((USItype)(bl))); \
|
||||
else \
|
||||
__asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "=r" ((sh)), \
|
||||
"=&r" ((sl)) \
|
||||
: "r" ((USItype)(ah)), \
|
||||
"r" ((USItype)(bh)), \
|
||||
"rI" ((USItype)(al)), \
|
||||
|
@ -888,7 +923,7 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
|
|||
} while (0)
|
||||
#define count_leading_zeros(count, x) \
|
||||
__asm__ ("{cntlz|cntlzw} %0,%1" \
|
||||
: "=r" ((USItype)(count)) \
|
||||
: "=r" ((count)) \
|
||||
: "r" ((USItype)(x)))
|
||||
#define COUNT_LEADING_ZEROS_0 32
|
||||
#if defined (_ARCH_PPC)
|
||||
|
@ -896,7 +931,7 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
|
|||
do { \
|
||||
USItype __m0 = (m0), __m1 = (m1); \
|
||||
__asm__ ("mulhwu %0,%1,%2" \
|
||||
: "=r" ((USItype) ph) \
|
||||
: "=r" (ph) \
|
||||
: "%r" (__m0), \
|
||||
"r" (__m1)); \
|
||||
(pl) = __m0 * __m1; \
|
||||
|
@ -918,8 +953,8 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
|
|||
do { \
|
||||
USItype __m0 = (m0), __m1 = (m1); \
|
||||
__asm__ ("mul %0,%2,%3" \
|
||||
: "=r" ((USItype)(xh)), \
|
||||
"=q" ((USItype)(xl)) \
|
||||
: "=r" ((xh)), \
|
||||
"=q" ((xl)) \
|
||||
: "r" (__m0), \
|
||||
"r" (__m1)); \
|
||||
(xh) += ((((SItype) __m0 >> 31) & __m1) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue