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

◆ WidenLatin1ToUtf16_Fallback()

static unsafe void System.Text.Latin1Utility.WidenLatin1ToUtf16_Fallback ( byte * pLatin1Buffer,
char * pUtf16Buffer,
nuint elementCount )
inlinestaticprivate

Definition at line 548 of file Latin1Utility.cs.

549 {
550 nuint num = 0u;
552 {
553 uint count = (uint)Vector<byte>.Count;
554 if (elementCount >= count)
555 {
556 nuint num2 = elementCount - count;
557 do
558 {
559 Vector<byte> value = Unsafe.ReadUnaligned<Vector<byte>>(pLatin1Buffer + num);
560 Vector.Widen(Vector.AsVectorByte(value), out var low, out var high);
561 Unsafe.WriteUnaligned(pUtf16Buffer + num, low);
562 Unsafe.WriteUnaligned(pUtf16Buffer + num + Vector<ushort>.Count, high);
563 num += count;
564 }
565 while (num <= num2);
566 }
567 }
568 for (; num < elementCount; num++)
569 {
570 pUtf16Buffer[num] = (char)pLatin1Buffer[num];
571 }
572 }
static bool IsHardwareAccelerated
Definition Vector.cs:14
static unsafe void Widen(Vector< byte > source, out Vector< ushort > low, out Vector< ushort > high)
Definition Vector.cs:493

References System.count, System.Numerics.Vector< T >.IsHardwareAccelerated, System.value, and System.Numerics.Vector< T >.Widen().

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