/[cmucl]/src/lisp/Config.x86_darwin
ViewVC logotype

Contents of /src/lisp/Config.x86_darwin

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3.2.1 - (show annotations)
Fri Sep 26 18:56:43 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
Changes since 1.3: +6 -2 lines
Initial support for SSE2.  This compiles itself ok on Linux, and
should work on OSX.  Much cleanup is needed, and still need to restore
buildability without SSE2.

Use bootfiles/19e/boot-2008-09-sse2.lisp as the cross-compile script.

The key changes are in these new files:

o float-sse2.lisp: implements all of the floating-point stuff with
  SSE2
o sse2-array.lisp: replacement vops using sse2 instead of x87
o sse2-c-call.lisp: replacement vops using sse2 instead of x87.
o sse2-sap.lisp: replacement vops using sse2 instead of x87



code/irrat.lisp:
o Basically turn off all the special routines that use the x87 trig,
  log, or exp instructions.  We don't support that currently.  (Would
  be nice, though.)
o Turn on %%sin and friends, like on ppc.
o Turn off %sin-quick and friends since we don't want to use x87 now.

code/misc.lisp:
o Register :sse2 feature.

compiler/float-tran.lisp:
o Disable transforms for x86 that use x87 instructions.  We don't
  support that with sse2.

compiler/loadbackend.lisp:
o Load up the appropriate sse2 files for the compiler.  This will
  currently overwrite existing vops with vops for SSE2.

compiler/x86/float.lisp:
o Disable various vops using the x87 instructions, since
  float-sse2.lisp doesn't have equivalents.  (Just in case.  Since
  this isn't compiled or loaded, we shouldn't need to do this.)

compiler/x86/insts.lisp:
o Add support for SSE2 instructions.  Shamelessly borrowed from our
  SBCL friends.

compiler/x86/vm.lisp:
o Turn off some fp-constants that are not supported with sse2.
o Print FP registers as XMM instead of FR.

lisp/Config.linux_gencgc:
lisp/Config.x86_darwin:
o Enable FEATURE_SSE2 flag when compiling.

lisp/Darwin-os.c:
lisp/Linux-os.c:
o Get the mxcsr status bits too when getting the FPU status from a
  sigcontext.

lisp/x86-assem.S:
o For SSE2, we copy any floating-point result (in ST(0)) to XMM0, so
  Lisp code can get it.

tools/comcom.lisp:
o Compile up the SSE2 files as needed.
1 # -*- Mode: makefile -*-
2 PATH1 = ../../src/lisp
3 vpath %.h $(PATH1)
4 vpath %.c $(PATH1)
5 vpath %.S $(PATH1)
6 INCLUDES = -iquote . -iquote $(PATH1)
7 CC = gcc
8 LD = ld
9 CPP = cpp
10
11 ifdef FEATURE_LINKAGE_TABLE
12 LINKAGE = -DLINKAGE_TABLE
13 endif
14
15 # Enable support for generational GC
16 ifdef FEATURE_GENCGC
17 GENCGC = -DGENCGC
18 GC_SRC = gencgc.c
19 endif
20
21 ifdef FEATURE_SSE2
22 SSE2 = -DFEATURE_SSE2
23 endif
24
25 CPPFLAGS = -Di386 -DDARWIN $(LINKAGE) $(GENCGC) $(SSE2)
26 CFLAGS = -Wstrict-prototypes -Wall -g3 $(CPPFLAGS) $(INCLUDES)
27 ASFLAGS = -g3 $(LINKAGE) $(GENCGC) $(INCLUDES) $(SSE2)
28 NM = nm -gp
29 UNDEFSYMPATTERN = -Xlinker -u -Xlinker &
30 ASSEM_SRC = x86-assem.S
31 ARCH_SRC = x86-arch.c
32 OS_SRC = Darwin-os.c os-common.c e_rem_pio2.c k_rem_pio2.c
33 # OS_LINK_FLAGS = -dynamic -export-dynamic
34 OS_LIBS =
35
36 # This has aliasing problems, so turn off aliasing.
37 e_rem_pio2.o : e_rem_pio2.c
38 $(CC) -c -fno-strict-aliasing -ffloat-store $(CFLAGS) $<

  ViewVC Help
Powered by ViewVC 1.1.5