2008-10-20 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 20 Oct 2008 19:32:18 +0000 (19:32 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 20 Oct 2008 19:32:18 +0000 (19:32 -0000)
* Vector8us.cs: Added CompareEqual and MultiplyStoreHigh.

svn path=/trunk/mcs/; revision=116544

mcs/class/Mono.Simd/Mono.Simd/Changelog
mcs/class/Mono.Simd/Mono.Simd/Vector8us.cs

index 776747d5997565e894500e7edab610ff3a4aea7e..54d5a4c54ffe798edf233ad19406bdff88e4f9ce 100644 (file)
@@ -1,3 +1,7 @@
+2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * Vector8us.cs: Added CompareEqual and MultiplyStoreHigh.
+
 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
 
        * Vector4ui.cs: Remove Average as there is no sse instruction for that.
index 91ac293f9ff65b6ef95c9b4f3b164aa7c3bb8acd..fd577ca99119fe76ddbcd7fa089a84bad8c4bec4 100644 (file)
@@ -238,6 +238,26 @@ namespace Mono.Simd
                        return new Vector8us (*(ptr + ((idx >> 0) & 0x3)), *(ptr + ((idx >> 2) & 0x3)), *(ptr + ((idx >> 4) & 0x3)), *(ptr + ((idx >> 6) & 0x3)), va.v4, va.v5, va.v6, va.v7);\r
                }
 
+               public static unsafe Vector8us CompareEqual (Vector8us va, Vector8us vb) {
+                       Vector8us res = new Vector8us ();
+                       ushort *a = &va.v0;
+                       ushort *b = &vb.v0;
+                       ushort *c = &res.v0;
+                       for (int i = 0; i < 8; ++i)
+                               *c++ = (ushort) (*a++ == *b++ ? -1 : 0);
+                       return res;
+               }
+
+               public static unsafe Vector8us MultiplyStoreHigh (Vector8us va, Vector8us vb) {
+                       Vector8us res = new Vector8us ();
+                       ushort *a = &va.v0;
+                       ushort *b = &vb.v0;
+                       ushort *c = &res.v0;
+                       for (int i = 0; i < 8; ++i)
+                               *c++ = (ushort)((uint)*a++ * (uint)*b++ >> 16);
+                       return res;
+               }
+
                public static unsafe explicit operator Vector4f(Vector8us v)\r
                {\r
                        Vector4f* p = (Vector4f*)&v;\r