Use 32-bit xor rather than 64-bit xor for zeroing.
authorTaylor R Campbell <campbell@mumble.net>
Sun, 30 Dec 2018 23:33:21 +0000 (23:33 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Tue, 1 Jan 2019 06:32:12 +0000 (06:32 +0000)
src/compiler/machines/x86-64/lapgen.scm

index 50312549c834cf86959abd89de47950fdf595776..0ca2495c24b6e7faa3080983fd23cad0f23637da 100644 (file)
@@ -290,7 +290,9 @@ USA.
 \f
 (define (load-signed-immediate target value)
   (cond ((zero? value)
-        (LAP (XOR Q ,target ,target)))
+        ;; This zeros the upper half of the target, and is a shorter
+        ;; instruction than (XOR Q ...).
+        (LAP (XOR L ,target ,target)))
        ((fits-in-signed-quad? value)
         (LAP (MOV Q ,target (& ,value))))
        (else
@@ -298,7 +300,9 @@ USA.
 
 (define (load-unsigned-immediate target value)
   (cond ((zero? value)
-        (LAP (XOR Q ,target ,target)))
+        ;; This zeros the upper half of the target, and is a shorter
+        ;; instruction than (XOR Q ...).
+        (LAP (XOR L ,target ,target)))
        ((fits-in-unsigned-quad? value)
         (LAP (MOV Q ,target (&U ,value))))
        (else