SIMD tests
authorSergey Andreenko <AC-93@MAIL.RU>
Tue, 18 Aug 2015 00:48:22 +0000 (17:48 -0700)
committerSergey Andreenko <AC-93@MAIL.RU>
Thu, 27 Aug 2015 16:19:34 +0000 (09:19 -0700)
Commit includes SIMD tests of two types:
1) Intrinsic tests, that call functions from RyuJIT SIMD intrinsic list.
2) Bytecode tests, which generate different bytecodes in IL with SIMD
struct.

Commit migrated from https://github.com/dotnet/coreclr/commit/5621bf61bc3012c45845f9dd081500da0f07c4d8

33 files changed:
src/coreclr/tests/src/JIT/SIMD/AbsGeneric.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/AbsGeneric2.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/AbsSqrt.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Add.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/BitwiseOperations.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/BoxUnbox.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/CircleInConvex.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Constr1.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/CreateGeneric.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/CreateGeneric2.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Ctors.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/CurrTest.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/DivSignedUnsignedTest.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Dup.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/GenerCtrFromArray.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Haar-likeFfeaturesGeneric.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/InitFromArray.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Ldfld.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Ldind.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/MinMax.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Mul.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Ret100.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/SIMD.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Simple.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/SqrtGeneric.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Sums.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Vector3.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/Vector4.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/app.config [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/cs_template.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/project.json [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/project.lock.json [new file with mode: 0644]
src/coreclr/tests/src/JIT/SIMD/stelem.cs [new file with mode: 0644]

diff --git a/src/coreclr/tests/src/JIT/SIMD/AbsGeneric.cs b/src/coreclr/tests/src/JIT/SIMD/AbsGeneric.cs
new file mode 100644 (file)
index 0000000..dd89a7d
--- /dev/null
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+
+        static int Main(string[] args)
+        {
+                       short[] arr = new short[] {-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5};
+            var a = new System.Numerics.Vector<short>(arr);
+            a = System.Numerics.Vector.Abs(a);
+            if (a[0] != 5)
+            {
+                return 0;
+            }
+            var b = System.Numerics.Vector<int>.One;
+            b = System.Numerics.Vector.Abs(b);
+            if (b[3] != 1)
+            {
+                return 0;
+            }
+            var c = new System.Numerics.Vector<long>(-11);
+            c = System.Numerics.Vector.Abs(c);
+            if (c[1] != 11)
+            {
+                return 0;
+            }
+
+            var d = new System.Numerics.Vector<double>(-100.0);
+            d = System.Numerics.Vector.Abs(d);
+            if (d[0] != 100)
+            {
+                return 0;
+            }
+            var e = new System.Numerics.Vector<float>(-22);
+            e = System.Numerics.Vector.Abs(e);
+            if (e[3] != 22)
+            {
+                return 0;
+            }
+            var f = new System.Numerics.Vector<ushort>(21);
+            f = System.Numerics.Vector.Abs(f);
+            if (f[7] != 21)
+            {
+                return 0;
+            }
+            var g = new System.Numerics.Vector<ulong>(21);
+            g = System.Numerics.Vector.Abs(g);
+            if (g[1] != 21)
+            {
+                return 0;
+            }
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/AbsGeneric2.cs b/src/coreclr/tests/src/JIT/SIMD/AbsGeneric2.cs
new file mode 100644 (file)
index 0000000..1eeb0b2
--- /dev/null
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+
+        static int Main(string[] args)
+        {
+            var a = new System.Numerics.Vector<short>(-5);
+            a = System.Numerics.Vector.Abs(a);
+            if (a[0] != 5)
+            {
+                return 0;
+            }
+            var b = System.Numerics.Vector<int>.One;
+            b = System.Numerics.Vector.Abs(b);
+            if (b[3] != 1)
+            {
+                return 0;
+            }
+            var c = new System.Numerics.Vector<long>(-11);
+            c = System.Numerics.Vector.Abs(c);
+            if (c[1] != 11)
+            {
+                return 0;
+            }
+
+            var d = new System.Numerics.Vector<double>(-100.0);
+            d = System.Numerics.Vector.Abs(d);
+            if (d[0] != 100)
+            {
+                return 0;
+            }
+            var e = new System.Numerics.Vector<float>(-22);
+            e = System.Numerics.Vector.Abs(e);
+            if (e[3] != 22)
+            {
+                return 0;
+            }
+            var f = new System.Numerics.Vector<ushort>(21);
+            f = System.Numerics.Vector.Abs(f);
+            if (f[7] != 21)
+            {
+                return 0;
+            }
+            var g = new System.Numerics.Vector<ulong>(21);
+            g = System.Numerics.Vector.Abs(g);
+            if (g[1] != 21)
+            {
+                return 0;
+            }
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/AbsSqrt.cs b/src/coreclr/tests/src/JIT/SIMD/AbsSqrt.cs
new file mode 100644 (file)
index 0000000..fd0c3aa
--- /dev/null
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+using Point = System.Numerics.Vector4;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+
+        static int Main(string[] args)
+        {
+            Point a = new Point(1, 2, 3, 4);
+            Point b = new Point(2, 2, 1, 1);
+            float c = 33;
+            Point d = (b + a) * c;
+            Point q = d + a;
+            Point s = Point.SquareRoot(q);
+            s *= -1;
+            s = Point.Abs(s);
+            return (int)(s).X * 10;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Add.cs b/src/coreclr/tests/src/JIT/SIMD/Add.cs
new file mode 100644 (file)
index 0000000..2666191
--- /dev/null
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector2;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+      
+
+        static int Main(string[] args)
+        {
+                       Point a = new Point(3, 60);
+                       Point b = new Point(10, 40);
+            return (int)(a + b).Y;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/BitwiseOperations.cs b/src/coreclr/tests/src/JIT/SIMD/BitwiseOperations.cs
new file mode 100644 (file)
index 0000000..be62d72
--- /dev/null
@@ -0,0 +1,108 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector2;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+        static float NextFloat(Random random)
+        {
+            double mantissa = (random.NextDouble() * 2.0) - 1.0;
+            double exponent = Math.Pow(2.0, random.Next(-32, 32));
+            return (float)(mantissa * exponent);
+        }
+
+
+        static int TestDouble()
+        {
+            // care with NAN, it is very ofter situation.
+            Random random = new Random(11);
+            double[] arr1 = new double[] { NextFloat(random), NextFloat(random), NextFloat(random), NextFloat(random) };
+            double[] arr2 = new double[] { NextFloat(random), NextFloat(random), NextFloat(random), NextFloat(random) };
+            var a = new System.Numerics.Vector<double>(arr1);
+            var b = new System.Numerics.Vector<double>(arr2);
+            var xorR = a ^ b;
+            var andR = a & b;
+            var orR = a | b;
+            int Count = System.Numerics.Vector<double>.Count;
+            for (int i = 0; i < Count; ++i)
+            {
+                Int64 f = BitConverter.DoubleToInt64Bits(a[i]);
+                Int64 s = BitConverter.DoubleToInt64Bits(b[i]);
+                Int64 r = f ^ s;
+                double d = BitConverter.Int64BitsToDouble(r);
+                if (xorR[i] != d)
+                {
+                    return 0;
+                }
+                r = f & s;
+                d = BitConverter.Int64BitsToDouble(r);
+                if (andR[i] != d)
+                {
+                    return 0;
+                }
+                r = f | s;
+                d = BitConverter.Int64BitsToDouble(r);
+                if (orR[i] != d)
+                {
+                    return 0;
+                }
+            }
+            return 100;
+        }
+
+        static byte NextByte(Random random)
+        {
+            return (byte)random.Next(0, 255);
+        }
+
+        static int TestBool()
+        {
+            Random random = new Random(13);
+            byte[] arr1 = new byte[] { NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random) };
+            byte[] arr2 = new byte[] { NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random), NextByte(random) };
+            var a = new System.Numerics.Vector<byte>(arr1);
+            var b = new System.Numerics.Vector<byte>(arr2);
+
+            var xorR = a ^ b;
+            var andR = a & b;
+            var orR = a | b;
+            int Count = System.Numerics.Vector<byte>.Count;
+            for (int i = 0; i < Count; ++i)
+            {
+                int d = a[i] ^ b[i];
+                if (xorR[i] != d)
+                {
+                    return 0;
+                }
+                d = a[i] & b[i];
+                if (andR[i] != d)
+                {
+                    return 0;
+                }
+                d = a[i] | b[i];
+                if (orR[i] != d && d == d)
+                {
+                    return 0;
+                }
+            }
+            return 100;
+        }
+
+        static int Main(string[] args)
+        {
+            if (TestDouble() != 100)
+            {
+                return 0;
+            }
+            if (TestBool() != 100)
+            {
+                return 0;
+            }
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/BoxUnbox.cs b/src/coreclr/tests/src/JIT/SIMD/BoxUnbox.cs
new file mode 100644 (file)
index 0000000..65379e7
--- /dev/null
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+
+        static int Main(string[] args)
+        {
+            var a = new System.Numerics.Vector<int>(1);
+            object b = a;
+            if (b is System.Numerics.Vector<int>)
+            {
+                var c = (System.Numerics.Vector<int>)b;
+                if (a != c)
+                {
+                    return 0;
+                }
+            }
+            else
+            {
+                return 0;
+            }
+
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/CircleInConvex.cs b/src/coreclr/tests/src/JIT/SIMD/CircleInConvex.cs
new file mode 100644 (file)
index 0000000..cda51f9
--- /dev/null
@@ -0,0 +1,286 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Numerics;
+
+using Point = System.Numerics.Vector2;
+
+
+namespace ClassLibrary
+{
+
+    public class test
+    {
+        const float EPS = 1E-9F;
+        const int steps = 100;
+        const float INF = 1000000;
+        //public struct Point
+        //{
+        //    public double X, Y;
+        //    public static Point operator -(Point a, Point b)
+        //    {
+        //        Point r;
+        //        r.X = a.X - b.X;
+        //        r.Y = a.Y - b.Y;
+        //        return r;
+        //    }
+
+
+
+        //}
+
+        public static float vectMul(Point a, Point b)
+        {
+            return a.X * b.Y - a.Y * b.X;
+        }
+
+        public struct Line
+        {
+            public float a, b, c;
+        };
+
+        static public float abs(float a)
+        {
+            return a > 0 ? a : -a;
+        }
+
+        static public float dist(float x, float y, Line l)
+        {
+            float r = abs(x * l.a + y * l.b + l.c);
+            return r;
+        }
+
+        static public float min(float a, float b)
+        {
+            return a < b ? a : b;
+        }
+
+        static public float max(float a, float b)
+        {
+            return a > b ? a : b;
+        }
+
+        static public void swap(ref float a, ref float b)
+        {
+            float c = a;
+            a = b;
+            b = c;
+        }
+
+        static public float radius(float x, float y, List<Line> l)
+        {
+
+
+            int n = (int)l.Count;
+            float res = INF;
+            for (int i = 0; i < n; ++i)
+            {
+                float d = dist(x, y, l[i]);
+
+                res = min(res, d);
+            }
+
+            return res;
+        }
+
+        static public float y_radius(float x, List<Point> a, List<Line> l, out float yOut)
+        {
+
+
+            int n = (int)a.Count;
+            float ly = INF, ry = -INF;
+            for (int i = 0; i < n; ++i)
+            {
+                float x1 = a[i].X, x2 = a[(i + 1) % n].X, y1 = a[i].Y, y2 = a[(i + 1) % n].Y;
+
+                if (x1 == x2) continue;
+                if (x1 > x2)
+                {
+                    swap(ref x1, ref x2);
+                    swap(ref y1, ref y2);
+                }
+
+                if (x1 <= x + EPS && x - EPS <= x2)
+                {
+                    float y = y1 + (x - x1) * (y2 - y1) / (x2 - x1);
+
+                    ly = min(ly, y);
+                    ry = max(ry, y);
+                }
+            }
+            for (int sy = 0; sy < steps; ++sy)
+            {
+                float diff = (ry - ly) / 3;
+                float y1 = ly + diff, y2 = ry - diff;
+                float f1 = radius(x, y1, l), f2 = radius(x, y2, l);
+                if (f1 < f2)
+                    ly = y1;
+                else
+                    ry = y2;
+            }
+            yOut = ly;
+            return radius(x, ly, l);
+        }
+
+
+
+
+        static public Boolean Check(List<Point> points)
+        {
+            float zn = vectMul((points[2] - points[0]), (points[1] - points[0]));
+            for (int i = 2; i < points.Count; ++i)
+            {
+                float z = vectMul((points[i] - points[i - 2]), (points[i - 1] - points[i - 2]));
+
+                if (z * zn < 0)
+                {
+
+                    return false;
+                }
+                if (zn == 0) // If we have some points on 1 line it is not error.
+                {
+                    zn = z;
+                }
+            }
+            return true;
+        }
+
+        static public Boolean Solve(List<Point> points, out Point O, out float r)
+        {
+            O.X = 0;
+            O.Y = 0;
+            r = 0;
+
+            if (points.Count < 3)
+                return false;
+            points.Add(points[0]);
+            if (Check(points) == false)
+            {
+                return false;
+            }
+            int n = points.Count;
+            List<Line> l = new List<Line>(n);
+            for (int i = 0; i < n; ++i)
+            {
+                Line currL = new Line();
+                currL.a = points[i].Y - points[(i + 1) % n].Y;
+                currL.b = points[(i + 1) % n].X - points[i].X;
+
+                float sq = (float)System.Math.Sqrt(currL.a * currL.a + currL.b * currL.b);
+                if (sq < EPS)
+                    continue;
+                currL.a /= sq;
+                currL.b /= sq;
+
+                currL.c = -(currL.a * points[i].X + currL.b * points[i].Y);
+                l.Add(currL);
+            }
+
+            float lx = INF, rx = -INF;
+            for (int i = 0; i < n; ++i)
+            {
+                lx = min(lx, points[i].X);
+                rx = max(rx, points[i].X);
+            }
+
+            for (int sx = 0; sx < steps; ++sx)
+            {
+                float diff = (rx - lx) / 3;
+                float x1 = lx + diff, x2 = rx - diff;
+                float xOut;
+                float f1 = y_radius(x1, points, l, out xOut), f2 = y_radius(x2, points, l, out xOut);
+                if (f1 < f2)
+                    lx = x1;
+                else
+                    rx = x2;
+            }
+
+            float y;
+            float ans = y_radius(lx, points, l, out y);
+            O.X = lx;
+            O.Y = y;
+            r = ans;
+
+            return true;
+        }
+
+
+        static int cmp(Point a, Point b)
+        {
+            if (a.X < b.X || a.X == b.X && a.Y < b.Y)
+                return 1;
+            else
+                return 0;
+        }
+
+        static bool cw(Point a, Point b, Point c)
+        {
+            return a.X * (b.Y - c.Y) + b.X * (c.Y - a.Y) + c.X * (a.Y - b.Y) < 0;
+        }
+
+        static bool ccw(Point a, Point b, Point c)
+        {
+            return a.X * (b.Y - c.Y) + b.X * (c.Y - a.Y) + c.X * (a.Y - b.Y) > 0;
+        }
+
+        static void convex_hull(List<Point> a)
+        {
+            if (a.Count == 1) return;
+            a.Sort(cmp);
+            Point p1 = a[0], p2 = a.Last();
+            List<Point> up = new List<Point>(), down = new List<Point>();
+            up.Add(p1);
+            down.Add(p1);
+            for (int i = 1; i < a.Count; ++i)
+            {
+                if (i == a.Count - 1 || cw(p1, a[i], p2))
+                {
+                    while (up.Count >= 2 && !cw(up[up.Count - 2], up[up.Count - 1], a[i]))
+                        up.RemoveAt(up.Count - 1);
+                    up.Add(a[i]);
+                }
+                if (i == a.Count - 1 || ccw(p1, a[i], p2))
+                {
+                    while (down.Count >= 2 && !ccw(down[down.Count - 2], down[down.Count - 1], a[i]))
+                        down.RemoveAt(down.Count - 1);
+                    down.Add(a[i]);
+                }
+            }
+            a.Clear();
+            for (int i = 0; i < up.Count; ++i)
+                a.Add(up[i]);
+            for (int i = down.Count - 2; i > 0; --i)
+                a.Add(down[i]);
+        }
+
+        static float NextFloat(Random random)
+        {
+            double mantissa = (random.NextDouble() * 2.0) - 1.0;
+            double exponent = Math.Pow(2.0, random.Next(-32, 32));
+            return (float)(mantissa * exponent);
+        } 
+
+        static int Main(string[] args)
+        {
+            List<Point> points = new List<Point>();
+            Random random = new Random(13);
+            for (int i = 0; i < 100; ++i)
+            {
+                Point p;
+                p.X = NextFloat(random);
+                p.Y = NextFloat(random);
+                points.Add(p);
+            }
+            convex_hull(points);
+            Point O;
+            float r;
+            Solve(points, out O, out r);
+
+               
+            if (r >= 999999.9 - 1 && r <= 999999.9 + 1)
+                return 100;
+            return 0;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Constr1.cs b/src/coreclr/tests/src/JIT/SIMD/Constr1.cs
new file mode 100644 (file)
index 0000000..bb34062
--- /dev/null
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector2;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+      
+
+        static int Main(string[] args)
+        {
+                       Point a = new Point(100, 100);
+
+            return (int)a.X;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/CreateGeneric.cs b/src/coreclr/tests/src/JIT/SIMD/CreateGeneric.cs
new file mode 100644 (file)
index 0000000..69dbd6b
--- /dev/null
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+
+        static int Main(string[] args)
+        {
+            
+            var a = new System.Numerics.Vector<float>(1);
+
+            return 100;
+          
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/CreateGeneric2.cs b/src/coreclr/tests/src/JIT/SIMD/CreateGeneric2.cs
new file mode 100644 (file)
index 0000000..2b6c190
--- /dev/null
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+
+        static int Main(string[] args)
+        {
+                       var a = new System.Numerics.Vector<short>(51);
+                       for(int i = 0; i < System.Numerics.Vector<short>.Count; ++i)
+                       {
+                               if (a[i] != 51)
+                               {
+                                       return 0;
+                               }
+                       }
+                       var b = System.Numerics.Vector<int>.One;
+                       for(int i = 0; i < System.Numerics.Vector<int>.Count; ++i)
+                       {
+                               if (b[i] != 1)
+                               {
+                                       return 0;
+                               }
+                       }
+                       var c = System.Numerics.Vector<short>.One;
+                       for(int i = 0; i < System.Numerics.Vector<short>.Count; ++i)
+                       {
+                               if (c[i] != 1)
+                               {
+                                       return 0;
+                               }
+                       }
+                       var d = new System.Numerics.Vector<double>(100.0);
+                       for(int i = 0; i < System.Numerics.Vector<double>.Count; ++i)
+                       {
+                               if (d[i] != 100.0)
+                               {
+                                       return 0;
+                               }
+                       }
+                       
+                       var e = new System.Numerics.Vector<float>(100);
+                       for(int i = 0; i < System.Numerics.Vector<float>.Count; ++i)
+                       {
+                               if (e[i] != 100.0)
+                               {
+                                       return 0;
+                               }
+                       }
+                       var f = c * 49;
+                       var g = f + a;
+                       
+                       short[] array1 = new short[] { 1, 3, 5, 7, 9, 2, 1, 1, 1,5,4,3,1,2,3,5,6,7,1,1,1,1 };
+            var w = new System.Numerics.Vector<short>(array1);
+                       return g[0];
+                       //return (int)c[1] + (int)b[3] - 100 + a[2] - 2 * d[1];
+          
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Ctors.cs b/src/coreclr/tests/src/JIT/SIMD/Ctors.cs
new file mode 100644 (file)
index 0000000..7c36185
--- /dev/null
@@ -0,0 +1,67 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+        static int Vector2Ctors()
+        {
+            Vector2 a = new Vector2(45, 12);
+            if (a.X != 45 || a.Y != 12)
+                return 0;
+            a.X = 100;
+            Vector2 b = new Vector2(65);
+
+            if (b.X != 65 || b.Y != 65)
+                return 0;
+            return 100;
+
+        }
+
+        static int Vector3Ctors()
+        {
+            Vector3 a = new Vector3(0, 1, 2);
+            if (a.X != 0 || a.Y != 1 || a.Z != 2)
+                return 0;
+            Vector3 b = new Vector3(2);
+            if (b.X != 2 || b.Y != 2 || b.Z != 2)
+                return 0;
+            Vector2 q = new Vector2(10, 1);
+            Vector3 c = new Vector3(q, 5);
+            if (c.X != q.X || c.Y != q.Y || c.Z != 5)
+                return 0;
+            return 100;
+
+        }
+
+        static int Vector4Ctors()
+        {
+            Vector4 a = new Vector4(0, 1, 2, 3);
+            if (a.X != 0 || a.Y != 1 || a.Z != 2 || a.W != 3)
+                return 0;
+            Vector4 b = new Vector4(2);
+            if (b.X != 2 || b.Y != 2 || b.Z != 2 || b.W != 2)
+                return 0;
+            Vector2 q = new Vector2(10, 1);
+            Vector4 c = new Vector4(q, 10, -1);
+            if (c.X != q.X || c.Y != q.Y || c.Z != 10 || c.W != -1)
+                return 0;
+            Vector3 w = new Vector3(5);
+            Vector4 d = new Vector4(w, 2);
+            if (d.X != w.X || d.Y != w.Y || d.Z != w.Z || d.W != 2)
+                return 0;
+            return 100;
+        }
+
+
+        static int Main(string[] args)
+        {
+            if (Vector2Ctors() != 100 || Vector3Ctors() != 100 || Vector4Ctors() != 100)
+                return 0;
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/CurrTest.cs b/src/coreclr/tests/src/JIT/SIMD/CurrTest.cs
new file mode 100644 (file)
index 0000000..2ea14f1
--- /dev/null
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector<int>;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+       
+
+
+        static int Main(string[] args)
+        {
+            Point p = new Point(1);
+            Point[] arr = new Point[10];
+            arr[0] = p; //loadelem
+            arr[2] = p;
+            if (arr[0] == arr[1] || arr[2] != p)
+            {
+                return 0;
+            }
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/DivSignedUnsignedTest.cs b/src/coreclr/tests/src/JIT/SIMD/DivSignedUnsignedTest.cs
new file mode 100644 (file)
index 0000000..800e488
--- /dev/null
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+
+        static int Main(string[] args)
+        {
+            {
+                var a = new Vector<uint>(1000000);
+                var b = new Vector<uint>(0);
+                var c = new Vector<uint>(1);
+                var d = b - c;
+                var e = d / a;
+                if (e[0] != 4294)
+                {
+                    return 0;
+                }
+            }
+            {
+                var a = new Vector<int>(1000000);
+                var b = new Vector<int>(0);
+                var c = new Vector<int>(1);
+                var d = b - c;
+                var e = d / a;
+                if (e[0] != 0)
+                {
+                    return 0;
+                }
+            }
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Dup.cs b/src/coreclr/tests/src/JIT/SIMD/Dup.cs
new file mode 100644 (file)
index 0000000..2b84469
--- /dev/null
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector4;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+        static Point a;
+
+        static int Main(string[] args)
+        {
+            Point p = new Point(1, 2, 3, 4);
+            Point c = p;
+            p.X = 2;
+            if (p.X == c.X)
+            {
+                return 0;
+            }
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/GenerCtrFromArray.cs b/src/coreclr/tests/src/JIT/SIMD/GenerCtrFromArray.cs
new file mode 100644 (file)
index 0000000..e36cd4a
--- /dev/null
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector<int>;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+        static int test(int[] arr)
+        {
+            int a = arr[0];
+            return a;
+        }
+
+        static int Main(string[] args)
+        {
+                       int[] arr = new int[] {1,2,3,4,5,6,7,8};
+                       Point p = new Point(arr, 0);
+            for (int i = 0; i < Point.Count; ++i)
+            {
+                if (p[i] != arr[i])
+                {
+                    return 0;
+                }
+            }
+            return 100;
+
+
+            
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Haar-likeFfeaturesGeneric.cs b/src/coreclr/tests/src/JIT/SIMD/Haar-likeFfeaturesGeneric.cs
new file mode 100644 (file)
index 0000000..c51f8b1
--- /dev/null
@@ -0,0 +1,162 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector<double>;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+        static float NextFloat(Random random)
+        {
+            double mantissa = (random.NextDouble() * 2.0) - 1.0;
+            double exponent = Math.Pow(2.0, random.Next(-32, 32));
+            return (float)(mantissa * exponent);
+        }
+
+        static byte NextByte(Random random)
+        {
+            return (byte)random.Next(0, 2);
+        }
+
+        static double[] VectorFilter(double[] color, double[] mask)
+        {
+            int count = Point.Count;
+
+            int N = color.Length;
+            double[] res = new double[N];
+            for (int i = 0; i < N; i += count)
+            {
+                Point p = new Point(color, i);
+                Point m = new Point(mask, i);
+                p = System.Numerics.Vector.Abs(p);
+                Point r = p * m;
+                for (int j = 0; j < count; ++j)
+                {
+                    res[i + j] = r[j];
+                }
+            }
+
+            return res;
+        }
+
+        static double[] VectorAndFilter(double[] color, double[] mask)
+        {
+            int count = Point.Count;
+
+            int N = color.Length;
+            double[] res = new double[N];
+            for (int i = 0; i < N; i += count)
+            {
+                Point p = new Point(color, i);
+                Point m = new Point(mask, i);
+                p = System.Numerics.Vector.Abs(p);
+                Point r = p & m;
+                for (int j = 0; j < count; ++j)
+                {
+                    res[i + j] = r[j];
+                }
+            }
+
+            return res;
+        }
+
+        static double[] SimpleFilter(double[] color, double[] mask)
+        {           
+            int N = color.Length;
+            double[] res = new double[N];
+            for (int i = 0; i < N; i += 1)
+            {
+                double c = Math.Abs(color[i]);
+                res[i] = c * mask[i];
+            }
+            return res;
+        }
+
+        static double[] generateColor(int N, Random random)
+        {
+            double[] res = new double[N];
+            for (int i = 0; i < N; ++i)
+            {
+                res[i] = NextFloat(random);
+            }
+            return res;
+        }
+
+        static double[] generateMask(int N, Random random)
+        {
+            double[] res = new double[N];
+            for (int i = 0; i < N; ++i)
+            {
+                byte b = NextByte(random);
+                if (b == 0)
+                {
+                    res[i] = 0;
+                }
+                else
+                {
+                    res[i] = 1;
+                }                
+            }
+            return res;
+        }
+
+        static double[] generateAndMask(double[] mask)
+        {
+            int N = mask.Length;
+            double[] res = new double[N];
+            for (int i = 0; i < N; ++i)
+            {
+              
+                if (mask[i] == 0)
+                {
+                    res[i] = 0;
+                }
+                else
+                {
+                    res[i] = BitConverter.Int64BitsToDouble(-1);
+                }
+            }
+            return res;
+        }
+
+        static bool checkEQ(double[] a, double[] b)
+        {
+            int N = a.Length;
+            for (int i = 0; i < N; ++i)
+            {
+                if (a[i] != b[i])
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
+        
+        static int Main(string[] args)
+        {
+            Random random = new Random(13);
+            int count = Point.Count;
+            int N = count * 1000;
+            double[] color = generateColor(N, random);
+            double[] mask = generateMask(N, random);
+            double[] andMask = generateAndMask(mask);
+
+            double[] res = VectorFilter(color, mask);
+            double[] check = SimpleFilter(color, mask);
+            double[] andRes = VectorAndFilter(color, andMask);
+            
+            if (checkEQ(res, check) == false)
+            {
+                return 0;
+            }
+            if (checkEQ(res, andRes) == false)
+            {
+                return 0;
+            }
+
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/InitFromArray.cs b/src/coreclr/tests/src/JIT/SIMD/InitFromArray.cs
new file mode 100644 (file)
index 0000000..baea4cc
--- /dev/null
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector<int>;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+        static int Main(string[] args)
+        {
+                       int[] arr = new int[] {1,1,1,1,1,1,1,1,1,1,1,1};
+                       Point p = new Point(arr);
+
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Ldfld.cs b/src/coreclr/tests/src/JIT/SIMD/Ldfld.cs
new file mode 100644 (file)
index 0000000..4aa9bf1
--- /dev/null
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector4;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+        static float Do(Point p)
+        {
+            return p.X;
+        }
+
+        struct S
+        {
+            public Point p;
+        }
+
+        class C
+        {
+            public Point p;
+        }
+
+
+        static int Main(string[] args)
+        {
+            Point p = new Point(1, 2, 3, 4);
+
+            S s = new S();
+            C c = new C();
+            s.p.X = 1;
+            c.p.Y = 2;
+            if (Do(s.p) != 1)
+            {
+                return 0;
+            }
+            if (c.p.X != 0 || c.p.Y != 2)
+            {
+                return 0;
+            }
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Ldind.cs b/src/coreclr/tests/src/JIT/SIMD/Ldind.cs
new file mode 100644 (file)
index 0000000..6cae39c
--- /dev/null
@@ -0,0 +1,47 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using Point = System.Numerics.Vector4;
+
+
+namespace Test
+{
+    [StructLayout(LayoutKind.Explicit, Pack = 1, Size = 8)]
+   
+    static class Program
+    {
+        static int Main()
+        {
+            Point x = new Point(1);
+                       Point y, z;
+            unsafe
+            {
+                Do1(&x, &y);
+                Do2(&y, &z);
+            }
+                       if (y.X != 1)
+                       {
+                               return 0;
+                       }
+                       if (z.X != 1)
+                       {
+                               return 0;
+                       }
+                       return 100;
+        }
+
+        // Disable inlining to permit easier identification of the code
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        unsafe static void Do1(Point* src, Point* dst)
+        {
+            *((Point*)dst) = *((Point*)src);
+        }
+
+        // Disable inlining to permit easier identification of the code
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        unsafe static void Do2(Point* src, Point* dst)
+        {
+            *((long*)dst) = *((long*)src);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/SIMD/MinMax.cs b/src/coreclr/tests/src/JIT/SIMD/MinMax.cs
new file mode 100644 (file)
index 0000000..af89f73
--- /dev/null
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector2;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+
+        static int Main(string[] args)
+        {
+            Point a = new Point(10, 50);
+            Point b = new Point(10, 10);
+            Point c = Point.Max(a, b);
+                       if (c.Y != 50)
+                       {
+                               return 0;
+                       }                               
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Mul.cs b/src/coreclr/tests/src/JIT/SIMD/Mul.cs
new file mode 100644 (file)
index 0000000..170fe7a
--- /dev/null
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector2;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+      
+
+        static int Main(string[] args)
+        {
+                       Point a = new Point(10, 50);
+                       Point b = new Point(10, 10);
+            Point c = a * b;
+                       return (int)c.X;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Ret100.cs b/src/coreclr/tests/src/JIT/SIMD/Ret100.cs
new file mode 100644 (file)
index 0000000..54b0662
--- /dev/null
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector2;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+      
+
+        static int Main(string[] args)
+        {
+
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/SIMD.csproj b/src/coreclr/tests/src/JIT/SIMD/SIMD.csproj
new file mode 100644 (file)
index 0000000..3a836be
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+<!--  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>-->
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+  </PropertyGroup>
+  <ItemGroup>
+    <None Include="project.json" />
+  </ItemGroup>
+  <Target Name="Build">
+    <ItemGroup>
+      <AllSourceFiles Include="$(MSBuildProjectDirectory)\*.cs" />
+    </ItemGroup>
+    <PropertyGroup>
+      <GenerateRunScript>false</GenerateRunScript>
+    </PropertyGroup>
+    <MSBuild Projects="cs_template.csproj" Properties="AssemblyName1=%(AllSourceFiles.FileName);AllowUnsafeBlocks=True;IntermediateOutputPath=$(IntermediateOutputPath)\%(AllSourceFiles.FileName)\;DefaultBuildAllTarget=Build " />
+  </Target>
+</Project>
diff --git a/src/coreclr/tests/src/JIT/SIMD/Simple.cs b/src/coreclr/tests/src/JIT/SIMD/Simple.cs
new file mode 100644 (file)
index 0000000..bddbdad
--- /dev/null
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector2;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+        static int Adds()
+        {
+            Point a = new Point(0, 0);
+            Point b = new Point(1, 2);
+            a += b;
+            a += b;
+            a += b;
+            a += b;
+            a += b;
+            a += b;
+            a += b;
+            a += b;
+            a += b;
+            a += b;
+            if (a.X != 10 || a.Y != 20)
+            {
+                return 0;
+            }
+            return 100;
+
+        }
+
+
+        static int Main(string[] args)
+        {
+
+
+            Point a = new Point(0, 0), b = new Point(1, 0);
+            Point c = a + b;
+            Point d = c - b;
+            Point e = d - a;
+            if (e.X != 0 || e.Y != 0)
+            {
+                return 0;
+            }
+
+            e += e;
+            if (e.X != 0 || e.Y != 0)
+            {
+                return 0;
+            }
+
+            a += new Point(5, 2);
+            e += a + b;
+            if (e.X != 6 || e.Y != 2)
+            {
+                return 0;
+            }
+            e *= 10;
+            if (e.X != 60 || e.Y != 20)
+            {
+                return 0;
+            }
+            // Debug.Assert(e.X == 0 && e.Y == 0);      
+            if (Adds() != 100)
+            {
+                return 0;
+            }
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/SqrtGeneric.cs b/src/coreclr/tests/src/JIT/SIMD/SqrtGeneric.cs
new file mode 100644 (file)
index 0000000..7d6b9e4
--- /dev/null
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+
+
+        static int Main(string[] args)
+        {
+            var a = new System.Numerics.Vector<short>(25);
+            a = System.Numerics.Vector.SquareRoot(a);
+            if (a[0] != 5)
+            {
+                return 0;
+            }
+            var b = System.Numerics.Vector<int>.One;
+            b = System.Numerics.Vector.SquareRoot(b);
+            if (b[3] != 1)
+            {
+                return 0;
+            }
+            var c = new System.Numerics.Vector<long>(1231111222 * (long)1231111222);
+            c = System.Numerics.Vector.SquareRoot(c);
+            if (c[1] != 1231111222)
+            {
+                return 0;
+            }
+
+            var d = new System.Numerics.Vector<double>(100.0);
+            d = System.Numerics.Vector.SquareRoot(d);
+            if (d[0] != 10)
+            {
+                return 0;
+            }
+            var e = new System.Numerics.Vector<float>(64);
+            e = System.Numerics.Vector.SquareRoot(e);
+            if (e[3] != 8)
+            {
+                return 0;
+            }
+            var f = new System.Numerics.Vector<ushort>(36);
+            f = System.Numerics.Vector.SquareRoot(f);
+            if (f[7] != 6)
+            {
+                return 0;
+            }
+            var g = new System.Numerics.Vector<ulong>(16);
+            g = System.Numerics.Vector.SquareRoot(g);
+            if (g[1] != 4)
+            {
+                return 0;
+            }
+
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Sums.cs b/src/coreclr/tests/src/JIT/SIMD/Sums.cs
new file mode 100644 (file)
index 0000000..3d23d68
--- /dev/null
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector4;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+        static float NextFloat(Random random)
+        {
+            double mantissa = (random.NextDouble() * 2.0) - 1.0;
+            double exponent = Math.Pow(2.0, random.Next(-32, 32));
+            return (float)(mantissa * exponent);
+        }
+
+
+        static float sum(Point[] arr)
+        {
+            int n = arr.Length;
+            Point s = new Point(0);
+            for (int i = 0; i < n; ++i)
+            {
+                arr[i] += new Point(1);
+                arr[i] *= 2;
+                arr[i] -= (i == 0) ? new Point(0) : arr[i - 1];
+                arr[i] += (i == n - 1) ? new Point(0) : arr[i + 1];
+                s += arr[i];
+            }
+            return s.X;
+        }
+
+
+        static int Main(string[] args)
+        {
+            System.Diagnostics.Stopwatch clock = new System.Diagnostics.Stopwatch();
+            clock.Start();
+            Random random = new Random(13);
+            int N = 10000;
+            Point[] arr = new Point[N];
+            for (int i = 0; i < N; ++i)
+            {
+                arr[i].X = NextFloat(random);
+                arr[i].Y = NextFloat(random);
+                arr[i].Z = NextFloat(random);
+                arr[i].W = NextFloat(random);
+            }
+
+            for (int i = 0; i < 1000; ++i)
+            {
+                sum(arr);
+            }
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Vector3.cs b/src/coreclr/tests/src/JIT/SIMD/Vector3.cs
new file mode 100644 (file)
index 0000000..60809e8
--- /dev/null
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector3;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+      
+
+        static int Main(string[] args)
+        {
+                       Point a = new Point(1,2,3);
+                       Point b = new Point(2,2, 5);
+                       float c = 33;
+                       Point d = (b + a)*c;
+                       Point q = d + a;
+            return (int)(q).X;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/Vector4.cs b/src/coreclr/tests/src/JIT/SIMD/Vector4.cs
new file mode 100644 (file)
index 0000000..ca1851d
--- /dev/null
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector4;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+
+      
+
+        static int Main(string[] args)
+        {
+                       Point a = new Point(1,2,3,4);
+                       Point b = new Point(2,2,1,1);
+                       float c = 33;
+                       Point d = (b + a)*c;
+                       Point q = d + a;
+            return (int)(q).X;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/SIMD/app.config b/src/coreclr/tests/src/JIT/SIMD/app.config
new file mode 100644 (file)
index 0000000..bed87d8
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.20.0" newVersion="4.0.20.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Text.Encoding" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime.Extensions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.20.0" newVersion="4.0.20.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+</configuration>
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/SIMD/cs_template.csproj b/src/coreclr/tests/src/JIT/SIMD/cs_template.csproj
new file mode 100644 (file)
index 0000000..59bffe5
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(AssemblyName1)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="$(AssemblyName1).cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+<!--  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>-->
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/SIMD/project.json b/src/coreclr/tests/src/JIT/SIMD/project.json
new file mode 100644 (file)
index 0000000..2c96fbd
--- /dev/null
@@ -0,0 +1,15 @@
+{
+  "dependencies": {
+    "System.Collections": "4.0.10",
+    "System.Console": "4.0.0-beta-*",
+       "System.Linq": "4.0.0",
+       "System.Numerics.Vectors": "4.1.0",
+    "System.Runtime": "4.0.20-beta-*",
+    "System.Runtime.Extensions": "4.0.10-beta-*",
+    "System.Threading": "4.0.0-beta-*",
+    "System.Threading.Thread": "4.0.0-beta-*",
+  },
+  "frameworks": {
+    "dnxcore50": {}
+  }
+}
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/SIMD/project.lock.json b/src/coreclr/tests/src/JIT/SIMD/project.lock.json
new file mode 100644 (file)
index 0000000..d92a7da
--- /dev/null
@@ -0,0 +1,947 @@
+{
+  "locked": false,
+  "version": -9996,
+  "targets": {
+    "DNXCore,Version=v5.0": {
+      "System.Collections/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.20"
+        },
+        "compile": {
+          "ref/dotnet/System.Collections.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Collections.dll": {}
+        }
+      },
+      "System.Console/4.0.0-beta-23213": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Runtime.InteropServices": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.IO.FileSystem.Primitives": "4.0.0",
+          "System.IO": "4.0.10",
+          "System.Threading.Tasks": "4.0.10",
+          "System.Text.Encoding": "4.0.10",
+          "System.Threading": "4.0.10",
+          "System.Text.Encoding.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Console.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Console.dll": {}
+        }
+      },
+      "System.Diagnostics.Debug/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Diagnostics.Debug.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Diagnostics.Debug.dll": {}
+        }
+      },
+      "System.Globalization/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Globalization.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Globalization.dll": {}
+        }
+      },
+      "System.IO/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Text.Encoding": "4.0.0",
+          "System.Threading.Tasks": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.IO.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.IO.dll": {}
+        }
+      },
+      "System.IO.FileSystem.Primitives/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.20"
+        },
+        "compile": {
+          "ref/dotnet/System.IO.FileSystem.Primitives.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.IO.FileSystem.Primitives.dll": {}
+        }
+      },
+      "System.Linq/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Collections": "4.0.10",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Diagnostics.Debug": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Linq.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Linq.dll": {}
+        }
+      },
+      "System.Numerics.Vectors/4.1.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Globalization": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Numerics.Vectors.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Numerics.Vectors.dll": {}
+        }
+      },
+      "System.Private.Uri/4.0.0-beta-23127": {
+        "runtime": {
+          "lib/DNXCore50/System.Private.Uri.dll": {}
+        }
+      },
+      "System.Reflection/4.0.0": {
+        "dependencies": {
+          "System.IO": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0",
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.dll": {}
+        }
+      },
+      "System.Reflection.Primitives/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.Primitives.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Reflection.Primitives.dll": {}
+        }
+      },
+      "System.Resources.ResourceManager/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.Globalization": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Resources.ResourceManager.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Resources.ResourceManager.dll": {}
+        }
+      },
+      "System.Runtime/4.0.20-beta-23127": {
+        "dependencies": {
+          "System.Private.Uri": "4.0.0-beta-23127"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.dll": {}
+        }
+      },
+      "System.Runtime.Extensions/4.0.10-beta-23127": {
+        "dependencies": {
+          "System.Runtime": "4.0.20-beta-23127"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.Extensions.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.Extensions.dll": {}
+        }
+      },
+      "System.Runtime.Handles/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.Handles.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.Handles.dll": {}
+        }
+      },
+      "System.Runtime.InteropServices/4.0.20": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0",
+          "System.Runtime.Handles": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.InteropServices.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.InteropServices.dll": {}
+        }
+      },
+      "System.Text.Encoding/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Text.Encoding.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Text.Encoding.dll": {}
+        }
+      },
+      "System.Text.Encoding.Extensions/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Text.Encoding": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Text.Encoding.Extensions.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {}
+        }
+      },
+      "System.Threading/4.0.0-beta-23127": {
+        "dependencies": {
+          "System.Runtime": "4.0.0-beta-23127",
+          "System.Threading.Tasks": "4.0.0-beta-23127"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.dll": {}
+        }
+      },
+      "System.Threading.Tasks/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.Tasks.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Threading.Tasks.dll": {}
+        }
+      },
+      "System.Threading.Thread/4.0.0-beta-23213": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.Thread.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Threading.Thread.dll": {}
+        }
+      }
+    }
+  },
+  "libraries": {
+    "System.Collections/4.0.10": {
+      "serviceable": true,
+      "sha512": "ux6ilcZZjV/Gp7JEZpe+2V1eTueq6NuoGRM3eZCFuPM25hLVVgCRuea6STW8hvqreIOE59irJk5/ovpA5xQipw==",
+      "files": [
+        "System.Collections.4.0.10.nupkg",
+        "System.Collections.4.0.10.nupkg.sha512",
+        "System.Collections.nuspec",
+        "lib/DNXCore50/System.Collections.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Collections.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Collections.dll",
+        "ref/dotnet/System.Collections.xml",
+        "ref/dotnet/de/System.Collections.xml",
+        "ref/dotnet/es/System.Collections.xml",
+        "ref/dotnet/fr/System.Collections.xml",
+        "ref/dotnet/it/System.Collections.xml",
+        "ref/dotnet/ja/System.Collections.xml",
+        "ref/dotnet/ko/System.Collections.xml",
+        "ref/dotnet/ru/System.Collections.xml",
+        "ref/dotnet/zh-hans/System.Collections.xml",
+        "ref/dotnet/zh-hant/System.Collections.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Collections.dll"
+      ]
+    },
+    "System.Console/4.0.0-beta-23213": {
+      "serviceable": true,
+      "sha512": "JMXpqaP1+67/fISmYRXlRm6tGQHXu6seqgY56pAuSLMxpsK5FOYqUXx7RnUIG0SmIJO25ivTfTXLDVv2wTXYAg==",
+      "files": [
+        "System.Console.4.0.0-beta-23213.nupkg",
+        "System.Console.4.0.0-beta-23213.nupkg.sha512",
+        "System.Console.nuspec",
+        "lib/DNXCore50/System.Console.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Console.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Console.dll",
+        "ref/dotnet/System.Console.xml",
+        "ref/dotnet/de/System.Console.xml",
+        "ref/dotnet/es/System.Console.xml",
+        "ref/dotnet/fr/System.Console.xml",
+        "ref/dotnet/it/System.Console.xml",
+        "ref/dotnet/ja/System.Console.xml",
+        "ref/dotnet/ko/System.Console.xml",
+        "ref/dotnet/ru/System.Console.xml",
+        "ref/dotnet/zh-hans/System.Console.xml",
+        "ref/dotnet/zh-hant/System.Console.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Console.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Diagnostics.Debug/4.0.10": {
+      "serviceable": true,
+      "sha512": "pi2KthuvI2LWV2c2V+fwReDsDiKpNl040h6DcwFOb59SafsPT/V1fCy0z66OKwysurJkBMmp5j5CBe3Um+ub0g==",
+      "files": [
+        "System.Diagnostics.Debug.4.0.10.nupkg",
+        "System.Diagnostics.Debug.4.0.10.nupkg.sha512",
+        "System.Diagnostics.Debug.nuspec",
+        "lib/DNXCore50/System.Diagnostics.Debug.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Diagnostics.Debug.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Diagnostics.Debug.dll",
+        "ref/dotnet/System.Diagnostics.Debug.xml",
+        "ref/dotnet/de/System.Diagnostics.Debug.xml",
+        "ref/dotnet/es/System.Diagnostics.Debug.xml",
+        "ref/dotnet/fr/System.Diagnostics.Debug.xml",
+        "ref/dotnet/it/System.Diagnostics.Debug.xml",
+        "ref/dotnet/ja/System.Diagnostics.Debug.xml",
+        "ref/dotnet/ko/System.Diagnostics.Debug.xml",
+        "ref/dotnet/ru/System.Diagnostics.Debug.xml",
+        "ref/dotnet/zh-hans/System.Diagnostics.Debug.xml",
+        "ref/dotnet/zh-hant/System.Diagnostics.Debug.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll"
+      ]
+    },
+    "System.Globalization/4.0.10": {
+      "sha512": "kzRtbbCNAxdafFBDogcM36ehA3th8c1PGiz8QRkZn8O5yMBorDHSK8/TGJPYOaCS5zdsGk0u9qXHnW91nqy7fw==",
+      "files": [
+        "System.Globalization.4.0.10.nupkg",
+        "System.Globalization.4.0.10.nupkg.sha512",
+        "System.Globalization.nuspec",
+        "lib/DNXCore50/System.Globalization.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Globalization.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Globalization.dll",
+        "ref/dotnet/System.Globalization.xml",
+        "ref/dotnet/de/System.Globalization.xml",
+        "ref/dotnet/es/System.Globalization.xml",
+        "ref/dotnet/fr/System.Globalization.xml",
+        "ref/dotnet/it/System.Globalization.xml",
+        "ref/dotnet/ja/System.Globalization.xml",
+        "ref/dotnet/ko/System.Globalization.xml",
+        "ref/dotnet/ru/System.Globalization.xml",
+        "ref/dotnet/zh-hans/System.Globalization.xml",
+        "ref/dotnet/zh-hant/System.Globalization.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Globalization.dll"
+      ]
+    },
+    "System.IO/4.0.10": {
+      "serviceable": true,
+      "sha512": "kghf1CeYT+W2lw8a50/GxFz5HR9t6RkL4BvjxtTp1NxtEFWywnMA9W8FH/KYXiDNThcw9u/GOViDON4iJFGXIQ==",
+      "files": [
+        "System.IO.4.0.10.nupkg",
+        "System.IO.4.0.10.nupkg.sha512",
+        "System.IO.nuspec",
+        "lib/DNXCore50/System.IO.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.IO.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.IO.dll",
+        "ref/dotnet/System.IO.xml",
+        "ref/dotnet/de/System.IO.xml",
+        "ref/dotnet/es/System.IO.xml",
+        "ref/dotnet/fr/System.IO.xml",
+        "ref/dotnet/it/System.IO.xml",
+        "ref/dotnet/ja/System.IO.xml",
+        "ref/dotnet/ko/System.IO.xml",
+        "ref/dotnet/ru/System.IO.xml",
+        "ref/dotnet/zh-hans/System.IO.xml",
+        "ref/dotnet/zh-hant/System.IO.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.IO.dll"
+      ]
+    },
+    "System.IO.FileSystem.Primitives/4.0.0": {
+      "serviceable": true,
+      "sha512": "7pJUvYi/Yq3A5nagqCCiOw3+aJp3xXc/Cjr8dnJDnER3/6kX3LEencfqmXUcPl9+7OvRNyPMNhqsLAcMK6K/KA==",
+      "files": [
+        "System.IO.FileSystem.Primitives.4.0.0.nupkg",
+        "System.IO.FileSystem.Primitives.4.0.0.nupkg.sha512",
+        "System.IO.FileSystem.Primitives.nuspec",
+        "lib/dotnet/System.IO.FileSystem.Primitives.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.IO.FileSystem.Primitives.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.IO.FileSystem.Primitives.dll",
+        "ref/dotnet/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/de/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/es/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/fr/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/it/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/ja/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/ko/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/ru/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/zh-hans/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/zh-hant/System.IO.FileSystem.Primitives.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.IO.FileSystem.Primitives.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Linq/4.0.0": {
+      "serviceable": true,
+      "sha512": "r6Hlc+ytE6m/9UBr+nNRRdoJEWjoeQiT3L3lXYFDHoXk3VYsRBCDNXrawcexw7KPLaH0zamQLiAb6avhZ50cGg==",
+      "files": [
+        "System.Linq.4.0.0.nupkg",
+        "System.Linq.4.0.0.nupkg.sha512",
+        "System.Linq.nuspec",
+        "lib/dotnet/System.Linq.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Linq.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Linq.dll",
+        "ref/dotnet/System.Linq.xml",
+        "ref/dotnet/de/System.Linq.xml",
+        "ref/dotnet/es/System.Linq.xml",
+        "ref/dotnet/fr/System.Linq.xml",
+        "ref/dotnet/it/System.Linq.xml",
+        "ref/dotnet/ja/System.Linq.xml",
+        "ref/dotnet/ko/System.Linq.xml",
+        "ref/dotnet/ru/System.Linq.xml",
+        "ref/dotnet/zh-hans/System.Linq.xml",
+        "ref/dotnet/zh-hant/System.Linq.xml",
+        "ref/net45/_._",
+        "ref/netcore50/System.Linq.dll",
+        "ref/netcore50/System.Linq.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._"
+      ]
+    },
+    "System.Numerics.Vectors/4.1.0": {
+      "serviceable": true,
+      "sha512": "jpubR06GWPoZA0oU5xLM7kHeV59/CKPBXZk4Jfhi0T3DafxbrdueHZ8kXlb+Fb5nd3DAyyMh2/eqEzLX0xv6Qg==",
+      "files": [
+        "System.Numerics.Vectors.4.1.0.nupkg",
+        "System.Numerics.Vectors.4.1.0.nupkg.sha512",
+        "System.Numerics.Vectors.nuspec",
+        "lib/dotnet/System.Numerics.Vectors.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Numerics.Vectors.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Numerics.Vectors.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Numerics.Vectors.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Private.Uri/4.0.0-beta-23127": {
+      "serviceable": true,
+      "sha512": "KT9JGnTYRf51pwPluZtpewmdBPiROzemamLmpzgzl3Pu3Y0vmH2CBLZktngD4I4YPNFO6ieCupeM0X3R1u26kA==",
+      "files": [
+        "System.Private.Uri.4.0.0-beta-23127.nupkg",
+        "System.Private.Uri.4.0.0-beta-23127.nupkg.sha512",
+        "System.Private.Uri.nuspec",
+        "lib/DNXCore50/System.Private.Uri.dll",
+        "lib/netcore50/System.Private.Uri.dll",
+        "ref/dnxcore50/_._",
+        "ref/netcore50/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll"
+      ]
+    },
+    "System.Reflection/4.0.0": {
+      "sha512": "g96Rn8XuG7y4VfxPj/jnXroRJdQ8L3iN3k3zqsuzk4k3Nq4KMXARYiIO4BLW4GwX06uQpuYwRMcAC/aF117knQ==",
+      "files": [
+        "License.rtf",
+        "System.Reflection.4.0.0.nupkg",
+        "System.Reflection.4.0.0.nupkg.sha512",
+        "System.Reflection.nuspec",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Reflection.dll",
+        "ref/dotnet/System.Reflection.xml",
+        "ref/dotnet/de/System.Reflection.xml",
+        "ref/dotnet/es/System.Reflection.xml",
+        "ref/dotnet/fr/System.Reflection.xml",
+        "ref/dotnet/it/System.Reflection.xml",
+        "ref/dotnet/ja/System.Reflection.xml",
+        "ref/dotnet/ko/System.Reflection.xml",
+        "ref/dotnet/ru/System.Reflection.xml",
+        "ref/dotnet/zh-hans/System.Reflection.xml",
+        "ref/dotnet/zh-hant/System.Reflection.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Reflection.dll",
+        "ref/netcore50/System.Reflection.xml",
+        "ref/netcore50/de/System.Reflection.xml",
+        "ref/netcore50/es/System.Reflection.xml",
+        "ref/netcore50/fr/System.Reflection.xml",
+        "ref/netcore50/it/System.Reflection.xml",
+        "ref/netcore50/ja/System.Reflection.xml",
+        "ref/netcore50/ko/System.Reflection.xml",
+        "ref/netcore50/ru/System.Reflection.xml",
+        "ref/netcore50/zh-hans/System.Reflection.xml",
+        "ref/netcore50/zh-hant/System.Reflection.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Reflection.Primitives/4.0.0": {
+      "serviceable": true,
+      "sha512": "n9S0XpKv2ruc17FSnaiX6nV47VfHTZ1wLjKZlAirUZCvDQCH71mVp+Ohabn0xXLh5pK2PKp45HCxkqu5Fxn/lA==",
+      "files": [
+        "System.Reflection.Primitives.4.0.0.nupkg",
+        "System.Reflection.Primitives.4.0.0.nupkg.sha512",
+        "System.Reflection.Primitives.nuspec",
+        "lib/DNXCore50/System.Reflection.Primitives.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Primitives.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Reflection.Primitives.dll",
+        "ref/dotnet/System.Reflection.Primitives.xml",
+        "ref/dotnet/de/System.Reflection.Primitives.xml",
+        "ref/dotnet/es/System.Reflection.Primitives.xml",
+        "ref/dotnet/fr/System.Reflection.Primitives.xml",
+        "ref/dotnet/it/System.Reflection.Primitives.xml",
+        "ref/dotnet/ja/System.Reflection.Primitives.xml",
+        "ref/dotnet/ko/System.Reflection.Primitives.xml",
+        "ref/dotnet/ru/System.Reflection.Primitives.xml",
+        "ref/dotnet/zh-hans/System.Reflection.Primitives.xml",
+        "ref/dotnet/zh-hant/System.Reflection.Primitives.xml",
+        "ref/net45/_._",
+        "ref/netcore50/System.Reflection.Primitives.dll",
+        "ref/netcore50/System.Reflection.Primitives.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll"
+      ]
+    },
+    "System.Resources.ResourceManager/4.0.0": {
+      "serviceable": true,
+      "sha512": "qmqeZ4BJgjfU+G2JbrZt4Dk1LsMxO4t+f/9HarNY6w8pBgweO6jT+cknUH7c3qIrGvyUqraBhU45Eo6UtA0fAw==",
+      "files": [
+        "System.Resources.ResourceManager.4.0.0.nupkg",
+        "System.Resources.ResourceManager.4.0.0.nupkg.sha512",
+        "System.Resources.ResourceManager.nuspec",
+        "lib/DNXCore50/System.Resources.ResourceManager.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Resources.ResourceManager.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Resources.ResourceManager.dll",
+        "ref/dotnet/System.Resources.ResourceManager.xml",
+        "ref/dotnet/de/System.Resources.ResourceManager.xml",
+        "ref/dotnet/es/System.Resources.ResourceManager.xml",
+        "ref/dotnet/fr/System.Resources.ResourceManager.xml",
+        "ref/dotnet/it/System.Resources.ResourceManager.xml",
+        "ref/dotnet/ja/System.Resources.ResourceManager.xml",
+        "ref/dotnet/ko/System.Resources.ResourceManager.xml",
+        "ref/dotnet/ru/System.Resources.ResourceManager.xml",
+        "ref/dotnet/zh-hans/System.Resources.ResourceManager.xml",
+        "ref/dotnet/zh-hant/System.Resources.ResourceManager.xml",
+        "ref/net45/_._",
+        "ref/netcore50/System.Resources.ResourceManager.dll",
+        "ref/netcore50/System.Resources.ResourceManager.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll"
+      ]
+    },
+    "System.Runtime/4.0.20-beta-23127": {
+      "serviceable": true,
+      "sha512": "naLsXkry4PBYCdXLOGx2r9TRuFWJpdZvV7W9rk4QRTPTS7H9911J09o8KXrhX+NW28YVsCgvcw8Wr0JsFEQdLQ==",
+      "files": [
+        "System.Runtime.4.0.20-beta-23127.nupkg",
+        "System.Runtime.4.0.20-beta-23127.nupkg.sha512",
+        "System.Runtime.nuspec",
+        "lib/DNXCore50/System.Runtime.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.dll",
+        "ref/dotnet/System.Runtime.xml",
+        "ref/dotnet/de/System.Runtime.xml",
+        "ref/dotnet/es/System.Runtime.xml",
+        "ref/dotnet/fr/System.Runtime.xml",
+        "ref/dotnet/it/System.Runtime.xml",
+        "ref/dotnet/ja/System.Runtime.xml",
+        "ref/dotnet/ko/System.Runtime.xml",
+        "ref/dotnet/ru/System.Runtime.xml",
+        "ref/dotnet/zh-hans/System.Runtime.xml",
+        "ref/dotnet/zh-hant/System.Runtime.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.dll"
+      ]
+    },
+    "System.Runtime.Extensions/4.0.10-beta-23127": {
+      "serviceable": true,
+      "sha512": "YwtpybYxpRqjF+TnBzmNdgGq2jNtEO9MkxYSIMW36lV7F6qEph+nCcKDLsCslgSz7dn44eSCnnsgBQQsF85eQQ==",
+      "files": [
+        "System.Runtime.Extensions.4.0.10-beta-23127.nupkg",
+        "System.Runtime.Extensions.4.0.10-beta-23127.nupkg.sha512",
+        "System.Runtime.Extensions.nuspec",
+        "lib/DNXCore50/System.Runtime.Extensions.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.Extensions.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.Extensions.dll",
+        "ref/dotnet/System.Runtime.Extensions.xml",
+        "ref/dotnet/de/System.Runtime.Extensions.xml",
+        "ref/dotnet/es/System.Runtime.Extensions.xml",
+        "ref/dotnet/fr/System.Runtime.Extensions.xml",
+        "ref/dotnet/it/System.Runtime.Extensions.xml",
+        "ref/dotnet/ja/System.Runtime.Extensions.xml",
+        "ref/dotnet/ko/System.Runtime.Extensions.xml",
+        "ref/dotnet/ru/System.Runtime.Extensions.xml",
+        "ref/dotnet/zh-hans/System.Runtime.Extensions.xml",
+        "ref/dotnet/zh-hant/System.Runtime.Extensions.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll"
+      ]
+    },
+    "System.Runtime.Handles/4.0.0": {
+      "serviceable": true,
+      "sha512": "638VhpRq63tVcQ6HDb3um3R/J2BtR1Sa96toHo6PcJGPXEPEsleCuqhBgX2gFCz0y0qkutANwW6VPPY5wQu1XQ==",
+      "files": [
+        "System.Runtime.Handles.4.0.0.nupkg",
+        "System.Runtime.Handles.4.0.0.nupkg.sha512",
+        "System.Runtime.Handles.nuspec",
+        "lib/DNXCore50/System.Runtime.Handles.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.Handles.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.Handles.dll",
+        "ref/dotnet/System.Runtime.Handles.xml",
+        "ref/dotnet/de/System.Runtime.Handles.xml",
+        "ref/dotnet/es/System.Runtime.Handles.xml",
+        "ref/dotnet/fr/System.Runtime.Handles.xml",
+        "ref/dotnet/it/System.Runtime.Handles.xml",
+        "ref/dotnet/ja/System.Runtime.Handles.xml",
+        "ref/dotnet/ko/System.Runtime.Handles.xml",
+        "ref/dotnet/ru/System.Runtime.Handles.xml",
+        "ref/dotnet/zh-hans/System.Runtime.Handles.xml",
+        "ref/dotnet/zh-hant/System.Runtime.Handles.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll"
+      ]
+    },
+    "System.Runtime.InteropServices/4.0.20": {
+      "serviceable": true,
+      "sha512": "ZgDyBYfEnjWoz/viS6VOswA6XOkDSH2DzgbpczbW50RywhnCgTl+w3JEvtAiOGyIh8cyx1NJq80jsNBSUr8Pig==",
+      "files": [
+        "System.Runtime.InteropServices.4.0.20.nupkg",
+        "System.Runtime.InteropServices.4.0.20.nupkg.sha512",
+        "System.Runtime.InteropServices.nuspec",
+        "lib/DNXCore50/System.Runtime.InteropServices.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.InteropServices.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.InteropServices.dll",
+        "ref/dotnet/System.Runtime.InteropServices.xml",
+        "ref/dotnet/de/System.Runtime.InteropServices.xml",
+        "ref/dotnet/es/System.Runtime.InteropServices.xml",
+        "ref/dotnet/fr/System.Runtime.InteropServices.xml",
+        "ref/dotnet/it/System.Runtime.InteropServices.xml",
+        "ref/dotnet/ja/System.Runtime.InteropServices.xml",
+        "ref/dotnet/ko/System.Runtime.InteropServices.xml",
+        "ref/dotnet/ru/System.Runtime.InteropServices.xml",
+        "ref/dotnet/zh-hans/System.Runtime.InteropServices.xml",
+        "ref/dotnet/zh-hant/System.Runtime.InteropServices.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll"
+      ]
+    },
+    "System.Text.Encoding/4.0.10": {
+      "sha512": "fNlSFgy4OuDlJrP9SFFxMlaLazq6ipv15sU5TiEgg9UCVnA/OgoVUfymFp4AOk1jOkW5SVxWbeeIUptcM+m/Vw==",
+      "files": [
+        "System.Text.Encoding.4.0.10.nupkg",
+        "System.Text.Encoding.4.0.10.nupkg.sha512",
+        "System.Text.Encoding.nuspec",
+        "lib/DNXCore50/System.Text.Encoding.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Text.Encoding.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Text.Encoding.dll",
+        "ref/dotnet/System.Text.Encoding.xml",
+        "ref/dotnet/de/System.Text.Encoding.xml",
+        "ref/dotnet/es/System.Text.Encoding.xml",
+        "ref/dotnet/fr/System.Text.Encoding.xml",
+        "ref/dotnet/it/System.Text.Encoding.xml",
+        "ref/dotnet/ja/System.Text.Encoding.xml",
+        "ref/dotnet/ko/System.Text.Encoding.xml",
+        "ref/dotnet/ru/System.Text.Encoding.xml",
+        "ref/dotnet/zh-hans/System.Text.Encoding.xml",
+        "ref/dotnet/zh-hant/System.Text.Encoding.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Text.Encoding.dll"
+      ]
+    },
+    "System.Text.Encoding.Extensions/4.0.10": {
+      "sha512": "TZvlwXMxKo3bSRIcsWZLCIzIhLbvlz+mGeKYRZv/zUiSoQzGOwkYeBu6hOw2XPQgKqT0F4Rv8zqKdvmp2fWKYg==",
+      "files": [
+        "System.Text.Encoding.Extensions.4.0.10.nupkg",
+        "System.Text.Encoding.Extensions.4.0.10.nupkg.sha512",
+        "System.Text.Encoding.Extensions.nuspec",
+        "lib/DNXCore50/System.Text.Encoding.Extensions.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Text.Encoding.Extensions.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Text.Encoding.Extensions.dll",
+        "ref/dotnet/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/de/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/es/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/fr/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/it/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/ja/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/ko/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/ru/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/zh-hans/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/zh-hant/System.Text.Encoding.Extensions.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Text.Encoding.Extensions.dll"
+      ]
+    },
+    "System.Threading/4.0.0-beta-23127": {
+      "sha512": "SSZaF3U+EjcgXqifrYus6mcx2GYkIplUBngnNHqR9tISvhGTbd04j5VF+I7dAwmoRKtaKEHWKEvc+uT+PxK00A==",
+      "files": [
+        "License.rtf",
+        "System.Threading.4.0.0-beta-23127.nupkg",
+        "System.Threading.4.0.0-beta-23127.nupkg.sha512",
+        "System.Threading.nuspec",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Threading.dll",
+        "ref/dotnet/System.Threading.xml",
+        "ref/dotnet/de/System.Threading.xml",
+        "ref/dotnet/es/System.Threading.xml",
+        "ref/dotnet/fr/System.Threading.xml",
+        "ref/dotnet/it/System.Threading.xml",
+        "ref/dotnet/ja/System.Threading.xml",
+        "ref/dotnet/ko/System.Threading.xml",
+        "ref/dotnet/ru/System.Threading.xml",
+        "ref/dotnet/zh-hans/System.Threading.xml",
+        "ref/dotnet/zh-hant/System.Threading.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Threading.dll",
+        "ref/netcore50/System.Threading.xml",
+        "ref/netcore50/de/System.Threading.xml",
+        "ref/netcore50/es/System.Threading.xml",
+        "ref/netcore50/fr/System.Threading.xml",
+        "ref/netcore50/it/System.Threading.xml",
+        "ref/netcore50/ja/System.Threading.xml",
+        "ref/netcore50/ko/System.Threading.xml",
+        "ref/netcore50/ru/System.Threading.xml",
+        "ref/netcore50/zh-hans/System.Threading.xml",
+        "ref/netcore50/zh-hant/System.Threading.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Threading.Tasks/4.0.10": {
+      "serviceable": true,
+      "sha512": "NOwJGDfk79jR0bnzosbXLVD/PdI8KzBeESoa3CofEM5v9R5EBfcI0Jyf18stx+0IYV9okmDIDxVtxq9TbnR9bQ==",
+      "files": [
+        "System.Threading.Tasks.4.0.10.nupkg",
+        "System.Threading.Tasks.4.0.10.nupkg.sha512",
+        "System.Threading.Tasks.nuspec",
+        "lib/DNXCore50/System.Threading.Tasks.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Threading.Tasks.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Threading.Tasks.dll",
+        "ref/dotnet/System.Threading.Tasks.xml",
+        "ref/dotnet/de/System.Threading.Tasks.xml",
+        "ref/dotnet/es/System.Threading.Tasks.xml",
+        "ref/dotnet/fr/System.Threading.Tasks.xml",
+        "ref/dotnet/it/System.Threading.Tasks.xml",
+        "ref/dotnet/ja/System.Threading.Tasks.xml",
+        "ref/dotnet/ko/System.Threading.Tasks.xml",
+        "ref/dotnet/ru/System.Threading.Tasks.xml",
+        "ref/dotnet/zh-hans/System.Threading.Tasks.xml",
+        "ref/dotnet/zh-hant/System.Threading.Tasks.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll"
+      ]
+    },
+    "System.Threading.Thread/4.0.0-beta-23213": {
+      "sha512": "3jISKL8QuJE5w45eya3fs8opFYWLaMrXu8jOjRRo/T0kZ6lqKdnYmLznTRnIrab8kzyNud2JLKQ6kMDCk/NINQ==",
+      "files": [
+        "System.Threading.Thread.4.0.0-beta-23213.nupkg",
+        "System.Threading.Thread.4.0.0-beta-23213.nupkg.sha512",
+        "System.Threading.Thread.nuspec",
+        "lib/DNXCore50/System.Threading.Thread.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Threading.Thread.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Threading.Thread.dll",
+        "ref/dotnet/System.Threading.Thread.xml",
+        "ref/dotnet/de/System.Threading.Thread.xml",
+        "ref/dotnet/es/System.Threading.Thread.xml",
+        "ref/dotnet/fr/System.Threading.Thread.xml",
+        "ref/dotnet/it/System.Threading.Thread.xml",
+        "ref/dotnet/ja/System.Threading.Thread.xml",
+        "ref/dotnet/ko/System.Threading.Thread.xml",
+        "ref/dotnet/ru/System.Threading.Thread.xml",
+        "ref/dotnet/zh-hans/System.Threading.Thread.xml",
+        "ref/dotnet/zh-hant/System.Threading.Thread.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Threading.Thread.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    }
+  },
+  "projectFileDependencyGroups": {
+    "": [
+      "System.Collections >= 4.0.10",
+      "System.Console >= 4.0.0-beta-*",
+      "System.Linq >= 4.0.0",
+      "System.Numerics.Vectors >= 4.1.0",
+      "System.Runtime >= 4.0.20-beta-*",
+      "System.Runtime.Extensions >= 4.0.10-beta-*",
+      "System.Threading >= 4.0.0-beta-*",
+      "System.Threading.Thread >= 4.0.0-beta-*"
+    ],
+    "DNXCore,Version=v5.0": []
+  }
+}
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/SIMD/stelem.cs b/src/coreclr/tests/src/JIT/SIMD/stelem.cs
new file mode 100644 (file)
index 0000000..2ea14f1
--- /dev/null
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using Point = System.Numerics.Vector<int>;
+
+namespace VectorMathTests
+{
+    class Program
+    {
+       
+
+
+        static int Main(string[] args)
+        {
+            Point p = new Point(1);
+            Point[] arr = new Point[10];
+            arr[0] = p; //loadelem
+            arr[2] = p;
+            if (arr[0] == arr[1] || arr[2] != p)
+            {
+                return 0;
+            }
+
+            return 100;
+        }
+    }
+}