Skip to content
Snippets Groups Projects
Commit 9673663d authored by wlott's avatar wlott
Browse files

Added buttloads of :arg-types and :result-types.

parent c90acab4
No related branches found
No related tags found
No related merge requests found
......@@ -7,7 +7,7 @@
;;; Scott Fahlman (FAHLMAN@CMUC).
;;; **********************************************************************
;;;
;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/arith.lisp,v 1.25 1990/06/16 15:33:18 wlott Exp $
;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/arith.lisp,v 1.26 1990/06/17 22:24:38 wlott Exp $
;;;
;;; This file contains the VM definition arithmetic VOPs for the MIPS.
;;;
......@@ -585,20 +585,24 @@
(define-vop (bignum-ref word-index-ref)
(:variant vm:bignum-digits-offset vm:other-pointer-type)
(:translate bignum::%bignum-ref)
(:results (value :scs (unsigned-reg))))
(:results (value :scs (unsigned-reg)))
(:result-types unsigned-num))
(define-vop (bignum-set word-index-set)
(:variant vm:bignum-digits-offset vm:other-pointer-type)
(:translate bignum::%bignum-set)
(:args (object :scs (descriptor-reg))
(index :scs (any-reg immediate unsigned-immediate))
(index :scs (any-reg immediate zero unsigned-immediate))
(value :scs (unsigned-reg)))
(:results (result :scs (unsigned-reg))))
(:arg-types t positive-fixnum unsigned-num)
(:results (result :scs (unsigned-reg)))
(:result-types unsigned-num))
(define-vop (digit-0-or-plus)
(:translate bignum::%digit-0-or-plusp)
(:policy :fast-safe)
(:args (digit :scs (unsigned-reg)))
(:arg-types unsigned-num)
(:results (result :scs (descriptor-reg)))
(:generator 3
(let ((done (gen-label)))
......@@ -613,9 +617,11 @@
(:args (a :scs (unsigned-reg))
(b :scs (unsigned-reg))
(c :scs (any-reg)))
(:arg-types unsigned-num unsigned-num positive-fixnum)
(:temporary (:scs (unsigned-reg) :to (:result 0) :target result) res)
(:results (result :scs (unsigned-reg))
(carry :scs (unsigned-reg) :from :eval))
(:result-types unsigned-num positive-fixnum)
(:temporary (:scs (non-descriptor-reg)) temp)
(:generator 5
(let ((carry-in (gen-label))
......@@ -641,9 +647,11 @@
(:args (a :scs (unsigned-reg))
(b :scs (unsigned-reg))
(c :scs (any-reg)))
(:arg-types unsigned-num unsigned-num positive-fixnum)
(:temporary (:scs (unsigned-reg) :to (:result 0) :target result) res)
(:results (result :scs (unsigned-reg))
(borrow :scs (unsigned-reg) :from :eval))
(:result-types unsigned-num positive-fixnum)
(:temporary (temp :scs (non-descriptor-reg)))
(:generator 4
(let ((no-borrow-in (gen-label))
......@@ -668,8 +676,10 @@
(:policy :fast-safe)
(:args (x :scs (unsigned-reg))
(y :scs (unsigned-reg)))
(:arg-types unsigned-num unsigned-num)
(:results (hi :scs (unsigned-reg))
(lo :scs (unsigned-reg)))
(:result-types unsigned-num unsigned-num)
(:generator 3
(inst multu x y)
(inst mflo lo)
......@@ -679,7 +689,9 @@
(:translate bignum::%lognot)
(:policy :fast-safe)
(:args (x :scs (unsigned-reg)))
(:arg-types unsigned-num)
(:results (r :scs (unsigned-reg)))
(:result-types unsigned-num)
(:generator 1
(inst nor r x zero-tn)))
......@@ -687,7 +699,9 @@
(:translate bignum::%fixnum-to-digit)
(:policy :fast-safe)
(:args (fixnum :scs (any-reg)))
(:arg-types tagged-num)
(:results (digit :scs (unsigned-reg)))
(:result-types unsigned-num)
(:generator 1
(inst sra digit fixnum 2)))
......@@ -697,9 +711,11 @@
(:args (a :scs (unsigned-reg) :target rem)
(b :scs (unsigned-reg))
(c :scs (unsigned-reg)))
(:arg-types unsigned-num unsigned-num unsigned-num)
(:temporary (:scs (unsigned-reg)) temp result)
(:results (quo :scs (unsigned-reg))
(rem :scs (unsigned-reg)))
(:result-types unsigned-num unsigned-num)
(:generator 230
(flet ((maybe-subtract (&optional (guess temp))
(inst subu temp guess 1)
......@@ -723,7 +739,9 @@
(:translate bignum::%fixnum-digit-with-correct-sign)
(:policy :fast-safe)
(:args (digit :scs (unsigned-reg) :target res))
(:arg-types unsigned-num)
(:results (res :scs (any-reg signed-reg)))
(:result-types signed-num)
(:generator 1
(sc-case res
(any-reg
......@@ -736,7 +754,9 @@
(:policy :fast-safe)
(:args (digit :scs (unsigned-reg))
(count :scs (unsigned-reg)))
(:arg-types unsigned-num positive-fixnum)
(:results (result :scs (unsigned-reg)))
(:result-types unsigned-num)
(:generator 1
(inst sra result digit count)))
......@@ -745,7 +765,9 @@
(:policy :fast-safe)
(:args (digit :scs (unsigned-reg))
(count :scs (unsigned-reg)))
(:arg-types unsigned-num positive-fixnum)
(:results (result :scs (unsigned-reg)))
(:result-types unsigned-num)
(:generator 1
(inst sll result digit count)))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment