1.0.32.12: Fix slot-value on specialized parameters in SVUC methods
[sbcl.git] / src / compiler / x86-64 / float.lisp
index 40d6ade..5b21175 100644 (file)
                    (inst ,opinst r y))
                   (t
                    (if (sc-is x ,constant-sc)
-                       (inst ,load-inst r (get-constant x))
+                       (inst ,load-inst tmp (get-constant x))
                        (move tmp x))
                    (inst ,opinst tmp y)
                    (move r tmp)))))
                               `(progn
                                  (move dup real)
                                  (inst unpcklps dup dup)))
-                        ,single-inst movss movaps
+                        ,single-inst movss movq
                         single-reg fp-single-immediate single-float
                         complex-single-reg fp-complex-single-immediate complex-single-float
                         ,single-real-complex-name ,single-complex-real-name)
                             :load-if (not (sc-is x ,constant-sc)))
                          (y :scs (,sc ,constant-sc)
                             :target mask
-                            :load-if (not (sc-is x ,constant-sc))))
+                            :load-if (not (sc-is y ,constant-sc))))
                   (:arg-types ,type ,type)
                   (:temporary (:sc ,sc :from :eval) mask)
                   (:temporary (:sc any-reg) bits)
                           (signed-reg
                            (inst ,inst y x)
                            ))))))
-  (frob %unary-truncate cvttss2si single-reg single-float nil)
-  (frob %unary-truncate cvttsd2si double-reg double-float nil)
+  (frob %unary-truncate/single-float cvttss2si single-reg single-float nil)
+  (frob %unary-truncate/double-float cvttsd2si double-reg double-float nil)
 
   (frob %unary-round cvtss2si single-reg single-float t)
   (frob %unary-round cvtsd2si double-reg double-float t))