1.0.29.54: Inline unboxed constants on x86[-64]
[sbcl.git] / src / compiler / x86-64 / vm.lisp
index 78c2df3..ce60198 100644 (file)
   (fp-complex-single-zero immediate-constant)
   (fp-complex-double-zero immediate-constant)
 
+  (fp-single-immediate immediate-constant)
+  (fp-double-immediate immediate-constant)
+  (fp-complex-single-immediate immediate-constant)
+  (fp-complex-double-immediate immediate-constant)
+
   (immediate immediate-constant)
 
   ;;
   ;; non-descriptor SINGLE-FLOATs
   (single-reg float-registers
               :locations #.*float-regs*
-              :constant-scs (fp-single-zero)
+              :constant-scs (fp-single-zero fp-single-immediate)
               :save-p t
               :alternate-scs (single-stack))
 
   ;; non-descriptor DOUBLE-FLOATs
   (double-reg float-registers
               :locations #.*float-regs*
-              :constant-scs (fp-double-zero)
+              :constant-scs (fp-double-zero fp-double-immediate)
               :save-p t
               :alternate-scs (double-stack))
 
   (complex-single-reg float-registers
                       :locations #.*float-regs*
-                      :constant-scs (fp-complex-single-zero)
+                      :constant-scs (fp-complex-single-zero fp-complex-single-immediate)
                       :save-p t
                       :alternate-scs (complex-single-stack))
 
   (complex-double-reg float-registers
                       :locations #.*float-regs*
-                      :constant-scs (fp-complex-double-zero)
+                      :constant-scs (fp-complex-double-zero fp-complex-double-immediate)
                       :save-p t
                       :alternate-scs (complex-double-stack))
 
      (when (static-symbol-p value)
        (sc-number-or-lose 'immediate)))
     (single-float
-     (if (eql value 0f0)
-         (sc-number-or-lose 'fp-single-zero )
-         nil))
+       (sc-number-or-lose
+        (if (eql value 0f0) 'fp-single-zero 'fp-single-immediate)))
     (double-float
-     (if (eql value 0d0)
-         (sc-number-or-lose 'fp-double-zero )
-         nil))
+       (sc-number-or-lose
+        (if (eql value 0d0) 'fp-double-zero 'fp-double-immediate)))
     ((complex single-float)
-     (if (eql value (complex 0f0 0f0))
-         (sc-number-or-lose 'fp-complex-single-zero)
-         nil))
+       (sc-number-or-lose
+        (if (eql value #c(0f0 0f0))
+            'fp-complex-single-zero
+            'fp-complex-single-immediate)))
     ((complex double-float)
-     (if (eql value (complex 0d0 0d0))
-         (sc-number-or-lose 'fp-complex-double-zero)
-         nil))))
+       (sc-number-or-lose
+        (if (eql value #c(0d0 0d0))
+            'fp-complex-double-zero
+            'fp-complex-double-immediate)))))
 
 \f
 ;;;; miscellaneous function call parameters