On Wed, Sep 06, 2017 at 11:43:15PM +0200, Christian Weisgerber wrote:
> Somebody noticed this on FreeBSD:
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221733
> 
> On i386, libcompiler_rt includes assembly implementations for
> floating point conversion functions that unconditionally use SSE2
> instructions, which are not supported by older CPUs.  Specifically,
> these files:
> 
> floatdidf.S
> floatdisf.S
> floatdixf.S
> floatundidf.S
> floatundisf.S
> floatundixf.S
> 
> We need to use the generic C implementation instead.  The way the
> Makefile is currently set up, I guess we would just delete the
> affected files under lib/libcompiler_rt/i386/?
> 
> -- 
> Christian "naddy" Weisgerber                          na...@mips.inka.de
> 

Maybe this would already help?  Would at least not throw stones into the
way of the next person doing an upgrade of compiler-rt...

Patrick

diff --git a/lib/libcompiler_rt/Makefile b/lib/libcompiler_rt/Makefile
index f82c8156c2f..070b6e7cbde 100644
--- a/lib/libcompiler_rt/Makefile
+++ b/lib/libcompiler_rt/Makefile
@@ -89,17 +89,11 @@ GEN_SRCS=   absvdi2 \
                fixunsxfti \
                fixxfdi \
                fixxfti \
-               floatdidf \
-               floatdisf \
-               floatdixf \
                floatsidf \
                floatsisf \
                floattidf \
                floattisf \
                floattixf \
-               floatundidf \
-               floatundisf \
-               floatundixf \
                floatunsidf \
                floatunsisf \
                floatuntidf \
@@ -165,6 +159,22 @@ GEN_SRCS=  absvdi2 \
                umodsi3 \
                umodti3
 
+.if ${RTARCH} == "i386"
+SRCS+= floatdidf.c \
+       floatdisf.c \
+       floatdixf.c.c \
+       floatundidf.c \
+       floatundisf.c \
+       floatundixf.c
+.else
+GEN_SRCS+=     floatdidf \
+               floatdisf \
+               floatdixf \
+               floatundidf \
+               floatundisf \
+               floatundixf
+.endif
+
 .for file in ${GEN_SRCS}
 .      if exists(${.CURDIR}/${RTARCH}/${file}.S)
 SRCS+= ${file}.S

Reply via email to