Skip to content

Commit d85f5a6

Browse files
[compiler-rt] Fix build of builtins on Windows
Fix Windows build after 910a4bf (the breakage was found by the buildbot https://lab.llvm.org/buildbot/#/builders/127/builds/56796)
1 parent c319c74 commit d85f5a6

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

compiler-rt/lib/builtins/fp_extend.h

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ typedef uint32_t src_rep_t;
2323
static const int srcBits = sizeof(src_t) * CHAR_BIT;
2424
static const int srcSigFracBits = 23;
2525
// -1 accounts for the sign bit.
26-
static const int srcExpBits = srcBits - srcSigFracBits - 1;
26+
// srcBits - srcSigFracBits - 1
27+
static const int srcExpBits = 8;
2728
#define src_rep_t_clz clzsi
2829

2930
#elif defined SRC_DOUBLE
@@ -33,7 +34,8 @@ typedef uint64_t src_rep_t;
3334
static const int srcBits = sizeof(src_t) * CHAR_BIT;
3435
static const int srcSigFracBits = 52;
3536
// -1 accounts for the sign bit.
36-
static const int srcExpBits = srcBits - srcSigFracBits - 1;
37+
// srcBits - srcSigFracBits - 1
38+
static const int srcExpBits = 11;
3739

3840
static inline int src_rep_t_clz_impl(src_rep_t a) {
3941
#if defined __LP64__
@@ -56,7 +58,8 @@ static const int srcBits = 80;
5658
static const int srcSigFracBits = 63;
5759
// -1 accounts for the sign bit.
5860
// -1 accounts for the explicitly stored integer bit.
59-
static const int srcExpBits = srcBits - srcSigFracBits - 1 - 1;
61+
// srcBits - srcSigFracBits - 1 - 1
62+
static const int srcExpBits = 15;
6063

6164
#elif defined SRC_HALF
6265
#ifdef COMPILER_RT_HAS_FLOAT16
@@ -69,7 +72,8 @@ typedef uint16_t src_rep_t;
6972
static const int srcBits = sizeof(src_t) * CHAR_BIT;
7073
static const int srcSigFracBits = 10;
7174
// -1 accounts for the sign bit.
72-
static const int srcExpBits = srcBits - srcSigFracBits - 1;
75+
// srcBits - srcSigFracBits - 1
76+
static const int srcExpBits = 5;
7377

7478
#define src_rep_t_clz __builtin_clz
7579

@@ -84,7 +88,8 @@ typedef uint32_t dst_rep_t;
8488
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
8589
static const int dstSigFracBits = 23;
8690
// -1 accounts for the sign bit.
87-
static const int dstExpBits = dstBits - dstSigFracBits - 1;
91+
// dstBits - dstSigFracBits - 1
92+
static const int dstExpBits = 8;
8893

8994
#elif defined DST_DOUBLE
9095
typedef double dst_t;
@@ -93,7 +98,8 @@ typedef uint64_t dst_rep_t;
9398
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
9499
static const int dstSigFracBits = 52;
95100
// -1 accounts for the sign bit.
96-
static const int dstExpBits = dstBits - dstSigFracBits - 1;
101+
// dstBits - dstSigFracBits - 1
102+
static const int dstExpBits = 11;
97103

98104
#elif defined DST_QUAD
99105
// TODO: use fp_lib.h once QUAD_PRECISION is available on x86_64.
@@ -108,7 +114,8 @@ typedef __uint128_t dst_rep_t;
108114
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
109115
static const int dstSigFracBits = 112;
110116
// -1 accounts for the sign bit.
111-
static const int dstExpBits = dstBits - dstSigFracBits - 1;
117+
// dstBits - dstSigFracBits - 1
118+
static const int dstExpBits = 15;
112119

113120
#else
114121
#error Destination should be single, double, or quad precision!

compiler-rt/lib/builtins/fp_trunc.h

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ typedef uint32_t src_rep_t;
2222
static const int srcBits = sizeof(src_t) * CHAR_BIT;
2323
static const int srcSigFracBits = 23;
2424
// -1 accounts for the sign bit.
25-
static const int srcExpBits = srcBits - srcSigFracBits - 1;
25+
// srcBits - srcSigFracBits - 1
26+
static const int srcExpBits = 8;
2627

2728
#elif defined SRC_DOUBLE
2829
typedef double src_t;
@@ -31,7 +32,8 @@ typedef uint64_t src_rep_t;
3132
static const int srcBits = sizeof(src_t) * CHAR_BIT;
3233
static const int srcSigFracBits = 52;
3334
// -1 accounts for the sign bit.
34-
static const int srcExpBits = srcBits - srcSigFracBits - 1;
35+
// srcBits - srcSigFracBits - 1
36+
static const int srcExpBits = 11;
3537

3638
#elif defined SRC_QUAD
3739
// TODO: use fp_lib.h once QUAD_PRECISION is available on x86_64.
@@ -46,7 +48,8 @@ typedef __uint128_t src_rep_t;
4648
static const int srcBits = sizeof(src_t) * CHAR_BIT;
4749
static const int srcSigFracBits = 112;
4850
// -1 accounts for the sign bit.
49-
static const int srcExpBits = srcBits - srcSigFracBits - 1;
51+
// srcBits - srcSigFracBits - 1
52+
static const int srcExpBits = 15;
5053

5154
#else
5255
#error Source should be double precision or quad precision!
@@ -59,7 +62,8 @@ typedef uint64_t dst_rep_t;
5962
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
6063
static const int dstSigFracBits = 52;
6164
// -1 accounts for the sign bit.
62-
static const int dstExpBits = dstBits - dstSigFracBits - 1;
65+
// dstBits - dstSigFracBits - 1
66+
static const int dstExpBits = 11;
6367

6468
#elif defined DST_80
6569
typedef long double dst_t;
@@ -69,7 +73,8 @@ static const int dstBits = 80;
6973
static const int dstSigFracBits = 63;
7074
// -1 accounts for the sign bit.
7175
// -1 accounts for the explicitly stored integer bit.
72-
static const int dstExpBits = dstBits - dstSigFracBits - 1 - 1;
76+
// dstBits - dstSigFracBits - 1 - 1
77+
static const int dstExpBits = 15;
7378

7479
#elif defined DST_SINGLE
7580
typedef float dst_t;
@@ -78,7 +83,8 @@ typedef uint32_t dst_rep_t;
7883
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
7984
static const int dstSigFracBits = 23;
8085
// -1 accounts for the sign bit.
81-
static const int dstExpBits = dstBits - dstSigFracBits - 1;
86+
// dstBits - dstSigFracBits - 1
87+
static const int dstExpBits = 8;
8288

8389
#elif defined DST_HALF
8490
#ifdef COMPILER_RT_HAS_FLOAT16
@@ -91,7 +97,8 @@ typedef uint16_t dst_rep_t;
9197
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
9298
static const int dstSigFracBits = 10;
9399
// -1 accounts for the sign bit.
94-
static const int dstExpBits = dstBits - dstSigFracBits - 1;
100+
// dstBits - dstSigFracBits - 1
101+
static const int dstExpBits = 5;
95102

96103
#elif defined DST_BFLOAT
97104
typedef __bf16 dst_t;
@@ -100,7 +107,8 @@ typedef uint16_t dst_rep_t;
100107
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
101108
static const int dstSigFracBits = 7;
102109
// -1 accounts for the sign bit.
103-
static const int dstExpBits = dstBits - dstSigFracBits - 1;
110+
// dstBits - dstSigFracBits - 1
111+
static const int dstExpBits = 8;
104112

105113
#else
106114
#error Destination should be single precision or double precision!

0 commit comments

Comments
 (0)