From e5bc2c586e644fc7fe7a1e48d495600c8d27a19f Mon Sep 17 00:00:00 2001 From: Raymond Toy <toy.raymond@gmail.com> Date: Sat, 2 Aug 2014 19:28:54 -0700 Subject: [PATCH] Use correct flags to generate sse2 instructions in the C code and update to include the rest of the fdlibm routines. With this change, all of the C code should now use sse2 instructions as needed, which means no more -ffloat-store, and the couple of test cases like tan.exceptions no longer fail because we signal execptions as expected. --- src/lisp/Config.x86_linux | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/src/lisp/Config.x86_linux b/src/lisp/Config.x86_linux index 9c4cbc1c9..8c06baeeb 100644 --- a/src/lisp/Config.x86_linux +++ b/src/lisp/Config.x86_linux @@ -1,11 +1,7 @@ # -*- Mode: makefile -*- include Config.x86_common -CPPFLAGS += -m32 -rdynamic -D__NO_CTYPE -D_GNU_SOURCE - -# Need -ffloat-store for e_rem_pio2 and k_rem_pio2 to get properly -# rounded double-floats while using x87 extended precision. -CC_REM_PIO2 = -ffloat-store +CPPFLAGS += -m32 -rdynamic -D__NO_CTYPE -D_GNU_SOURCE -march=pentium4 -mfpmath=sse -msse2 UNDEFSYMPATTERN = -Xlinker -u -Xlinker & ASSEM_SRC += linux-stubs.S @@ -16,7 +12,12 @@ OS_LINK_FLAGS += -Wl,-z,noexecstack EXEC_FINAL_OBJ = exec-final.o -OS_SRC += k_sin.c k_cos.c k_tan.c s_sin.c s_cos.c s_tan.c sincos.c s_log1p.c s_expm1.c e_pow.c +OS_SRC += k_sin.c k_cos.c k_tan.c s_sin.c s_cos.c s_tan.c sincos.c \ + s_log1p.c s_expm1.c e_pow.c e_exp.c e_log.c \ + e_acos.c e_asin.c s_atan.c \ + e_cosh.c e_sinh.c s_tanh.c \ + e_acosh.c s_asinh.c e_atanh.c \ + e_atan2.c k_sin.o : k_sin.c $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< @@ -42,4 +43,30 @@ s_exmp1.o : s_expm1.c e_pow.o : e_pow.c $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +e_exp.o : e_exp.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +e_log.o : e_log.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< + +e_acos.o : e_acos.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +e_asin.o : e_asin.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +s_atan.o : s_atan.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +e_cosh.o : e_cosh.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +e_sinh.o : e_sinh.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +s_tanh.o : s_tanh.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +e_acosh.o : e_acosh.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +e_asinh.o : s_asinh.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< +e_atanh.o : e_atanh.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< + +e_atan2.o : e_atan2.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CC_REM_PIO2) $< -- GitLab