[movitz-cvs] CVS update: movitz/losp/muerte/integers.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Wed Aug 24 07:31:42 UTC 2005
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv5020
Modified Files:
integers.lisp
Log Message:
Rearranged some code to have movitz build cleanly.
Date: Wed Aug 24 09:31:40 2005
Author: ffjeld
Index: movitz/losp/muerte/integers.lisp
diff -u movitz/losp/muerte/integers.lisp:1.107 movitz/losp/muerte/integers.lisp:1.108
--- movitz/losp/muerte/integers.lisp:1.107 Fri Aug 12 23:37:42 2005
+++ movitz/losp/muerte/integers.lisp Wed Aug 24 09:31:40 2005
@@ -9,7 +9,7 @@
;;;; Created at: Wed Nov 8 18:44:57 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: integers.lisp,v 1.107 2005/08/12 21:37:42 ffjeld Exp $
+;;;; $Id: integers.lisp,v 1.108 2005/08/24 07:31:40 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -256,71 +256,6 @@
;;;
-(defmacro define-number-relational (name 2op-name condition &key (defun-p t) 3op-name)
- `(progn
- ,(when condition
- `(define-compiler-macro ,2op-name (n1 n2 &environment env)
- (cond
- ((and (movitz:movitz-constantp n1 env)
- (movitz:movitz-constantp n2 env))
- (list ',2op-name (movitz:movitz-eval n1 env) (movitz:movitz-eval n2 env)))
- ((movitz:movitz-constantp n1 env)
- (let ((n1 (movitz::movitz-eval n1 env)))
- (check-type n1 number)
- (if (typep n1 '(signed-byte 30))
- `(with-inline-assembly (:returns ,,condition :side-effects nil)
- (:compile-two-forms (:eax :ebx) ,n1 ,n2)
- (:call-global-pf fast-compare-fixnum-real))
- `(with-inline-assembly (:returns ,,condition :side-effects nil)
- (:compile-two-forms (:eax :ebx) ,n1 ,n2)
- (:call-global-pf fast-compare-two-reals)))))
- ((movitz:movitz-constantp n2 env)
- (let ((n2 (movitz:movitz-eval n2 env)))
- (check-type n2 number)
- (if (typep n2 '(signed-byte 30))
- `(with-inline-assembly (:returns ,,condition :side-effects nil)
- (:compile-two-forms (:eax :ebx) ,n1 ,n2)
- (:call-global-pf fast-compare-real-fixnum))
- `(with-inline-assembly (:returns ,,condition :side-effects nil)
- (:compile-two-forms (:eax :ebx) ,n1 ,n2)
- (:call-global-pf fast-compare-two-reals)))))
- (t `(with-inline-assembly (:returns ,,condition :side-effects nil)
- (:compile-two-forms (:eax :ebx) ,n1 ,n2)
- (:call-global-pf fast-compare-two-reals))))))
-
- (defun ,2op-name (n1 n2)
- (,2op-name n1 n2))
-
- (define-compiler-macro ,name (&whole form number &rest more-numbers)
- (case (length more-numbers)
- (0 `(progn ,number t))
- (1 `(,',2op-name ,number ,(first more-numbers)))
- ,@(when 3op-name
- `((2 `(,',3op-name ,number ,(first more-numbers) ,(second more-numbers)))))
- (t #+ignore (when (= 2 (length more-numbers))
- (warn "3op: ~S" form))
- `(and (,',2op-name ,number ,(first more-numbers))
- (,',name , at more-numbers)))))
-
- ,(when defun-p
- `(defun ,name (number &rest more-numbers)
- (declare (dynamic-extent more-numbers))
- (cond
- ((null more-numbers)
- (check-type number fixnum)
- t)
- ((not (cdr more-numbers))
- (,2op-name number (first more-numbers)))
- (t (and (,2op-name number (first more-numbers))
- (do ((p more-numbers (cdr p)))
- ((not (cdr p)) t)
- (unless (,2op-name (car p) (cadr p))
- (return nil))))))))))
-
-(define-number-relational >= >=%2op :boolean-greater-equal)
-(define-number-relational > >%2op :boolean-greater)
-(define-number-relational < <%2op :boolean-less)
-(define-number-relational <= <=%2op :boolean-less-equal :3op-name <=%3op)
;;; Unsigned
@@ -402,45 +337,6 @@
(defun oddp (x)
(compiler-macro-call oddp x))
-;;; Types
-
-(define-typep integer (x &optional (min '*) (max '*))
- (and (typep x 'integer)
- (or (eq min '*) (<= min x))
- (or (eq max '*) (<= x max))))
-
-(deftype signed-byte (&optional (size '*))
- (cond
- ((eq size '*)
- 'integer)
- ((typep size '(integer 1 *))
- (list 'integer
- (- (ash 1 (1- size)))
- (1- (ash 1 (1- size)))))
- (t (error "Illegal size for signed-byte."))))
-
-(deftype unsigned-byte (&optional (size '*))
- (cond
- ((eq size '*)
- '(integer 0))
- ((typep size '(integer 1 *))
- (list 'integer 0 (1- (ash 1 size))))
- (t (error "Illegal size for unsigned-byte."))))
-
-(define-typep rational (x &optional (lower-limit '*) (upper-limit '*))
- (and (typep x 'rational)
- (or (eq lower-limit '*)
- (<= lower-limit x))
- (or (eq upper-limit '*)
- (<= x upper-limit))))
-
-(deftype real (&optional (lower-limit '*) (upper-limit '*))
- `(or (integer ,lower-limit ,upper-limit)
- (rational ,lower-limit ,upper-limit)))
-
-
-(define-simple-typep (bit bitp) (x)
- (or (eq x 0) (eq x 1)))
;;;
More information about the Movitz-cvs
mailing list