forked from OSchip/llvm-project
Introduce CRT_HAS_128BIT, currently for all __LP64__ platforms.
Use it to enable the various functions for TI mode. llvm-svn: 201909
This commit is contained in:
parent
e245715fca
commit
938b0df72d
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: absolute value */
|
||||
|
||||
|
@ -30,4 +30,5 @@ __absvti2(ti_int a)
|
|||
return (a ^ s) - s;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: a + b */
|
||||
|
||||
|
@ -37,4 +37,4 @@ __addvti3(ti_int a, ti_int b)
|
|||
return s;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: a << b */
|
||||
|
||||
|
@ -42,4 +42,4 @@ __ashlti3(ti_int a, si_int b)
|
|||
return result.all;
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: arithmetic a >> b */
|
||||
|
||||
|
@ -43,4 +43,4 @@ __ashrti3(ti_int a, si_int b)
|
|||
return result.all;
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: the number of leading 0-bits */
|
||||
|
||||
|
@ -30,4 +30,4 @@ __clzti2(ti_int a)
|
|||
((si_int)f & ((si_int)(sizeof(di_int) * CHAR_BIT)));
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: if (a < b) returns 0
|
||||
* if (a == b) returns 1
|
||||
|
@ -39,4 +39,4 @@ __cmpti2(ti_int a, ti_int b)
|
|||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: the number of trailing 0-bits */
|
||||
|
||||
|
@ -30,4 +30,4 @@ __ctzti2(ti_int a)
|
|||
((si_int)f & ((si_int)(sizeof(di_int) * CHAR_BIT)));
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
tu_int __udivmodti4(tu_int a, tu_int b, tu_int* rem);
|
||||
|
||||
|
@ -32,4 +32,4 @@ __divti3(ti_int a, ti_int b)
|
|||
return (__udivmodti4(a, b, (tu_int*)0) ^ s_a) - s_a; /* negate if s_a == -1 */
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: the index of the least significant 1-bit in a, or
|
||||
* the value zero if a is zero. The least significant bit is index one.
|
||||
|
@ -34,4 +34,4 @@ __ffsti2(ti_int a)
|
|||
return __builtin_ctzll(x.s.low) + 1;
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a signed long long, rounding toward zero. */
|
||||
|
||||
|
@ -42,4 +42,4 @@ __fixdfti(double a)
|
|||
return (r ^ s) - s;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a signed long long, rounding toward zero. */
|
||||
|
||||
|
@ -42,4 +42,4 @@ __fixsfti(float a)
|
|||
return (r ^ s) - s;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a unsigned long long, rounding toward zero.
|
||||
* Negative values all become zero.
|
||||
|
@ -44,4 +44,4 @@ __fixunsdfti(double a)
|
|||
return r;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a unsigned long long, rounding toward zero.
|
||||
* Negative values all become zero.
|
||||
|
@ -44,4 +44,4 @@ __fixunssfti(float a)
|
|||
return r;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a unsigned long long, rounding toward zero.
|
||||
* Negative values all become zero.
|
||||
|
@ -46,4 +46,4 @@ __fixunsxfti(long double a)
|
|||
return r;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a signed long long, rounding toward zero. */
|
||||
|
||||
|
@ -44,4 +44,4 @@ __fixxfti(long double a)
|
|||
return (r ^ s) - s;
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a double, rounding toward even.*/
|
||||
|
||||
|
@ -82,4 +82,4 @@ __floattidf(ti_int a)
|
|||
return fb.f;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a float, rounding toward even. */
|
||||
|
||||
|
@ -81,4 +81,4 @@ __floattisf(ti_int a)
|
|||
return fb.f;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a long double, rounding toward even. */
|
||||
|
||||
|
@ -47,7 +47,7 @@ __floattixf(ti_int a)
|
|||
* P = bit LDBL_MANT_DIG-1 bits to the right of 1
|
||||
* Q = bit LDBL_MANT_DIG bits to the right of 1
|
||||
* R = "or" of all bits to the right of Q
|
||||
*/
|
||||
*/
|
||||
switch (sd)
|
||||
{
|
||||
case LDBL_MANT_DIG + 1:
|
||||
|
@ -83,4 +83,4 @@ __floattixf(ti_int a)
|
|||
return fb.f;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a double, rounding toward even. */
|
||||
|
||||
|
@ -43,7 +43,7 @@ __floatuntidf(tu_int a)
|
|||
* P = bit DBL_MANT_DIG-1 bits to the right of 1
|
||||
* Q = bit DBL_MANT_DIG bits to the right of 1
|
||||
* R = "or" of all bits to the right of Q
|
||||
*/
|
||||
*/
|
||||
switch (sd)
|
||||
{
|
||||
case DBL_MANT_DIG + 1:
|
||||
|
@ -79,4 +79,4 @@ __floatuntidf(tu_int a)
|
|||
return fb.f;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a float, rounding toward even. */
|
||||
|
||||
|
@ -78,4 +78,4 @@ __floatuntisf(tu_int a)
|
|||
return fb.f;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a long double, rounding toward even. */
|
||||
|
||||
|
|
|
@ -56,8 +56,11 @@ typedef union
|
|||
}s;
|
||||
} udwords;
|
||||
|
||||
#if __x86_64
|
||||
#if __LP64__
|
||||
#define CRT_HAS_128BIT
|
||||
#endif
|
||||
|
||||
#ifdef CRT_HAS_128BIT
|
||||
typedef int ti_int __attribute__ ((mode (TI)));
|
||||
typedef unsigned tu_int __attribute__ ((mode (TI)));
|
||||
|
||||
|
@ -105,7 +108,7 @@ static inline tu_int make_tu(du_int h, du_int l) {
|
|||
return r.all;
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
||||
typedef union
|
||||
{
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: logical a >> b */
|
||||
|
||||
|
@ -42,4 +42,4 @@ __lshrti3(ti_int a, si_int b)
|
|||
return result.all;
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
tu_int __udivmodti4(tu_int a, tu_int b, tu_int* rem);
|
||||
|
||||
|
@ -33,4 +33,4 @@ __modti3(ti_int a, ti_int b)
|
|||
return (r ^ s) - s; /* negate if s == -1 */
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: a * b */
|
||||
|
||||
|
@ -59,4 +59,4 @@ __muloti4(ti_int a, ti_int b, int* overflow)
|
|||
return result;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: a * b */
|
||||
|
||||
|
@ -55,4 +55,4 @@ __multi3(ti_int a, ti_int b)
|
|||
return r.all;
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: a * b */
|
||||
|
||||
|
@ -57,4 +57,4 @@ __mulvti3(ti_int a, ti_int b)
|
|||
return a * b;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: -a */
|
||||
|
||||
|
@ -27,4 +27,4 @@ __negti2(ti_int a)
|
|||
return -a;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: -a */
|
||||
|
||||
|
@ -29,4 +29,4 @@ __negvti2(ti_int a)
|
|||
return -a;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: 1 if number of bits is odd else returns 0 */
|
||||
|
||||
|
@ -28,4 +28,4 @@ __parityti2(ti_int a)
|
|||
return __paritydi2(x.s.high ^ x.s.low);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: count of 1 bits */
|
||||
|
||||
|
@ -41,4 +41,4 @@ __popcountti2(ti_int a)
|
|||
return (x + (x >> 8)) & 0xFF; /* (8 significant bits) */
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: a - b */
|
||||
|
||||
|
@ -37,4 +37,4 @@ __subvti3(ti_int a, ti_int b)
|
|||
return s;
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: if (a < b) returns 0
|
||||
* if (a == b) returns 1
|
||||
|
@ -39,4 +39,4 @@ __ucmpti2(tu_int a, tu_int b)
|
|||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Effects: if rem != 0, *rem = a % b
|
||||
* Returns: a / b
|
||||
|
@ -253,4 +253,4 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem)
|
|||
return q.all;
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
tu_int __udivmodti4(tu_int a, tu_int b, tu_int* rem);
|
||||
|
||||
|
@ -26,4 +26,4 @@ __udivti3(tu_int a, tu_int b)
|
|||
return __udivmodti4(a, b, 0);
|
||||
}
|
||||
|
||||
#endif /* __x86_64 */
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "int_lib.h"
|
||||
|
||||
#if __x86_64
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
tu_int __udivmodti4(tu_int a, tu_int b, tu_int* rem);
|
||||
|
||||
|
@ -28,4 +28,4 @@ __umodti3(tu_int a, tu_int b)
|
|||
return r;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
|
Loading…
Reference in New Issue