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
45CRTSRC = ${SRCTOP}/contrib/llvm-project/compiler-rt/lib/builtins
56
@@ -35,12 +36,9 @@ SRCF+= divmodsi4
3536SRCF+ = divmodti4
3637SRCF+ = divsc3
3738SRCF+ = divsi3
38- SRCF+ = divtc3
3939SRCF+ = divti3
40- SRCF+ = divxc3
4140SRCF+ = enable_execute_stack
4241SRCF+ = extendhfsf2
43- SRCF+ = extendxftf2
4442SRCF+ = ffsdi2
4543SRCF+ = ffssi2
4644SRCF+ = ffsti2
@@ -54,21 +52,12 @@ SRCF+= fixunsdfti
5452SRCF+ = fixunssfdi
5553SRCF+ = fixunssfsi
5654SRCF+ = fixunssfti
57- SRCF+ = fixunsxfdi
58- SRCF+ = fixunsxfsi
59- SRCF+ = fixunsxfti
60- SRCF+ = fixxfdi
61- SRCF+ = fixxfti
62- SRCF+ = floatditf
6355SRCF+ = floattidf
6456SRCF+ = floattisf
65- SRCF+ = floattixf
66- SRCF+ = floatunditf
6757SRCF+ = floatunsidf
6858SRCF+ = floatunsisf
6959SRCF+ = floatuntidf
7060SRCF+ = floatuntisf
71- SRCF+ = floatuntixf
7261SRCF+ = int_util
7362SRCF+ = lshrdi3
7463SRCF+ = lshrti3
@@ -81,12 +70,10 @@ SRCF+= mulodi4
8170SRCF+ = mulosi4
8271SRCF+ = muloti4
8372SRCF+ = mulsc3
84- SRCF+ = multc3
8573SRCF+ = multi3
8674SRCF+ = mulvdi3
8775SRCF+ = mulvsi3
8876SRCF+ = mulvti3
89- SRCF+ = mulxc3
9077SRCF+ = negdf2
9178SRCF+ = negdi2
9279SRCF+ = negsf2
@@ -102,15 +89,12 @@ SRCF+= popcountsi2
10289SRCF+ = popcountti2
10390SRCF+ = powidf2
10491SRCF+ = powisf2
105- SRCF+ = powitf2
106- SRCF+ = powixf2
10792SRCF+ = subvdi3
10893SRCF+ = subvsi3
10994SRCF+ = subvti3
11095SRCF+ = trampoline_setup
11196SRCF+ = truncdfhf2
11297SRCF+ = truncsfhf2
113- SRCF+ = trunctfxf2
11498SRCF+ = ucmpdi2
11599SRCF+ = ucmpti2
116100SRCF+ = udivdi3
@@ -134,18 +118,44 @@ SRCF+= atomic
134118.if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU :Msse2)
135119SRCS+ = floatdidf.c
136120SRCS+ = floatdisf.c
137- SRCS+ = floatdixf.c
138121SRCS+ = floatundidf.c
139122SRCS+ = floatundisf.c
140- SRCS+ = floatundixf.c
141123.else
142124SRCF+ = floatdidf
143125SRCF+ = floatdisf
144- SRCF+ = floatdixf
145126SRCF+ = floatundidf
146127SRCF+ = 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
147154SRCF+ = 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
171182SRCF+ = addtf3
172183SRCF+ = comparetf2
184+ SRCF+ = divtc3
173185SRCF+ = divtf3
174186SRCF+ = extenddftf2
175187SRCF+ = extendhftf2
@@ -180,15 +192,21 @@ SRCF+= fixtfti
180192SRCF+ = fixunstfdi
181193SRCF+ = fixunstfsi
182194SRCF+ = fixunstfti
195+ SRCF+ = floatditf
183196SRCF+ = floatsitf
184197SRCF+ = floattitf
198+ SRCF+ = floatunditf
185199SRCF+ = floatunsitf
186200SRCF+ = floatuntitf
201+ SRCF+ = multc3
187202SRCF+ = multf3
203+ SRCF+ = powitf2
188204SRCF+ = subtf3
189205SRCF+ = trunctfdf2
190206SRCF+ = trunctfhf2
191207SRCF+ = 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