diff options
Diffstat (limited to 'src/tests/JIT/HardwareIntrinsics/X86/Sse41/DotProduct.cs')
-rw-r--r-- | src/tests/JIT/HardwareIntrinsics/X86/Sse41/DotProduct.cs | 53 |
1 files changed, 8 insertions, 45 deletions
diff --git a/src/tests/JIT/HardwareIntrinsics/X86/Sse41/DotProduct.cs b/src/tests/JIT/HardwareIntrinsics/X86/Sse41/DotProduct.cs index 9e231f4fdac..41c9117267b 100644 --- a/src/tests/JIT/HardwareIntrinsics/X86/Sse41/DotProduct.cs +++ b/src/tests/JIT/HardwareIntrinsics/X86/Sse41/DotProduct.cs @@ -8,21 +8,20 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Intrinsics.X86; using System.Runtime.Intrinsics; +using Xunit; -namespace IntelHardwareIntrinsicTest +namespace IntelHardwareIntrinsicTest._Sse41 { - class Program + public partial class Program { - const int Pass = 100; - const int Fail = 0; - - static unsafe int Main(string[] args) + [Fact] + public static unsafe void DotProduct() { int testResult = Pass; if (Sse41.IsSupported) { - using (TestTable<float> floatTable = new TestTable<float>(new float[4] { 1, -5, 100, 0 }, new float[4] { 22, -1, -50, 0 }, new float[4])) + using (TestTable_2Input<float> floatTable = new TestTable_2Input<float>(new float[4] { 1, -5, 100, 0 }, new float[4] { 22, -1, -50, 0 }, new float[4])) { var vf1 = Unsafe.Read<Vector128<float>>(floatTable.inArray1Ptr); var vf2 = Unsafe.Read<Vector128<float>>(floatTable.inArray2Ptr); @@ -103,7 +102,7 @@ namespace IntelHardwareIntrinsicTest } } - using (TestTable<double> doubleTable = new TestTable<double>(new double[2] { 1, -5 }, new double[2] { 22, -1 }, new double[2])) + using (TestTable_2Input<double> doubleTable = new TestTable_2Input<double>(new double[2] { 1, -5 }, new double[2] { 22, -1 }, new double[2])) { var vf1 = Unsafe.Read<Vector128<double>>(doubleTable.inArray1Ptr); var vf2 = Unsafe.Read<Vector128<double>>(doubleTable.inArray2Ptr); @@ -182,43 +181,7 @@ namespace IntelHardwareIntrinsicTest } } - return testResult; - } - - public unsafe struct TestTable<T> : IDisposable where T : struct - { - public T[] inArray1; - public T[] inArray2; - public T[] outArray; - - public void* inArray1Ptr => inHandle1.AddrOfPinnedObject().ToPointer(); - public void* inArray2Ptr => inHandle2.AddrOfPinnedObject().ToPointer(); - public void* outArrayPtr => outHandle.AddrOfPinnedObject().ToPointer(); - - GCHandle inHandle1; - GCHandle inHandle2; - GCHandle outHandle; - public TestTable(T[] a, T[] b, T[] c) - { - this.inArray1 = a; - this.inArray2 = b; - this.outArray = c; - - inHandle1 = GCHandle.Alloc(inArray1, GCHandleType.Pinned); - inHandle2 = GCHandle.Alloc(inArray2, GCHandleType.Pinned); - outHandle = GCHandle.Alloc(outArray, GCHandleType.Pinned); - } - public bool CheckResult(Func<T[], T[], T[], bool> check) - { - return check(inArray1, inArray2, outArray); - } - - public void Dispose() - { - inHandle1.Free(); - inHandle2.Free(); - outHandle.Free(); - } + Assert.Equal(Pass, testResult); } } } |