Prechádzať zdrojové kódy

sys/src/libc: add mixed-mode vlong/double (thanks Charles Forsyth)

David du Colombier 3 rokov pred
rodič
commit
7e017efc48

+ 28 - 0
sys/src/libc/386/vlrt.c

@@ -444,6 +444,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)
 {

+ 28 - 0
sys/src/libc/arm/vlrt.c

@@ -409,6 +409,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)
 {

+ 28 - 0
sys/src/libc/mips/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)
 {

+ 28 - 0
sys/src/libc/power/vlrt.c

@@ -177,6 +177,34 @@ _modv(Vlong *r, Vlong n, Vlong d)
 		vneg(r);
 }
 
+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)
 {

+ 28 - 0
sys/src/libc/sparc/vlrt.c

@@ -421,6 +421,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)
 {