summary refs log tree commit diff
path: root/crypto/src/runtime/intrinsics/Vector.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/runtime/intrinsics/Vector.cs')
-rw-r--r--crypto/src/runtime/intrinsics/Vector.cs24
1 files changed, 24 insertions, 0 deletions
diff --git a/crypto/src/runtime/intrinsics/Vector.cs b/crypto/src/runtime/intrinsics/Vector.cs
new file mode 100644
index 000000000..eff52ef44
--- /dev/null
+++ b/crypto/src/runtime/intrinsics/Vector.cs
@@ -0,0 +1,24 @@
+#if NETCOREAPP3_0_OR_GREATER
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.Intrinsics;
+#endif
+
+namespace Org.BouncyCastle.Runtime.Intrinsics
+{
+    internal static class Vector
+    {
+#if NETCOREAPP3_0_OR_GREATER
+        internal static bool IsPacked =>
+            Unsafe.SizeOf<Vector64<byte>>() == 8 &&
+            Unsafe.SizeOf<Vector128<byte>>() == 16 &&
+            Unsafe.SizeOf<Vector256<byte>>() == 32;
+
+        internal static bool IsPackedLittleEndian => IsPacked && BitConverter.IsLittleEndian;
+#else
+        internal static bool IsPacked => false;
+
+        internal static bool IsPackedLittleEndian => false;
+#endif
+    }
+}