summaryrefslogtreecommitdiff
path: root/tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.UInt32.cs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.UInt32.cs')
-rw-r--r--tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.UInt32.cs28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.UInt32.cs b/tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.UInt32.cs
index 2fd078610b..54ecb60936 100644
--- a/tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.UInt32.cs
+++ b/tests/src/JIT/HardwareIntrinsics/X86/Avx2/ConvertToVector256Int64.UInt32.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(
+ (UInt32*)(_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(UInt32*) })
+ .Invoke(null, new object[] {
+ Pointer.Box(_dataTable.inArrayPtr, typeof(UInt32*))
+ });
+
+ 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<UInt32>) })