1.0.2.1: DATA-VECTOR-{REF,SET}-WITH-OFFSET for the x86
authorNathan Froyd <froydnj@cs.rice.edu>
Sat, 27 Jan 2007 03:45:45 +0000 (03:45 +0000)
committerNathan Froyd <froydnj@cs.rice.edu>
Sat, 27 Jan 2007 03:45:45 +0000 (03:45 +0000)
commit51e63f301624e39febdd85b5feba19b7c980f307
treefd494a390a17150e1b6116a2774053327addb167
parent731da68c7e3b7f2c4bc310aa75fc75f5aead24d2
1.0.2.1: DATA-VECTOR-{REF,SET}-WITH-OFFSET for the x86

Compile calls of (AREF FOO (+ INDEX <constant>) more efficiently:
... turn DATA-VECTOR-{REF,SET} into
  DATA-VECTOR-{REF,SET}-WITH-OFFSET when the element type of FOO
  is at least 8 bits wide;
... introduce general mechanism for optimization of such calls;
... redo the x86 DATA-VECTOR-FOO VOPs, reducing the number of such
  VOPs in the process;
... do the same for BIGNUM-REF and SAP-REF-FOO.

Upshot: 5-10% increase in performance on array-heavy code such
  as Ironclad; a 20% increase in performance has been observed
  on cellular automata codes.  Some restrictions apply; see the
  KLUDGE in src/compiler/generic/vm-tran for an example.
19 files changed:
NEWS
package-data-list.lisp-expr
src/code/bignum.lisp
src/code/early-extensions.lisp
src/compiler/aliencomp.lisp
src/compiler/array-tran.lisp
src/compiler/fndb.lisp
src/compiler/generic/utils.lisp
src/compiler/generic/vm-fndb.lisp
src/compiler/generic/vm-tran.lisp
src/compiler/ir1opt.lisp
src/compiler/ir1util.lisp
src/compiler/saptran.lisp
src/compiler/x86/arith.lisp
src/compiler/x86/array.lisp
src/compiler/x86/macros.lisp
src/compiler/x86/parms.lisp
src/compiler/x86/sap.lisp
version.lisp-expr