From cf553622b81461696723bc0aa8ef74a138642a3f Mon Sep 17 00:00:00 2001
From: Mark Friedman <edu/mit/csail/zurich/markf>
Date: Fri, 22 Apr 1988 16:39:45 +0000
Subject: [PATCH] Added support for the open coding of fixnum arithmetic and
 fixnum predicates.

---
 v7/src/compiler/rtlgen/opncod.scm | 62 ++++++++++++++++++++++++++++++-
 1 file changed, 61 insertions(+), 1 deletion(-)

diff --git a/v7/src/compiler/rtlgen/opncod.scm b/v7/src/compiler/rtlgen/opncod.scm
index 3a42b8a1b..b4a9cb5db 100644
--- a/v7/src/compiler/rtlgen/opncod.scm
+++ b/v7/src/compiler/rtlgen/opncod.scm
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/opncod.scm,v 4.4 1988/03/31 21:35:23 mhwu Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/opncod.scm,v 4.5 1988/04/22 16:39:45 markf Exp $
 
 Copyright (c) 1987 Massachusetts Institute of Technology
 
@@ -367,5 +367,65 @@ MIT in each case. |#
 	(lambda (index)
 	  (return-2 (open-code/memory-assignment (1+ index)) '(0 2)))))))
 
+(let ((define-fixnum-2-args
+	(lambda (fixnum-operator)
+	  (define-open-coder/value fixnum-operator
+	    (lambda (operands)
+	      (return-2
+	       (lambda (expressions finish)
+		 (finish (rtl:make-fixnum-2-args
+			  fixnum-operator
+			  (rtl:make-object->fixnum (car expressions))
+			  (rtl:make-object->fixnum (cadr expressions)))))
+	       '(0 1)))))))
+  (for-each
+   define-fixnum-2-args
+    '(PLUS-FIXNUM MINUS-FIXNUM MULTIPLY-FIXNUM
+      ;; DIVIDE-FIXNUM GCD-FIXNUM
+     )))
+
+(let ((define-fixnum-1-arg
+	(lambda (fixnum-operator)
+	  (define-open-coder/value fixnum-operator
+	    (lambda (operand)
+	      (return-2
+	       (lambda (expressions finish)
+		 (finish (rtl:make-fixnum-1-arg
+			  fixnum-operator
+			  (rtl:make-object->fixnum (car expressions)))))
+	       '(0)))))))
+  (for-each
+   define-fixnum-1-arg
+    '(ONE-PLUS-FIXNUM MINUS-ONE-PLUS-FIXNUM)))
+
+(let ((define-fixnum-pred-2-args
+	(lambda (fixnum-pred)
+	  (define-open-coder/predicate fixnum-pred
+	    (lambda (operands)
+	      (return-2
+	       (lambda (expressions finish)
+		 (finish (rtl:make-fixnum-pred-2-args
+			  fixnum-pred
+			  (rtl:make-object->fixnum (car expressions))
+			  (rtl:make-object->fixnum (cadr expressions)))))
+	       '(0 1)))))))
+  (for-each
+   define-fixnum-pred-2-args
+   '(EQUAL-FIXNUM? LESS-THAN-FIXNUM? GREATER-THAN-FIXNUM?)))
+
+(let ((define-fixnum-pred-1-arg
+	(lambda (fixnum-pred)
+	  (define-open-coder/predicate fixnum-pred
+	    (lambda (operand)
+	      (return-2
+	       (lambda (expressions finish)
+		 (finish (rtl:make-fixnum-pred-1-arg
+			  fixnum-pred
+			  (rtl:make-object->fixnum (car expressions)))))
+	       '(0)))))))
+  (for-each
+   define-fixnum-pred-1-arg
+   '(ZERO-FIXNUM? POSITIVE-FIXNUM? NEGATIVE-FIXNUM?)))
+
 ;;; end COMBINATION/INLINE
 )
\ No newline at end of file
-- 
2.25.1