Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
cmucl
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Carl Shapiro
cmucl
Commits
9673663d
Commit
9673663d
authored
34 years ago
by
wlott
Browse files
Options
Downloads
Patches
Plain Diff
Added buttloads of :arg-types and :result-types.
parent
c90acab4
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
compiler/mips/arith.lisp
+26
-4
26 additions, 4 deletions
compiler/mips/arith.lisp
with
26 additions
and
4 deletions
compiler/mips/arith.lisp
+
26
−
4
View file @
9673663d
...
...
@@ -7,7 +7,7 @@
;;; Scott Fahlman (FAHLMAN@CMUC).
;;; **********************************************************************
;;;
;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/arith.lisp,v 1.2
5
1990/06/1
6 15:33:1
8 wlott Exp $
;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/arith.lisp,v 1.2
6
1990/06/1
7 22:24:3
8 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
)))
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment