Micro-optimizations in MOVE-IMMEDIATE and MOVE-ARG on x86-64
authorLutz Euler <lutz.euler@freenet.de>
Wed, 25 Apr 2012 22:49:06 +0000 (00:49 +0200)
committerLutz Euler <lutz.euler@freenet.de>
Wed, 25 Apr 2012 22:49:06 +0000 (00:49 +0200)
commitc50747a96774ec8164ead5e51d74a6d8bcf6e822
treef1b93c16069a5e74269839c7dfe251204b16eb4f
parentba0c7755846d3efe297d3b02b792381bc6c36515
Micro-optimizations in MOVE-IMMEDIATE and MOVE-ARG on x86-64

In MOVE-IMMEDIATE, when the target is in memory, avoid using a temporary
register for more values than currently: The MOV instruction can move
immediate values of type (SIGNED-BYTE 32) into 64-bit memory locations,
not only (SIGNED-BYTE 31).

Simplify a TYPE-CASE in MOVE-ARG: merge two clauses that generated
exactly the same MOV instruction; spare a call to MOVE-IMMEDIATE and
get rid of two ugly literal 29s thereby.

Add a test.
src/compiler/x86-64/move.lisp
tests/compiler.pure.lisp