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

◆ NarrowFourUtf16CharsToAsciiAndWriteToBuffer()

static void System.Text.ASCIIUtility.NarrowFourUtf16CharsToAsciiAndWriteToBuffer ( ref byte outputBuffer,
ulong value )
inlinestaticprivate

Definition at line 552 of file ASCIIUtility.cs.

553 {
554 if (Sse2.X64.IsSupported)
555 {
557 Vector128<uint> value2 = Sse2.PackUnsignedSaturate(vector, vector).AsUInt32();
558 Unsafe.WriteUnaligned(ref outputBuffer, Sse2.ConvertToUInt32(value2));
559 return;
560 }
562 {
563 }
564 _ = BitConverter.IsLittleEndian;
565 outputBuffer = (byte)value;
566 value >>= 16;
567 Unsafe.Add(ref outputBuffer, 1) = (byte)value;
568 value >>= 16;
569 Unsafe.Add(ref outputBuffer, 2) = (byte)value;
570 value >>= 16;
571 Unsafe.Add(ref outputBuffer, 3) = (byte)value;
572 }
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.Arm.AdvSimd.IsSupported, System.Runtime.Intrinsics.X86.Sse2.X64.IsSupported, System.Runtime.Intrinsics.X86.Sse2.PackUnsignedSaturate(), and System.value.

Referenced by System.Text.ASCIIUtility.NarrowUtf16ToAscii().