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

◆ WidenFourAsciiBytesToUtf16AndWriteToBuffer()

static void System.Text.ASCIIUtility.WidenFourAsciiBytesToUtf16AndWriteToBuffer ( ref char outputBuffer,
uint value )
inlinestaticpackage

Definition at line 956 of file ASCIIUtility.cs.

957 {
958 if (Sse2.X64.IsSupported)
959 {
961 Vector128<ulong> value2 = Sse2.UnpackLow(left, Vector128<byte>.Zero).AsUInt64();
962 Unsafe.WriteUnaligned(ref Unsafe.As<char, byte>(ref outputBuffer), Sse2.X64.ConvertToUInt64(value2));
963 return;
964 }
966 {
967 }
968 _ = BitConverter.IsLittleEndian;
969 outputBuffer = (char)(byte)value;
970 value >>= 8;
971 Unsafe.Add(ref outputBuffer, 1) = (char)(byte)value;
972 value >>= 8;
973 Unsafe.Add(ref outputBuffer, 2) = (char)(byte)value;
974 value >>= 8;
975 Unsafe.Add(ref outputBuffer, 3) = (char)value;
976 }
static ulong ConvertToUInt64(Vector128< ulong > value)
Definition Sse2.cs:24
static Vector128< byte > UnpackLow(Vector128< byte > left, Vector128< byte > right)
Definition Sse2.cs:1467
static Vector128< uint > ConvertScalarToVector128UInt32(uint value)
Definition Sse2.cs:537

References System.Runtime.Intrinsics.X86.Sse2.ConvertScalarToVector128UInt32(), System.Runtime.Intrinsics.X86.Sse2.X64.ConvertToUInt64(), System.BitConverter.IsLittleEndian, System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.IsSupported, System.Runtime.Intrinsics.X86.Sse2.X64.IsSupported, System.Runtime.Intrinsics.X86.Sse2.UnpackLow(), and System.value.

Referenced by System.Text.Unicode.Utf8Utility.TranscodeToUtf16(), and System.Text.ASCIIUtility.WidenAsciiToUtf16().