- Oct 10, 2008
-
-
rtoy authored
to memory anymore, so this should be faster, but I didn't measure it.
-
rtoy authored
o Add pcmpeqq, but disabled since it an Opteron doesn't like it. o Add packed shift instructions: psrl, psll, psra.
-
rtoy authored
o Add vop to divide a complex by a real using packed operations. float-tran.lisp: o New transform for /. Take advantage of packed complex multiply and packed division of a complex by a real. o Remove deftransform for dividing a complex double-float by a double-float. These give a moderate speedup for complex double-float divison. Still seems much slower than x87.
-
rtoy authored
-
rtoy authored
-
- Oct 09, 2008
-
-
rtoy authored
-
rtoy authored
-
rtoy authored
o Add UNPCKLPD instruction. o Use define-regular-sse-inst to define UNPCKHPD and UNPCKLPD. o Add MOVHPD and MOVLPD instructions.
-
rtoy authored
alignment requirements. o Simplify definition of deifne-movsd/ss-sse-inst. o Fix bug in printer for shufpd.
-
rtoy authored
Disable some deftransforms for complex double addition, subtraction, and multiplication so we can use the vops.
-
rtoy authored
(This should be done in a better way.) o LOAD-COMPLEX-DOUBLE and MOVE-TO-COMPLEX-DOUBLE were storing instead of loading value. o Don't target the result register in MAKE-COMPLEX-DOUBLE-FLOAT. o Add some vops to do complex double float addition, subtraction, and multiplication. This requires changes to float-tran to be effective. The multiplication vop uses an sse3 instruction so it needs to be rewritten.
-
rtoy authored
o Make sure unpckhpd never uses a memory operand (128-bit alignment not guaranteed). o Add some comments to describe what the instructions do. o Make sure shufpd never uses a memory operand (128-bit alignment not guaranteed) and make sure the immediate value is valid.
-
- Oct 07, 2008
- Oct 06, 2008
- Oct 05, 2008
- Oct 04, 2008
-
-
rtoy authored
tell us if the core is for x87 or sse2. compiler/x86/sse2-c-call.lisp: o Remove all of the fp-pop, fldz stuff from the inline foreign call. o If there's a floating-point result, save the result and pop the FPU stack. lisp/x86-assem.S: o Add global variable use_sse2. Non-zero means we are using SSE2 and should not do any x87 stuff in call_into_c and call_into_lisp. We just branch around that code. (Should we do this in a different way and have separate versions for x87 and sse2?) lisp/save.c: o After the core version, output a word indicating the type of FPU. Default is 0. A value of 1 indicates we have SSE2. lisp/coreparse.c: o Read the fpu type word and return it. o load_core_file has extra parameter to return the fpu type. lisp/core.h: o Update declaration of load_core_file lisp/lisp.c: o Update calls to new load_core_file. o Add check to print a message before exiting in the case that the core uses SSE2 and but the chip doesn't support SSE2. o Set use_sse2 flag appropriately.
-
rtoy authored
shouldn't have been.
-
- Oct 03, 2008
-
-
rtoy authored
-
- Oct 02, 2008
-
-
rtoy authored
o Oops. Was setting the wrong bits in the x87 modes for rounding control. o Also always set precision to 64-bits. (Not sure if we should do this. And something else is setting the mode back to 53-bits anyway.) compiler/x86/float-sse2.lisp: o Document the format of the mxcsr register and the x87 status and control words, just so we don't have to go look up the Intel docs all the time.
-
rtoy authored
without consing.
-
rtoy authored
-
- Oct 01, 2008
-
-
rtoy authored
-
rtoy authored
-
rtoy authored
-
rtoy authored
occur as soon as the instruction completes execution).
-
rtoy authored
-
rtoy authored
code/float-trap.lisp: o Merge the SSE2 version into the original version. There's only a small difference. compiler/x86/float-sse2.lisp: o Remove the vops floating-point-modes and set-floating-point-modes that are no longer used. compiler/x86/insts.lisp: o Remove the sse2 conditionalizations for the sse2 instructions. They aren't really necessary. lisp/Linux-os.c: o Remove unused os_set_sigcontext_fpu_modes.
-
rtoy authored
-
rtoy authored
format. Basically, use the same format as the mxcsr register.
-
rtoy authored
floating-point mode. o Restore the SSE2 modes in restore_fpu. o Remove some of the FEATURE_SSE2 conditionals, because Darwin/x86 always has SSE2.
-
rtoy authored
More work needed. code/float-trap.lisp: o Implement new FLOATING-POINT-MODES function to merge x87 and sse2 modes into one compatible word. Add corresponding setter. compiler/x86/float-sse2.lisp: o Turn off the translation for original floating-point-modes vops. compiler/x86/parms.lisp: o Update float bytes to match the MXCSR definitions that we are now using for the result of floating-point-modes. lisp/Darwin-os.c: o Update os_sigcontext_fpu_modes to use the same MXCSR format for the modes.
-
- Sep 30, 2008
-
-
rtoy authored
-
rtoy authored
o Revert to old behavior so clean-target removes the subsystem libraries and lisp cores. o Add -K flag to keep either the libraries, the cores, or both. tools/build.sh: o Use the -K flag (for the last build) to keep things around. This is needed so that when we make a distribution, we have both the sse2 and x87 cores available and also the fasls for the subsystem libraries.
-
rtoy authored
we will install lisp-*.core, and lisp.core for all others.
-
rtoy authored
Basically ignored everywhere except for x86.
-
rtoy authored
for x86.
-
rtoy authored
a chip without SSE2. We leave the #ifdef's in place, just in case someone wants to build the code on a machine without sse2 support at all.
-