1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-25 14:10:22 +02:00

Add missing lsh/immediate, rsh/immediate type inferrers

* module/language/cps/types.scm (lsh/immediate, rsh/immediate): Add
  missing type inferrers.
This commit is contained in:
Andy Wingo 2017-11-11 21:44:45 +01:00
parent e8226be0c0
commit 107f70a633

View file

@ -1324,6 +1324,12 @@ minimum, and maximum."
(&min/0 count) (&min/0 count)
(&max/u64 count)))) (&max/u64 count))))
(define-exact-integer! result min max))) (define-exact-integer! result min max)))
(define-type-inferrer/param (lsh/immediate count val result)
(restrict! val &exact-integer -inf.0 +inf.0)
(let-values (((min max) (compute-ash-range (&min val)
(&max val)
count count)))
(define-exact-integer! result min max)))
(define-type-inferrer (rsh val count result) (define-type-inferrer (rsh val count result)
(restrict! val &exact-integer -inf.0 +inf.0) (restrict! val &exact-integer -inf.0 +inf.0)
(let-values (((min max) (compute-ash-range (&min val) (let-values (((min max) (compute-ash-range (&min val)
@ -1331,6 +1337,12 @@ minimum, and maximum."
(- (&min/0 count)) (- (&min/0 count))
(- (&max/u64 count))))) (- (&max/u64 count)))))
(define-exact-integer! result min max))) (define-exact-integer! result min max)))
(define-type-inferrer/param (rsh/immediate count val result)
(restrict! val &exact-integer -inf.0 +inf.0)
(let-values (((min max) (compute-ash-range (&min val)
(&max val)
(- count) (- count))))
(define-exact-integer! result min max)))
(define-simple-type-checker (ursh &u64 &u64)) (define-simple-type-checker (ursh &u64 &u64))
(define-type-inferrer (ursh a b result) (define-type-inferrer (ursh a b result)