diff --git a/module/language/cps/types.scm b/module/language/cps/types.scm index a185eaa82..144384165 100644 --- a/module/language/cps/types.scm +++ b/module/language/cps/types.scm @@ -1324,6 +1324,12 @@ minimum, and maximum." (&min/0 count) (&max/u64 count)))) (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) (restrict! val &exact-integer -inf.0 +inf.0) (let-values (((min max) (compute-ash-range (&min val) @@ -1331,6 +1337,12 @@ minimum, and maximum." (- (&min/0 count)) (- (&max/u64 count))))) (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-type-inferrer (ursh a b result)