Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ NarrowFourUtf16CharsToLatin1AndWriteToBuffer()

static void System.Text.Latin1Utility.NarrowFourUtf16CharsToLatin1AndWriteToBuffer ( ref byte outputBuffer,
ulong value )
inlinestaticprivate

Definition at line 600 of file Latin1Utility.cs.

601 {
602 if (Sse2.X64.IsSupported)
603 {
605 Vector128<uint> value2 = Sse2.PackUnsignedSaturate(vector, vector).AsUInt32();
606 Unsafe.WriteUnaligned(ref outputBuffer, Sse2.ConvertToUInt32(value2));
607 return;
608 }
609 _ = BitConverter.IsLittleEndian;
610 outputBuffer = (byte)value;
611 value >>= 16;
612 Unsafe.Add(ref outputBuffer, 1) = (byte)value;
613 value >>= 16;
614 Unsafe.Add(ref outputBuffer, 2) = (byte)value;
615 value >>= 16;
616 Unsafe.Add(ref outputBuffer, 3) = (byte)value;
617 }
static Vector128< ulong > ConvertScalarToVector128UInt64(ulong value)
Definition Sse2.cs:39
static uint ConvertToUInt32(Vector128< uint > value)
Definition Sse2.cs:512
static Vector128< byte > PackUnsignedSaturate(Vector128< short > left, Vector128< short > right)
Definition Sse2.cs:892

References System.Runtime.Intrinsics.X86.Sse2.X64.ConvertScalarToVector128UInt64(), System.Runtime.Intrinsics.X86.Sse2.ConvertToUInt32(), System.BitConverter.IsLittleEndian, System.Runtime.Intrinsics.X86.Sse2.X64.IsSupported, System.Runtime.Intrinsics.X86.Sse2.PackUnsignedSaturate(), and System.value.

Referenced by System.Text.Latin1Utility.NarrowUtf16ToLatin1().