using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; namespace StgSharp.Math { [StructLayout(LayoutKind.Sequential)] internal struct M128ptrCache { internal ulong ptr0; internal ulong ptr1; internal ulong ptr2; internal ulong ptr3; internal ulong ptr4; internal ulong ptr5; internal ulong ptr6; internal ulong ptr7; public override string ToString() { return $"{ptr0}\t" + $"{ptr1}\t" + $"{ptr2}\t" + $"{ptr3}\t" + $"{ptr4}\t" + $"{ptr5}\t" + $"{ptr6}\t" + $"{ptr7}\t" + $""; } } [StructLayout(LayoutKind.Explicit, Size = 16, Pack = 16)] internal struct M128 { [FieldOffset(0)] internal float single_0; [FieldOffset(4)] internal float single_1; [FieldOffset(8)] internal float single_2; [FieldOffset(12)] internal float single_3; [FieldOffset(0)] internal int int32_0; [FieldOffset(4)] internal int int32_1; [FieldOffset(8)] internal int int32_2; [FieldOffset(12)] internal int int32_3; [FieldOffset(0)] internal long int64_0; [FieldOffset(8)] internal long int64_1; [FieldOffset(0)] internal long double_0; [FieldOffset(8)] internal long double_1; internal M128(float x,float y,float z,float w) { single_0 = x; single_1 = y; single_2 = z; single_3 = w; } public override string ToString() { return $"{single_0}\t{single_1}\t{single_2}\t{single_3}"; } } }