diff options
Diffstat (limited to 'tests/src/JIT/HardwareIntrinsics/X86/Sse41/ConvertToVector128Int64.UInt16.cs')
-rw-r--r-- | tests/src/JIT/HardwareIntrinsics/X86/Sse41/ConvertToVector128Int64.UInt16.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/src/JIT/HardwareIntrinsics/X86/Sse41/ConvertToVector128Int64.UInt16.cs b/tests/src/JIT/HardwareIntrinsics/X86/Sse41/ConvertToVector128Int64.UInt16.cs index 1ea8e06a20..f81b199dce 100644 --- a/tests/src/JIT/HardwareIntrinsics/X86/Sse41/ConvertToVector128Int64.UInt16.cs +++ b/tests/src/JIT/HardwareIntrinsics/X86/Sse41/ConvertToVector128Int64.UInt16.cs @@ -10,6 +10,7 @@ ******************************************************************************/ using System; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Intrinsics; @@ -28,6 +29,9 @@ namespace JIT.HardwareIntrinsics.X86 // Validates basic functionality works, using Unsafe.Read test.RunBasicScenario_UnsafeRead(); + // Validates basic functionality works, using the pointer overload + test.RunBasicScenario_Ptr(); + if (Sse2.IsSupported) { // Validates basic functionality works, using Load @@ -40,6 +44,9 @@ namespace JIT.HardwareIntrinsics.X86 // Validates calling via reflection works, using Unsafe.Read test.RunReflectionScenario_UnsafeRead(); + // Validates calling via reflection works, using the pointer overload + test.RunReflectionScenario_Ptr(); + if (Sse2.IsSupported) { // Validates calling via reflection works, using Load @@ -133,6 +140,16 @@ namespace JIT.HardwareIntrinsics.X86 ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); } + public void RunBasicScenario_Ptr() + { + var result = Sse41.ConvertToVector128Int64( + (UInt16*)(_dataTable.inArrayPtr) + ); + + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + public void RunBasicScenario_Load() { var result = Sse41.ConvertToVector128Int64( @@ -164,6 +181,17 @@ namespace JIT.HardwareIntrinsics.X86 ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); } + public void RunReflectionScenario_Ptr() + { + var result = typeof(Sse41).GetMethod(nameof(Sse41.ConvertToVector128Int64), new Type[] { typeof(UInt16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, (Vector128<Int64>)(result)); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + public void RunReflectionScenario_Load() { var result = typeof(Sse41).GetMethod(nameof(Sse41.ConvertToVector128Int64), new Type[] { typeof(Vector128<UInt16>) }) |