Specialised VOPs for EQ of fixnum values on x86oids
[sbcl.git] / src / compiler / x86-64 / values.lisp
index 0ea0535..bea46f9 100644 (file)
   (:results (start :scs (any-reg))
             (count :scs (any-reg)))
   (:temporary (:sc descriptor-reg :from (:argument 0) :to (:result 1)) list)
-  (:temporary (:sc descriptor-reg :to (:result 1)) nil-temp)
-  (:temporary (:sc unsigned-reg :offset rax-offset :to (:result 1)) rax)
+  (:temporary (:sc dword-reg :offset eax-offset :to (:result 1)) eax)
   (:vop-var vop)
   (:save-p :compute-only)
   (:generator 0
     (move list arg)
     (move start rsp-tn)                 ; WARN pointing 1 below
-    (inst mov nil-temp nil-value)
 
     LOOP
-    (inst cmp list nil-temp)
+    (inst cmp list nil-value)
     (inst jmp :e DONE)
     (pushw list cons-car-slot list-pointer-lowtag)
     (loadw list list cons-cdr-slot list-pointer-lowtag)
-    (inst mov rax list)
+    (inst mov eax (make-dword-tn list))
     (inst and al-tn lowtag-mask)
     (inst cmp al-tn list-pointer-lowtag)
     (inst jmp :e LOOP)