--- /sys/src/libc/riscv/vlrt.c +++ /sys/src/libc/riscv/vlrt.c @@ -408,6 +408,34 @@ _mmv(Vlong *l, Vlong *r) l->lo = r->lo; } +void +_vasaddd(Vlong *ret, Vlong *lv, double rv) +{ + _d2v(lv, _v2d(*lv)+rv); + *ret = *lv; +} + +void +_vassubd(Vlong *ret, Vlong *lv, double rv) +{ + _d2v(lv, _v2d(*lv)-rv); + *ret = *lv; +} + +void +_vasmuld(Vlong *ret, Vlong *lv, double rv) +{ + _d2v(lv, _v2d(*lv)*rv); + *ret = *lv; +} + +void +_vasdivd(Vlong *ret, Vlong *lv, double rv) +{ + _d2v(lv, _v2d(*lv)/rv); + *ret = *lv; +} + void _vasop(Vlong *ret, void *lv, void fn(Vlong*, Vlong, Vlong), int type, Vlong rv) { --- /sys/src/libc/spim/vlrt.c +++ /sys/src/libc/spim/vlrt.c @@ -420,6 +420,34 @@ _mmv(Vlong *l, Vlong *r) l->lo = r->lo; } +void +_vasaddd(Vlong *ret, Vlong *lv, double rv) +{ + _d2v(lv, _v2d(*lv)+rv); + *ret = *lv; +} + +void +_vassubd(Vlong *ret, Vlong *lv, double rv) +{ + _d2v(lv, _v2d(*lv)-rv); + *ret = *lv; +} + +void +_vasmuld(Vlong *ret, Vlong *lv, double rv) +{ + _d2v(lv, _v2d(*lv)*rv); + *ret = *lv; +} + +void +_vasdivd(Vlong *ret, Vlong *lv, double rv) +{ + _d2v(lv, _v2d(*lv)/rv); + *ret = *lv; +} + void _vasop(Vlong *ret, void *lv, void fn(Vlong*, Vlong, Vlong), int type, Vlong rv) {