diff options
Diffstat (limited to 'tests/src/JIT/HardwareIntrinsics/X86/Sse41/Insert.SByte.1.cs')
-rw-r--r-- | tests/src/JIT/HardwareIntrinsics/X86/Sse41/Insert.SByte.1.cs | 101 |
1 files changed, 59 insertions, 42 deletions
diff --git a/tests/src/JIT/HardwareIntrinsics/X86/Sse41/Insert.SByte.1.cs b/tests/src/JIT/HardwareIntrinsics/X86/Sse41/Insert.SByte.1.cs index 9bfebc4926..b9f69e9e66 100644 --- a/tests/src/JIT/HardwareIntrinsics/X86/Sse41/Insert.SByte.1.cs +++ b/tests/src/JIT/HardwareIntrinsics/X86/Sse41/Insert.SByte.1.cs @@ -26,7 +26,7 @@ namespace JIT.HardwareIntrinsics.X86 if (test.IsSupported) { // Validates basic functionality works, using Unsafe.Read - test.RunBasicScenario_UnsafeRead(); + test.RunBasicScenario(); if (Sse2.IsSupported) { @@ -38,7 +38,7 @@ namespace JIT.HardwareIntrinsics.X86 } // Validates calling via reflection works, using Unsafe.Read - test.RunReflectionScenario_UnsafeRead(); + test.RunReflectionScenario(); if (Sse2.IsSupported) { @@ -53,7 +53,7 @@ namespace JIT.HardwareIntrinsics.X86 test.RunClsVarScenario(); // Validates passing a local works, using Unsafe.Read - test.RunLclVarScenario_UnsafeRead(); + test.RunLclVarScenario(); if (Sse2.IsSupported) { @@ -94,6 +94,7 @@ namespace JIT.HardwareIntrinsics.X86 private struct TestStruct { public Vector128<SByte> _fld; + public SByte _scalarFldData; public static TestStruct Create() { @@ -102,15 +103,17 @@ namespace JIT.HardwareIntrinsics.X86 for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSByte(); } Unsafe.CopyBlockUnaligned(ref Unsafe.As<Vector128<SByte>, byte>(ref testStruct._fld), ref Unsafe.As<SByte, byte>(ref _data[0]), (uint)Unsafe.SizeOf<Vector128<SByte>>()); + testStruct._scalarFldData = (sbyte)2; + return testStruct; } public void RunStructFldScenario(InsertScalarTest__InsertSByte1 testClass) { - var result = Sse41.Insert(_fld, (sbyte)2, 1); + var result = Sse41.Insert(_fld, _scalarFldData, 1); Unsafe.Write(testClass._dataTable.outArrayPtr, result); - testClass.ValidateResult(_fld, testClass._dataTable.outArrayPtr); + testClass.ValidateResult(_fld, _scalarFldData, testClass._dataTable.outArrayPtr); } } @@ -120,10 +123,12 @@ namespace JIT.HardwareIntrinsics.X86 private static readonly int RetElementCount = Unsafe.SizeOf<Vector128<SByte>>() / sizeof(SByte); private static SByte[] _data = new SByte[Op1ElementCount]; + private static SByte _scalarClsData = (sbyte)2; private static Vector128<SByte> _clsVar; private Vector128<SByte> _fld; + private SByte _scalarFldData = (sbyte)2; private SimpleUnaryOpTest__DataTable<SByte, SByte> _dataTable; @@ -148,9 +153,9 @@ namespace JIT.HardwareIntrinsics.X86 public bool Succeeded { get; set; } - public void RunBasicScenario_UnsafeRead() + public void RunBasicScenario() { - TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario_UnsafeRead)); + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); var result = Sse41.Insert( Unsafe.Read<Vector128<SByte>>(_dataTable.inArrayPtr), @@ -159,40 +164,46 @@ namespace JIT.HardwareIntrinsics.X86 ); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + ValidateResult(_dataTable.inArrayPtr, (sbyte)2, _dataTable.outArrayPtr); } - public void RunBasicScenario_Load() + public unsafe void RunBasicScenario_Load() { TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario_Load)); + SByte localData = (sbyte)2; + SByte* ptr = &localData; + var result = Sse41.Insert( Sse2.LoadVector128((SByte*)(_dataTable.inArrayPtr)), - (sbyte)2, + *ptr, 1 ); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + ValidateResult(_dataTable.inArrayPtr, *ptr, _dataTable.outArrayPtr); } - public void RunBasicScenario_LoadAligned() + public unsafe void RunBasicScenario_LoadAligned() { TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario_LoadAligned)); + SByte localData = (sbyte)2; + SByte* ptr = &localData; + var result = Sse41.Insert( Sse2.LoadAlignedVector128((SByte*)(_dataTable.inArrayPtr)), - (sbyte)2, + *ptr, 1 ); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + ValidateResult(_dataTable.inArrayPtr, *ptr, _dataTable.outArrayPtr); } - public void RunReflectionScenario_UnsafeRead() + public void RunReflectionScenario() { - TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario_UnsafeRead)); + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); var result = typeof(Sse41).GetMethod(nameof(Sse41.Insert), new Type[] { typeof(Vector128<SByte>), typeof(SByte), typeof(byte) }) .Invoke(null, new object[] { @@ -202,7 +213,7 @@ namespace JIT.HardwareIntrinsics.X86 }); Unsafe.Write(_dataTable.outArrayPtr, (Vector128<SByte>)(result)); - ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + ValidateResult(_dataTable.inArrayPtr, (sbyte)2, _dataTable.outArrayPtr); } public void RunReflectionScenario_Load() @@ -217,7 +228,7 @@ namespace JIT.HardwareIntrinsics.X86 }); Unsafe.Write(_dataTable.outArrayPtr, (Vector128<SByte>)(result)); - ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + ValidateResult(_dataTable.inArrayPtr, (sbyte)2, _dataTable.outArrayPtr); } public void RunReflectionScenario_LoadAligned() @@ -232,7 +243,7 @@ namespace JIT.HardwareIntrinsics.X86 }); Unsafe.Write(_dataTable.outArrayPtr, (Vector128<SByte>)(result)); - ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + ValidateResult(_dataTable.inArrayPtr, (sbyte)2, _dataTable.outArrayPtr); } public void RunClsVarScenario() @@ -241,45 +252,51 @@ namespace JIT.HardwareIntrinsics.X86 var result = Sse41.Insert( _clsVar, - (sbyte)2, + _scalarClsData, 1 ); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(_clsVar, _dataTable.outArrayPtr); + ValidateResult(_clsVar, _scalarClsData,_dataTable.outArrayPtr); } - public void RunLclVarScenario_UnsafeRead() + public void RunLclVarScenario() { - TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario_UnsafeRead)); + TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario)); + + SByte localData = (sbyte)2; var firstOp = Unsafe.Read<Vector128<SByte>>(_dataTable.inArrayPtr); - var result = Sse41.Insert(firstOp, (sbyte)2, 1); + var result = Sse41.Insert(firstOp, localData, 1); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(firstOp, _dataTable.outArrayPtr); + ValidateResult(firstOp, localData, _dataTable.outArrayPtr); } public void RunLclVarScenario_Load() { TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario_Load)); + SByte localData = (sbyte)2; + var firstOp = Sse2.LoadVector128((SByte*)(_dataTable.inArrayPtr)); - var result = Sse41.Insert(firstOp, (sbyte)2, 1); + var result = Sse41.Insert(firstOp, localData, 1); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(firstOp, _dataTable.outArrayPtr); + ValidateResult(firstOp, localData, _dataTable.outArrayPtr); } public void RunLclVarScenario_LoadAligned() { TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario_LoadAligned)); + SByte localData = (sbyte)2; + var firstOp = Sse2.LoadAlignedVector128((SByte*)(_dataTable.inArrayPtr)); - var result = Sse41.Insert(firstOp, (sbyte)2, 1); + var result = Sse41.Insert(firstOp, localData, 1); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(firstOp, _dataTable.outArrayPtr); + ValidateResult(firstOp, localData, _dataTable.outArrayPtr); } public void RunClassLclFldScenario() @@ -287,20 +304,20 @@ namespace JIT.HardwareIntrinsics.X86 TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); var test = new InsertScalarTest__InsertSByte1(); - var result = Sse41.Insert(test._fld, (sbyte)2, 1); + var result = Sse41.Insert(test._fld, test._scalarFldData, 1); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(test._fld, _dataTable.outArrayPtr); + ValidateResult(test._fld, test._scalarFldData, _dataTable.outArrayPtr); } public void RunClassFldScenario() { TestLibrary.TestFramework.BeginScenario(nameof(RunClassFldScenario)); - var result = Sse41.Insert(_fld, (sbyte)2, 1); + var result = Sse41.Insert(_fld, _scalarFldData, 1); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(_fld, _dataTable.outArrayPtr); + ValidateResult(_fld, _scalarFldData, _dataTable.outArrayPtr); } public void RunStructLclFldScenario() @@ -308,10 +325,10 @@ namespace JIT.HardwareIntrinsics.X86 TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); var test = TestStruct.Create(); - var result = Sse41.Insert(test._fld, (sbyte)2, 1); + var result = Sse41.Insert(test._fld, test._scalarFldData, 1); Unsafe.Write(_dataTable.outArrayPtr, result); - ValidateResult(test._fld, _dataTable.outArrayPtr); + ValidateResult(test._fld, test._scalarFldData, _dataTable.outArrayPtr); } public void RunStructFldScenario() @@ -330,7 +347,7 @@ namespace JIT.HardwareIntrinsics.X86 try { - RunBasicScenario_UnsafeRead(); + RunBasicScenario(); } catch (PlatformNotSupportedException) { @@ -343,7 +360,7 @@ namespace JIT.HardwareIntrinsics.X86 } } - private void ValidateResult(Vector128<SByte> firstOp, void* result, [CallerMemberName] string method = "") + private void ValidateResult(Vector128<SByte> firstOp, SByte scalarData, void* result, [CallerMemberName] string method = "") { SByte[] inArray = new SByte[Op1ElementCount]; SByte[] outArray = new SByte[RetElementCount]; @@ -351,10 +368,10 @@ namespace JIT.HardwareIntrinsics.X86 Unsafe.WriteUnaligned(ref Unsafe.As<SByte, byte>(ref inArray[0]), firstOp); Unsafe.CopyBlockUnaligned(ref Unsafe.As<SByte, byte>(ref outArray[0]), ref Unsafe.AsRef<byte>(result), (uint)Unsafe.SizeOf<Vector128<SByte>>()); - ValidateResult(inArray, outArray, method); + ValidateResult(inArray, scalarData, outArray, method); } - private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + private void ValidateResult(void* firstOp, SByte scalarData, void* result, [CallerMemberName] string method = "") { SByte[] inArray = new SByte[Op1ElementCount]; SByte[] outArray = new SByte[RetElementCount]; @@ -362,16 +379,16 @@ namespace JIT.HardwareIntrinsics.X86 Unsafe.CopyBlockUnaligned(ref Unsafe.As<SByte, byte>(ref inArray[0]), ref Unsafe.AsRef<byte>(firstOp), (uint)Unsafe.SizeOf<Vector128<SByte>>()); Unsafe.CopyBlockUnaligned(ref Unsafe.As<SByte, byte>(ref outArray[0]), ref Unsafe.AsRef<byte>(result), (uint)Unsafe.SizeOf<Vector128<SByte>>()); - ValidateResult(inArray, outArray, method); + ValidateResult(inArray, scalarData, outArray, method); } - private void ValidateResult(SByte[] firstOp, SByte[] result, [CallerMemberName] string method = "") + private void ValidateResult(SByte[] firstOp, SByte scalarData, SByte[] result, [CallerMemberName] string method = "") { bool succeeded = true; for (var i = 0; i < RetElementCount; i++) { - if ((i == 1 ? result[i] != 2 : result[i] != firstOp[i])) + if ((i == 1 ? result[i] != scalarData : result[i] != firstOp[i])) { succeeded = false; break; |