Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Merge changes from utf16 branch to update to snapshot 2008-12.
Merge Snapshot 2008-12 to this branch. Some tweaks needed in boot-2008-05-cross-unicode-x86.lisp and the Config files. FreeBSD and Darwin/x86 untested, but Linux and Solaris build ok.
file boot-2008-09-sse2.lisp was added on branch unicode-utf16-extfmt-branch on 2008-12-19 01:31:32 +0000
file boot-2008-09-sse2.lisp was added on branch unicode-utf16-branch on 2008-12-18 21:50:17 +0000
Merge in SSE2 changes from sse2-packed-branch (tag sse2-packed-2008-11-12).
Add complex floating-point vops to speed up complex arithmetic. bootfiles/19e/boot-2008-09-sse2.lisp: o Add :complex-fp-vops feature code/sparc-svr4-vm.lisp: code/x86-vm.lisp: o Register :complex-fp-vops feature compiler/float-tran.lisp: o Clean up deftransforms for complex arithmetic to support complex-fp-vops. o Add special vop for complex division that takes advantage of the fast complex multiply. compiler/x86/float-sse2.lisp: o Add vops for complex arithmetic. o Add guard for sse3 for some vops that need sse3 instructions. compiler/x86/insts.lisp: o Always define instructions available with sse3. Leave a comment so we know they're for sse3.
o Clean up some code o With the split of x87-specific code, we need to load x87-array.lisp before we load array.lisp.
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.
file boot-2008-09-sse2.lisp was initially added on branch sse2-branch.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|