From aa359e6de83f20fb065a59aa4842069f573d7c0e Mon Sep 17 00:00:00 2001 From: Sergey Andreenko Date: Mon, 17 Aug 2015 17:48:22 -0700 Subject: [PATCH] SIMD tests 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 --- src/coreclr/tests/src/JIT/SIMD/AbsGeneric.cs | 62 ++ src/coreclr/tests/src/JIT/SIMD/AbsGeneric2.cs | 61 ++ src/coreclr/tests/src/JIT/SIMD/AbsSqrt.cs | 26 + src/coreclr/tests/src/JIT/SIMD/Add.cs | 19 + .../tests/src/JIT/SIMD/BitwiseOperations.cs | 108 +++ src/coreclr/tests/src/JIT/SIMD/BoxUnbox.cs | 33 + src/coreclr/tests/src/JIT/SIMD/CircleInConvex.cs | 286 +++++++ src/coreclr/tests/src/JIT/SIMD/Constr1.cs | 19 + src/coreclr/tests/src/JIT/SIMD/CreateGeneric.cs | 21 + src/coreclr/tests/src/JIT/SIMD/CreateGeneric2.cs | 65 ++ src/coreclr/tests/src/JIT/SIMD/Ctors.cs | 67 ++ src/coreclr/tests/src/JIT/SIMD/CurrTest.cs | 26 + .../tests/src/JIT/SIMD/DivSignedUnsignedTest.cs | 39 + src/coreclr/tests/src/JIT/SIMD/Dup.cs | 24 + .../tests/src/JIT/SIMD/GenerCtrFromArray.cs | 32 + .../src/JIT/SIMD/Haar-likeFfeaturesGeneric.cs | 162 ++++ src/coreclr/tests/src/JIT/SIMD/InitFromArray.cs | 20 + src/coreclr/tests/src/JIT/SIMD/Ldfld.cs | 46 + src/coreclr/tests/src/JIT/SIMD/Ldind.cs | 47 + src/coreclr/tests/src/JIT/SIMD/MinMax.cs | 24 + src/coreclr/tests/src/JIT/SIMD/Mul.cs | 20 + src/coreclr/tests/src/JIT/SIMD/Ret100.cs | 19 + src/coreclr/tests/src/JIT/SIMD/SIMD.csproj | 26 + src/coreclr/tests/src/JIT/SIMD/Simple.cs | 71 ++ src/coreclr/tests/src/JIT/SIMD/SqrtGeneric.cs | 61 ++ src/coreclr/tests/src/JIT/SIMD/Sums.cs | 56 ++ src/coreclr/tests/src/JIT/SIMD/Vector3.cs | 22 + src/coreclr/tests/src/JIT/SIMD/Vector4.cs | 22 + src/coreclr/tests/src/JIT/SIMD/app.config | 31 + src/coreclr/tests/src/JIT/SIMD/cs_template.csproj | 44 + src/coreclr/tests/src/JIT/SIMD/project.json | 15 + src/coreclr/tests/src/JIT/SIMD/project.lock.json | 947 +++++++++++++++++++++ src/coreclr/tests/src/JIT/SIMD/stelem.cs | 26 + 33 files changed, 2547 insertions(+) create mode 100644 src/coreclr/tests/src/JIT/SIMD/AbsGeneric.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/AbsGeneric2.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/AbsSqrt.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Add.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/BitwiseOperations.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/BoxUnbox.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/CircleInConvex.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Constr1.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/CreateGeneric.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/CreateGeneric2.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Ctors.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/CurrTest.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/DivSignedUnsignedTest.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Dup.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/GenerCtrFromArray.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Haar-likeFfeaturesGeneric.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/InitFromArray.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Ldfld.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Ldind.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/MinMax.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Mul.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Ret100.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/SIMD.csproj create mode 100644 src/coreclr/tests/src/JIT/SIMD/Simple.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/SqrtGeneric.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Sums.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Vector3.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/Vector4.cs create mode 100644 src/coreclr/tests/src/JIT/SIMD/app.config create mode 100644 src/coreclr/tests/src/JIT/SIMD/cs_template.csproj create mode 100644 src/coreclr/tests/src/JIT/SIMD/project.json create mode 100644 src/coreclr/tests/src/JIT/SIMD/project.lock.json create mode 100644 src/coreclr/tests/src/JIT/SIMD/stelem.cs diff --git a/src/coreclr/tests/src/JIT/SIMD/AbsGeneric.cs b/src/coreclr/tests/src/JIT/SIMD/AbsGeneric.cs new file mode 100644 index 0000000..dd89a7d --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/AbsGeneric.cs @@ -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(arr); + a = System.Numerics.Vector.Abs(a); + if (a[0] != 5) + { + return 0; + } + var b = System.Numerics.Vector.One; + b = System.Numerics.Vector.Abs(b); + if (b[3] != 1) + { + return 0; + } + var c = new System.Numerics.Vector(-11); + c = System.Numerics.Vector.Abs(c); + if (c[1] != 11) + { + return 0; + } + + var d = new System.Numerics.Vector(-100.0); + d = System.Numerics.Vector.Abs(d); + if (d[0] != 100) + { + return 0; + } + var e = new System.Numerics.Vector(-22); + e = System.Numerics.Vector.Abs(e); + if (e[3] != 22) + { + return 0; + } + var f = new System.Numerics.Vector(21); + f = System.Numerics.Vector.Abs(f); + if (f[7] != 21) + { + return 0; + } + var g = new System.Numerics.Vector(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 index 0000000..1eeb0b2 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/AbsGeneric2.cs @@ -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(-5); + a = System.Numerics.Vector.Abs(a); + if (a[0] != 5) + { + return 0; + } + var b = System.Numerics.Vector.One; + b = System.Numerics.Vector.Abs(b); + if (b[3] != 1) + { + return 0; + } + var c = new System.Numerics.Vector(-11); + c = System.Numerics.Vector.Abs(c); + if (c[1] != 11) + { + return 0; + } + + var d = new System.Numerics.Vector(-100.0); + d = System.Numerics.Vector.Abs(d); + if (d[0] != 100) + { + return 0; + } + var e = new System.Numerics.Vector(-22); + e = System.Numerics.Vector.Abs(e); + if (e[3] != 22) + { + return 0; + } + var f = new System.Numerics.Vector(21); + f = System.Numerics.Vector.Abs(f); + if (f[7] != 21) + { + return 0; + } + var g = new System.Numerics.Vector(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 index 0000000..fd0c3aa --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/AbsSqrt.cs @@ -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 index 0000000..2666191 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Add.cs @@ -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 index 0000000..be62d72 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/BitwiseOperations.cs @@ -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(arr1); + var b = new System.Numerics.Vector(arr2); + var xorR = a ^ b; + var andR = a & b; + var orR = a | b; + int Count = System.Numerics.Vector.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(arr1); + var b = new System.Numerics.Vector(arr2); + + var xorR = a ^ b; + var andR = a & b; + var orR = a | b; + int Count = System.Numerics.Vector.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 index 0000000..65379e7 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/BoxUnbox.cs @@ -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(1); + object b = a; + if (b is System.Numerics.Vector) + { + var c = (System.Numerics.Vector)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 index 0000000..cda51f9 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/CircleInConvex.cs @@ -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 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 a, List 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 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 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 l = new List(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 a) + { + if (a.Count == 1) return; + a.Sort(cmp); + Point p1 = a[0], p2 = a.Last(); + List up = new List(), down = new List(); + 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 points = new List(); + 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 index 0000000..bb34062 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Constr1.cs @@ -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 index 0000000..69dbd6b --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/CreateGeneric.cs @@ -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(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 index 0000000..2b6c1902 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/CreateGeneric2.cs @@ -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(51); + for(int i = 0; i < System.Numerics.Vector.Count; ++i) + { + if (a[i] != 51) + { + return 0; + } + } + var b = System.Numerics.Vector.One; + for(int i = 0; i < System.Numerics.Vector.Count; ++i) + { + if (b[i] != 1) + { + return 0; + } + } + var c = System.Numerics.Vector.One; + for(int i = 0; i < System.Numerics.Vector.Count; ++i) + { + if (c[i] != 1) + { + return 0; + } + } + var d = new System.Numerics.Vector(100.0); + for(int i = 0; i < System.Numerics.Vector.Count; ++i) + { + if (d[i] != 100.0) + { + return 0; + } + } + + var e = new System.Numerics.Vector(100); + for(int i = 0; i < System.Numerics.Vector.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(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 index 0000000..7c36185 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Ctors.cs @@ -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 index 0000000..2ea14f1 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/CurrTest.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using Point = System.Numerics.Vector; + +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 index 0000000..800e488 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/DivSignedUnsignedTest.cs @@ -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(1000000); + var b = new Vector(0); + var c = new Vector(1); + var d = b - c; + var e = d / a; + if (e[0] != 4294) + { + return 0; + } + } + { + var a = new Vector(1000000); + var b = new Vector(0); + var c = new Vector(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 index 0000000..2b84469 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Dup.cs @@ -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 index 0000000..e36cd4a --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/GenerCtrFromArray.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using Point = System.Numerics.Vector; + +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 index 0000000..c51f8b1 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Haar-likeFfeaturesGeneric.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using Point = System.Numerics.Vector; + +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 index 0000000..baea4cc --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/InitFromArray.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using Point = System.Numerics.Vector; + +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 index 0000000..4aa9bf1 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Ldfld.cs @@ -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 index 0000000..6cae39c --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Ldind.cs @@ -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 index 0000000..af89f73 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/MinMax.cs @@ -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 index 0000000..170fe7a --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Mul.cs @@ -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 index 0000000..54b0662 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Ret100.cs @@ -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 index 0000000..3a836be --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/SIMD.csproj @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + false + + + + diff --git a/src/coreclr/tests/src/JIT/SIMD/Simple.cs b/src/coreclr/tests/src/JIT/SIMD/Simple.cs new file mode 100644 index 0000000..bddbdad --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Simple.cs @@ -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 index 0000000..7d6b9e4 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/SqrtGeneric.cs @@ -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(25); + a = System.Numerics.Vector.SquareRoot(a); + if (a[0] != 5) + { + return 0; + } + var b = System.Numerics.Vector.One; + b = System.Numerics.Vector.SquareRoot(b); + if (b[3] != 1) + { + return 0; + } + var c = new System.Numerics.Vector(1231111222 * (long)1231111222); + c = System.Numerics.Vector.SquareRoot(c); + if (c[1] != 1231111222) + { + return 0; + } + + var d = new System.Numerics.Vector(100.0); + d = System.Numerics.Vector.SquareRoot(d); + if (d[0] != 10) + { + return 0; + } + var e = new System.Numerics.Vector(64); + e = System.Numerics.Vector.SquareRoot(e); + if (e[3] != 8) + { + return 0; + } + var f = new System.Numerics.Vector(36); + f = System.Numerics.Vector.SquareRoot(f); + if (f[7] != 6) + { + return 0; + } + var g = new System.Numerics.Vector(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 index 0000000..3d23d68 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Sums.cs @@ -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 index 0000000..60809e8 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Vector3.cs @@ -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 index 0000000..ca1851d --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/Vector4.cs @@ -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 index 0000000..bed87d8 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/app.config @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 0000000..59bffe5 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/cs_template.csproj @@ -0,0 +1,44 @@ + + + + + Debug + AnyCPU + $(AssemblyName1) + 2.0 + {95DFC527-4DC1-495E-97D7-E94EE1F7140D} + Exe + Properties + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages + ..\..\ + 7a9bfb7d + + + + + + + + + False + + + + + + + + + + + + + + + + \ 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 index 0000000..2c96fbd --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/project.json @@ -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 index 0000000..d92a7da --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/project.lock.json @@ -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 index 0000000..2ea14f1 --- /dev/null +++ b/src/coreclr/tests/src/JIT/SIMD/stelem.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using Point = System.Numerics.Vector; + +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; + } + } +} -- 2.7.4