Factor out (srfi 160 mini) for f8/f16 base.

Closes #961.

Import this instead of the full vector libs for (srfi 231).

Also fix install of full vector libs for (srfi 160).
This commit is contained in:
Alex Shinn 2024-05-25 22:15:10 +09:00
parent afda4ab979
commit 6c49071833
4 changed files with 7 additions and 58 deletions

View file

@ -367,6 +367,7 @@ install-base: all
$(INSTALL) -m0644 lib/srfi/159/*.scm $(DESTDIR)$(MODDIR)/srfi/159/
$(INSTALL) -m0644 lib/srfi/159/*.sld $(DESTDIR)$(MODDIR)/srfi/159/
$(INSTALL) -m0644 lib/srfi/160/*.sld $(DESTDIR)$(MODDIR)/srfi/160/
$(INSTALL) -m0644 lib/srfi/160/*.scm $(DESTDIR)$(MODDIR)/srfi/160/
$(INSTALL) -m0644 lib/srfi/166/*.sld $(DESTDIR)$(MODDIR)/srfi/166/
$(INSTALL) -m0644 lib/srfi/166/*.scm $(DESTDIR)$(MODDIR)/srfi/166/
$(INSTALL) -m0644 lib/srfi/146/*.sld $(DESTDIR)$(MODDIR)/srfi/146/

View file

@ -60,31 +60,8 @@
vector-append vector-copy vector-copy!
vector-map vector-for-each)
(scheme write)
(srfi 160 base)
(srfi 160 prims)
(rename (only (chibi) list->uvector make-uvector)
(list->uvector list->uniform-vector)
(make-uvector make-uniform-vector)))
(srfi 160 mini))
(begin
(define (f16? x) (and (real? x) (inexact? x)))
(define f16vector-length uvector-length)
(define (make-f16vector len . o)
(let ((res (make-uniform-vector SEXP_F16 len)))
(if (and (pair? o) (not (zero? (car o))))
(do ((i 0 (+ i 1)))
((>= i len))
(f16vector-set! res i (car o))))
res))
(define (f16vector->list uv . o)
(let ((start (if (pair? o) (car o) 0))
(end (if (and (pair? o) (pair? (cdr o)))
(cadr o)
(f16vector-length uv))))
(do ((i (- end 1) (- i 1))
(res '() (cons (f16vector-ref uv i) res)))
((< i start) res))))
(define (list->f16vector ls) (list->uniform-vector SEXP_F16 ls))
(define (f16vector . args) (list->f16vector args))
(define uvector? f16vector?)
(define make-uvector make-f16vector)
(define vector f16vector)

View file

@ -60,31 +60,8 @@
vector-append vector-copy vector-copy!
vector-map vector-for-each)
(scheme write)
(srfi 160 base)
(srfi 160 prims)
(rename (only (chibi) list->uvector make-uvector)
(list->uvector list->uniform-vector)
(make-uvector make-uniform-vector)))
(srfi 160 mini))
(begin
(define (f8? x) (and (real? x) (inexact? x)))
(define f8vector-length uvector-length)
(define (make-f8vector len . o)
(let ((res (make-uniform-vector SEXP_F8 len)))
(if (and (pair? o) (not (zero? (car o))))
(do ((i 0 (+ i 1)))
((>= i len))
(f8vector-set! res i (car o))))
res))
(define (f8vector->list uv . o)
(let ((start (if (pair? o) (car o) 0))
(end (if (and (pair? o) (pair? (cdr o)))
(cadr o)
(f8vector-length uv))))
(do ((i (- end 1) (- i 1))
(res '() (cons (f8vector-ref uv i) res)))
((< i start) res))))
(define (list->f8vector ls) (list->uniform-vector SEXP_F8 ls))
(define (f8vector . args) (list->f8vector args))
(define uvector? f8vector?)
(define make-uvector make-f8vector)
(define vector f8vector)

View file

@ -56,21 +56,15 @@
)
(include "231/transforms.scm")
(cond-expand
((and chibi (library (srfi 160 f8)))
(import (srfi 160 f8))
((and chibi (library (srfi 160 mini)))
(import (srfi 160 mini))
(begin
(define-storage-class f8-storage-class
f8vector-ref f8vector-set! f8? make-f8vector f8vector-length 0)))
(else
(begin
(define f8-storage-class f32-storage-class))))
(cond-expand
((and chibi (library (srfi 160 f16)))
(import (srfi 160 f16))
(begin
f8vector-ref f8vector-set! f8? make-f8vector f8vector-length 0)
(define-storage-class f16-storage-class
f16vector-ref f16vector-set! f16? make-f16vector f16vector-length 0)))
(else
(begin
(define f8-storage-class f32-storage-class)
(define f16-storage-class f32-storage-class))))
)