diff options
Diffstat (limited to 'src/tests/JIT/HardwareIntrinsics/X86/Avx1/HorizontalSubtract.cs')
-rw-r--r-- | src/tests/JIT/HardwareIntrinsics/X86/Avx1/HorizontalSubtract.cs | 55 |
1 files changed, 8 insertions, 47 deletions
diff --git a/src/tests/JIT/HardwareIntrinsics/X86/Avx1/HorizontalSubtract.cs b/src/tests/JIT/HardwareIntrinsics/X86/Avx1/HorizontalSubtract.cs index bcb4013ef65..8ece439415d 100644 --- a/src/tests/JIT/HardwareIntrinsics/X86/Avx1/HorizontalSubtract.cs +++ b/src/tests/JIT/HardwareIntrinsics/X86/Avx1/HorizontalSubtract.cs @@ -7,22 +7,21 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Intrinsics.X86; using System.Runtime.Intrinsics; +using Xunit; -namespace IntelHardwareIntrinsicTest +namespace IntelHardwareIntrinsicTest.Avx1 { - 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 HorizontalSubtract() { int testResult = Pass; if (Avx.IsSupported) { - using (TestTable<float> floatTable = new TestTable<float>(new float[8] {22, -1, -50, 0, 22, -1, -50, 0 }, new float[8] { 22, -1, -50, 0, 22, -1, -50, 0 }, new float[8])) - using (TestTable<double> doubleTable = new TestTable<double>(new double[4] { 1, -5, 100, 0 }, new double[4] { 22, -1, -50, 0 }, new double[4])) + using (TestTable_2Input<float> floatTable = new TestTable_2Input<float>(new float[8] {22, -1, -50, 0, 22, -1, -50, 0 }, new float[8] { 22, -1, -50, 0, 22, -1, -50, 0 }, new float[8])) + using (TestTable_2Input<double> doubleTable = new TestTable_2Input<double>(new double[4] { 1, -5, 100, 0 }, new double[4] { 22, -1, -50, 0 }, new double[4])) { var vf1 = Unsafe.Read<Vector256<float>>(floatTable.inArray1Ptr); @@ -65,45 +64,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); } - } } |