[Git][cmucl/cmucl][issue-156-take-2-nan-comparison] Split the <= and >= macros from the others
    Raymond Toy (@rtoy) 
    gitlab at common-lisp.net
       
    Fri Mar 10 23:23:08 UTC 2023
    
    
  
Raymond Toy pushed to branch issue-156-take-2-nan-comparison at cmucl / cmucl
Commits:
60c39207 by Raymond Toy at 2023-03-10T14:51:32-08:00
Split the <= and >= macros from the others
When !129 lands we'll probably need to rework the vops for <= and >=,
so let's split these out now, even if they're basically duplicating
the code.  The < and > vops are going to be replaced, and I have not
thought exactly how these will fit with < and > yet.  But since <= and
>= don't quite fully work, keep them separate.
- - - - -
1 changed file:
- src/compiler/x86/float-sse2.lisp
Changes:
=====================================
src/compiler/x86/float-sse2.lisp
=====================================
@@ -972,12 +972,42 @@
 		       (inst jmp ,yep target)
 		       (emit-label not-lab)))))))))
   (frob < single comiss :b :nb)
-  (frob <= single comiss :be :nbe)
   (frob > single comiss :a :na)
-  (frob >= single comiss :ae :nae)
   (frob < double comisd :b :nb)
+  (frob > double comisd :a :na))
+
+
+
+(macrolet
+    ((frob (op size inst yep nope)
+       (let ((ea (ecase size
+		   (single
+		    'ea-for-sf-desc)
+		   (double
+		    'ea-for-df-desc)))
+	     (name (symbolicate op "/" size "-FLOAT"))
+	     (sc-type (symbolicate size "-REG"))
+	     (inherit (symbolicate size "-FLOAT-COMPARE")))
+	 `(define-vop (,name ,inherit)
+	    (:translate ,op)
+	    (:info target not-p)
+	    (:generator 3
+	      (sc-case y
+		(,sc-type
+		 (inst ,inst x y))
+		(descriptor-reg
+		 (inst ,inst x (,ea y))))
+	      (cond (not-p
+		     (inst jmp :p target)
+		     (inst jmp ,nope target))
+		    (t
+		     (let ((not-lab (gen-label)))
+		       (inst jmp :p not-lab)
+		       (inst jmp ,yep target)
+		       (emit-label not-lab)))))))))
+  (frob <= single comiss :be :nbe)
+  (frob >= single comiss :ae :nae)
   (frob <= double comisd :be :nbe)
-  (frob > double comisd :a :na)
   (frob >= double comisd :ae :nae))
 
 
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/60c3920704106eef2bc45ee41ef39170e7ec38be
-- 
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/60c3920704106eef2bc45ee41ef39170e7ec38be
You're receiving this email because of your account on gitlab.common-lisp.net.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20230310/ca6550c2/attachment-0001.html>
    
    
More information about the cmucl-cvs
mailing list