Optimize RETURN-MULTIPLE on x86-64.
authorStas Boukarev <stassats@gmail.com>
Tue, 1 Oct 2013 16:17:00 +0000 (20:17 +0400)
committerStas Boukarev <stassats@gmail.com>
Tue, 1 Oct 2013 16:17:00 +0000 (20:17 +0400)
commit45d50c67c7f3d81b3357c785d7226df22421a261
tree03be960c22733329d738aa5b144295398f64f041
parent7ff2233608f1f110e112ae576fa829618ce181ae
Optimize RETURN-MULTIPLE on x86-64.

Replace REP MOVS with simple instructions.

RETURN-MULTIPLE is used to copy the multiple value down the stack.
The following code becomes around 5 times faster on a modern CPU,
passing more values is faster as well, but not by as much.

(defun m ()
  (declare (optimize speed (safety 0)))
  (values 1 2 3 4))

(defun b ()
  (declare (optimize speed (safety 0)))
  (let (*)
    (m)))
src/assembly/x86-64/assem-rtns.lisp