Skip to content

Commit b8840b4

Browse files
committed
compiler-rt builtins: move 80-bit long double functions into their own
block, only enabling it for x86, and add more 128-bit quad functions.
1 parent b3086e6 commit b8840b4

File tree

1 file changed

+39
-21
lines changed

1 file changed

+39
-21
lines changed

lib/libcompiler_rt/Makefile.inc

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

2-
CRTARCH= ${MACHINE_CPUARCH:C/amd64/x86_64/}
2+
CRTARCH= ${MACHINE_CPUARCH:C/amd64/x86_64/:C/powerpc/ppc/}
3+
.info DIMDBG: CRTARCH=${CRTARCH}
34

45
CRTSRC= ${SRCTOP}/contrib/llvm-project/compiler-rt/lib/builtins
56

@@ -35,12 +36,9 @@ SRCF+= divmodsi4
3536
SRCF+= divmodti4
3637
SRCF+= divsc3
3738
SRCF+= divsi3
38-
SRCF+= divtc3
3939
SRCF+= divti3
40-
SRCF+= divxc3
4140
SRCF+= enable_execute_stack
4241
SRCF+= extendhfsf2
43-
SRCF+= extendxftf2
4442
SRCF+= ffsdi2
4543
SRCF+= ffssi2
4644
SRCF+= ffsti2
@@ -54,21 +52,12 @@ SRCF+= fixunsdfti
5452
SRCF+= fixunssfdi
5553
SRCF+= fixunssfsi
5654
SRCF+= fixunssfti
57-
SRCF+= fixunsxfdi
58-
SRCF+= fixunsxfsi
59-
SRCF+= fixunsxfti
60-
SRCF+= fixxfdi
61-
SRCF+= fixxfti
62-
SRCF+= floatditf
6355
SRCF+= floattidf
6456
SRCF+= floattisf
65-
SRCF+= floattixf
66-
SRCF+= floatunditf
6757
SRCF+= floatunsidf
6858
SRCF+= floatunsisf
6959
SRCF+= floatuntidf
7060
SRCF+= floatuntisf
71-
SRCF+= floatuntixf
7261
SRCF+= int_util
7362
SRCF+= lshrdi3
7463
SRCF+= lshrti3
@@ -81,12 +70,10 @@ SRCF+= mulodi4
8170
SRCF+= mulosi4
8271
SRCF+= muloti4
8372
SRCF+= mulsc3
84-
SRCF+= multc3
8573
SRCF+= multi3
8674
SRCF+= mulvdi3
8775
SRCF+= mulvsi3
8876
SRCF+= mulvti3
89-
SRCF+= mulxc3
9077
SRCF+= negdf2
9178
SRCF+= negdi2
9279
SRCF+= negsf2
@@ -102,15 +89,12 @@ SRCF+= popcountsi2
10289
SRCF+= popcountti2
10390
SRCF+= powidf2
10491
SRCF+= powisf2
105-
SRCF+= powitf2
106-
SRCF+= powixf2
10792
SRCF+= subvdi3
10893
SRCF+= subvsi3
10994
SRCF+= subvti3
11095
SRCF+= trampoline_setup
11196
SRCF+= truncdfhf2
11297
SRCF+= truncsfhf2
113-
SRCF+= trunctfxf2
11498
SRCF+= ucmpdi2
11599
SRCF+= ucmpti2
116100
SRCF+= udivdi3
@@ -134,18 +118,44 @@ SRCF+= atomic
134118
.if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU:Msse2)
135119
SRCS+= floatdidf.c
136120
SRCS+= floatdisf.c
137-
SRCS+= floatdixf.c
138121
SRCS+= floatundidf.c
139122
SRCS+= floatundisf.c
140-
SRCS+= floatundixf.c
141123
.else
142124
SRCF+= floatdidf
143125
SRCF+= floatdisf
144-
SRCF+= floatdixf
145126
SRCF+= floatundidf
146127
SRCF+= floatundisf
128+
.endif
129+
130+
#
131+
# 80-bit long double functions, only used on x86.
132+
#
133+
.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
134+
.info DIMDBG: Enabling 80-bit long double
135+
SRCF+= divxc3
136+
SRCF+= extendxftf2
137+
SRCF+= fixxfdi
138+
SRCF+= fixxfti
139+
SRCF+= fixunsxfdi
140+
SRCF+= fixunsxfsi
141+
SRCF+= fixunsxfti
142+
SRCF+= floattixf
143+
SRCF+= floatuntixf
144+
SRCF+= mulxc3
145+
SRCF+= powixf2
146+
SRCF+= trunctfxf2
147+
148+
# Avoid using SSE2 instructions on i386, if unsupported.
149+
.if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU:Msse2)
150+
SRCS+= floatdixf.c
151+
SRCS+= floatundixf.c
152+
.else
153+
SRCF+= floatdixf
147154
SRCF+= floatundixf
148155
.endif
156+
.else
157+
.info DIMDBG: NOT enabling 80-bit long double
158+
.endif
149159

150160
# __cpu_model support, only used on aarch64 and x86
151161
.if ${MACHINE_CPUARCH} == "aarch64"
@@ -168,8 +178,10 @@ SRCF+= fp_mode
168178
#
169179
.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || \
170180
${MACHINE_CPUARCH} == "riscv"
181+
.info DIMDBG: Enabling 128-bit quad precision
171182
SRCF+= addtf3
172183
SRCF+= comparetf2
184+
SRCF+= divtc3
173185
SRCF+= divtf3
174186
SRCF+= extenddftf2
175187
SRCF+= extendhftf2
@@ -180,15 +192,21 @@ SRCF+= fixtfti
180192
SRCF+= fixunstfdi
181193
SRCF+= fixunstfsi
182194
SRCF+= fixunstfti
195+
SRCF+= floatditf
183196
SRCF+= floatsitf
184197
SRCF+= floattitf
198+
SRCF+= floatunditf
185199
SRCF+= floatunsitf
186200
SRCF+= floatuntitf
201+
SRCF+= multc3
187202
SRCF+= multf3
203+
SRCF+= powitf2
188204
SRCF+= subtf3
189205
SRCF+= trunctfdf2
190206
SRCF+= trunctfhf2
191207
SRCF+= trunctfsf2
208+
.else
209+
.info DIMDBG: NOT enabling 128-bit quad precision
192210
.endif
193211

194212
# These are already shipped by libc.a on some architectures.

0 commit comments

Comments
 (0)