diff --git a/src/ImageSharp/Common/Tuples/Octet{T}.cs b/src/ImageSharp/Common/Tuples/Octet{T}.cs
new file mode 100644
index 0000000000..9db28e3f97
--- /dev/null
+++ b/src/ImageSharp/Common/Tuples/Octet{T}.cs
@@ -0,0 +1,74 @@
+// Copyright (c) Six Labors and contributors.
+// Licensed under the Apache License, Version 2.0.
+
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using SixLabors.ImageSharp.Tuples;
+
+namespace SixLabors.ImageSharp.Common.Tuples
+{
+ ///
+ /// Contains 8 element value tuples of various types.
+ ///
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct Octet
+ where T : unmanaged
+ {
+ public T V0;
+ public T V1;
+ public T V2;
+ public T V3;
+ public T V4;
+ public T V5;
+ public T V6;
+ public T V7;
+
+ ///
+ public override readonly string ToString()
+ {
+ return $"{nameof(Octet)}<{typeof(T)}>({this.V0},{this.V1},{this.V2},{this.V3},{this.V4},{this.V5},{this.V6},{this.V7})";
+ }
+ }
+
+ ///
+ /// Extension methods for the type.
+ ///
+ internal static class OctetExtensions
+ {
+ ///
+ /// Loads the fields in a target of from one of type.
+ ///
+ /// The target of instance.
+ /// The source of instance.
+ [MethodImpl(InliningOptions.ShortMethod)]
+ public static void LoadFrom(ref this Octet destination, ref Octet source)
+ {
+ destination.V0 = source.V0;
+ destination.V1 = source.V1;
+ destination.V2 = source.V2;
+ destination.V3 = source.V3;
+ destination.V4 = source.V4;
+ destination.V5 = source.V5;
+ destination.V6 = source.V6;
+ destination.V7 = source.V7;
+ }
+
+ ///
+ /// Loads the fields in a target of from one of type.
+ ///
+ /// The target of instance.
+ /// The source of instance.
+ [MethodImpl(InliningOptions.ShortMethod)]
+ public static void LoadFrom(ref this Octet destination, ref Octet source)
+ {
+ destination.V0 = (byte)source.V0;
+ destination.V1 = (byte)source.V1;
+ destination.V2 = (byte)source.V2;
+ destination.V3 = (byte)source.V3;
+ destination.V4 = (byte)source.V4;
+ destination.V5 = (byte)source.V5;
+ destination.V6 = (byte)source.V6;
+ destination.V7 = (byte)source.V7;
+ }
+ }
+}