Skip to content
  1. Apr 06, 2014
  2. Apr 05, 2014
    • Raymond Toy's avatar
      Simplify call-out for sse2. · 29359293
      Raymond Toy authored
      For sse2, we don't need to do the fldz/fstp dance when doing a
      foreign function call.
      
      A cross-compile is needed!
      
       * src/bootfiles/20e/boot-2014-04-cross-x86.lisp:
         * Cross-compile script to enable these changes.
       * src/compiler/x86/c-call.lisp:
         * Make the float result tn be xmm registers, not x87 fpu registers.
       * src/compiler/x86/sse2-c-call.lisp:
         * Simplify call-out not to use fldz/fstp except for the minimum
           required for the 32-bit ABI.
       * src/lisp/x86-assem.S
         * Comment out the fstp/fldz insts that aren't needed for SSE2.
      29359293
  3. Dec 23, 2012
  4. Nov 04, 2011
  5. Sep 25, 2011
  6. Jul 01, 2010
    • rtoy's avatar
      Fix critical bug introduced in previous changes. Incorrect results · 4578fb45
      rtoy authored
      were returned when calling out to a C function returning a float.
      
      float-sse2.lisp:
      o Remove the FLOAT-MOVE vop and add a FLOAT-MOVE/SINGLE and
        FLOAT-MOVE/DOUBLE that can handle moving from FR0 or any XMM
        register to any XMM register.
      o Update the move vops appropriately.
      
      sse2-c-call.lisp:
      o Don't need to move FR0 to XMM0 anymore.  This was one source of the
        problem.  The compiler knows now to ask for a move from FR0 to some
        XMM register.
      o Update comments.
      
      vm.lisp:
      o Correct printing of XMM registers.  Previously printed them as
        XMM8-15 but should have been XMM0-7.  (Mostly in trace files.)
      4578fb45
  7. Jun 22, 2010
    • rtoy's avatar
      Revert the previous change to fix debug:arg/trace issue. Instead, use · 1fea054f
      rtoy authored
      Carl's suggestion and define new SC numbers for the xmm registers
      instead of overloading the x87 fpu registers and the xmm register
      SC's.
      
      bootfiles/20a/boot-2010-06-cross-x86.lisp:
      o New file needed for cross-compiling this change.
      
      code/x86-vm.lisp:
      o Revert previous change.
      
      compiler/x86/sse2-c-call.lisp:
      o Use xmm0-tn instead of fr0-tn.  No functional change, but makes the
        code more readable.
      
      compiler/x86/vm.lisp:
      o Increase the number of float registers from 8 to 16 (8 more for SSE2
        registers).
      o Define new xmm<n> registers
      o Update the locations with the new sse2 SC locations for single-reg,
        double-reg, double-double-reg, complex-single-reg,
        complex-double-reg, and complex-double-double-reg storage classes.
      
      lisp/Darwin-os.c:
      o Revert previous change.
      o Update os_sigcontext_fpu_reg to support the xmm registers.
      
      lisp/Linux-os.c:
      o Update os_sigcontext_fpu_reg to support the xmm registers.
      1fea054f
  8. Mar 19, 2010
  9. Nov 12, 2008