diff options
Diffstat (limited to 'tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.Int16.cs')
-rw-r--r-- | tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.Int16.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.Int16.cs b/tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.Int16.cs index 092610d61d..aff546dff9 100644 --- a/tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.Int16.cs +++ b/tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.Int16.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 (Avx.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 (Avx.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 = Avx2.ConvertToVector256Int64( + (Int16*)(_dataTable.inArrayPtr) + ); + + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + public void RunBasicScenario_Load() { var result = Avx2.ConvertToVector256Int64( @@ -164,6 +181,17 @@ namespace JIT.HardwareIntrinsics.X86 ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); } + public void RunReflectionScenario_Ptr() + { + var result = typeof(Avx2).GetMethod(nameof(Avx2.ConvertToVector256Int64), new Type[] { typeof(Int16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, (Vector256<Int64>)(result)); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + public void RunReflectionScenario_Load() { var result = typeof(Avx2).GetMethod(nameof(Avx2.ConvertToVector256Int64), new Type[] { typeof(Vector128<Int16>) }) |