Wire Sysio
Wire Sysion 1.0.0
Loading...
Searching...
No Matches
fixunsdfti.c
Go to the documentation of this file.
1
/* ===-- fixunsdfti.c - Implement __fixunsdfti -----------------------------===
2
*
3
* The LLVM Compiler Infrastructure
4
*
5
* This file is dual licensed under the MIT and the University of Illinois Open
6
* Source Licenses. See LICENSE.TXT for details.
7
*
8
* ===----------------------------------------------------------------------===
9
*/
10
11
#include "
fp64.h
"
12
13
typedef
unsigned
__int128
fixuint_t
;
14
15
fixuint_t
___fixunsdfti
(
uint64_t
a
) {
16
// Break a into sign, exponent, significand
17
const
rep_t
aRep =
a
;
18
const
rep_t
aAbs = aRep &
absMask
;
19
const
int
sign = aRep &
signBit
? -1 : 1;
20
const
int
exponent = (aAbs >>
significandBits
) -
exponentBias
;
21
const
rep_t
significand = (aAbs &
significandMask
) |
implicitBit
;
22
23
// If either the value or the exponent is negative, the result is zero.
24
if
(sign == -1 || exponent < 0)
25
return
0;
26
27
// If the value is too large for the integer type, saturate.
28
if
((
unsigned
)exponent >=
sizeof
(
fixuint_t
) * CHAR_BIT)
29
return
~(
fixuint_t
)0;
30
31
// If 0 <= exponent < significandBits, right shift to get the result.
32
// Otherwise, shift left.
33
if
(exponent <
significandBits
)
34
return
significand >> (
significandBits
- exponent);
35
else
36
return
(
fixuint_t
)significand << (exponent -
significandBits
);
37
}
fixuint_t
unsigned __int128 fixuint_t
Definition
fixdfti.c:14
___fixunsdfti
fixuint_t ___fixunsdfti(uint64_t a)
Definition
fixunsdfti.c:15
rep_t
__int128 rep_t
Definition
fixunstfti.c:16
implicitBit
#define implicitBit
Definition
fp128.h:15
signBit
#define signBit
Definition
fp128.h:17
exponentBias
#define exponentBias
Definition
fp128.h:13
significandBits
#define significandBits
Definition
fp128.h:9
significandMask
#define significandMask
Definition
fp128.h:16
absMask
#define absMask
Definition
fp128.h:18
fp64.h
a
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition
pointer.h:1181
uint64_t
unsigned __int64 uint64_t
Definition
stdint.h:136
libraries
builtins
fixunsdfti.c
Generated by
1.12.0