[movitz-cvs] CVS update: movitz/losp/muerte/bignums.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Wed Aug 31 22:33:04 UTC 2005
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv26280
Modified Files:
bignums.lisp
Log Message:
Added bignum-notf.
Date: Thu Sep 1 00:33:03 2005
Author: ffjeld
Index: movitz/losp/muerte/bignums.lisp
diff -u movitz/losp/muerte/bignums.lisp:1.16 movitz/losp/muerte/bignums.lisp:1.17
--- movitz/losp/muerte/bignums.lisp:1.16 Sat Aug 20 22:25:41 2005
+++ movitz/losp/muerte/bignums.lisp Thu Sep 1 00:33:03 2005
@@ -10,7 +10,7 @@
;;;; Author: Frode Vatvedt Fjeld <frodef at acm.org>
;;;; Created at: Sat Jul 17 19:42:57 2004
;;;;
-;;;; $Id: bignums.lisp,v 1.16 2005/08/20 20:25:41 ffjeld Exp $
+;;;; $Id: bignums.lisp,v 1.17 2005/08/31 22:33:03 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -548,3 +548,19 @@
(defun %bignum-plus-fixnum-size (x fixnum-delta)
(compiler-macro-call %bignum-plus-fixnum-size x fixnum-delta))
+
+(defun bignum-notf (x)
+ (check-type x bignum)
+ (macrolet
+ ((do-it ()
+ `(with-inline-assembly (:returns :eax)
+ (:load-lexical (:lexical-binding x) :eax)
+ (:xorl :edx :edx)
+ (:xorl :ecx :ecx)
+ (:movw (:eax (:offset movitz-bignum length)) :cx)
+ loop
+ (:notl (:eax :edx (:offset movitz-bignum bigit0)))
+ (:addl 4 :edx)
+ (:cmpl :edx :ecx)
+ (:ja 'loop))))
+ (do-it)))
More information about the Movitz-cvs
mailing list