Skip to content

Commit fab6ef3

Browse files
committed
Use AdvSimd.Arm64.LoadPairVector128 in OptimizedInboxTextEncoder.AdvSimd64.cs
1 parent 0d45572 commit fab6ef3

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/OptimizedInboxTextEncoder.AdvSimd64.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,10 @@ private unsafe nuint GetIndexOfFirstCharToEncodeAdvSimd64(char* pData, nuint len
166166
// Read 16 chars at a time into 2x 128-bit vectors, then pack into a single 128-bit vector.
167167
// We turn 16 chars (256 bits) into 16 nibbles (64 bits) during this process.
168168

169+
(Vector128<short> lowerVector, Vector128<short> upperVector) = AdvSimd.Arm64.LoadPairVector128((/* unaligned */ short*)(pData + i));
169170
Vector128<byte> packed = AdvSimd.ExtractNarrowingSaturateUnsignedUpper(
170-
AdvSimd.ExtractNarrowingSaturateUnsignedLower(AdvSimd.LoadVector128((/* unaligned */ short*)(pData + i))),
171-
AdvSimd.LoadVector128((/* unaligned */ short*)(pData + 8 + i)));
171+
AdvSimd.ExtractNarrowingSaturateUnsignedLower(lowerVector),
172+
upperVector);
172173
var allowedCodePointsShuffled = AdvSimd.Arm64.VectorTableLookup(allowedCodePoints, AdvSimd.And(packed, vec0xF));
173174
var vecPowersOfTwoShuffled = AdvSimd.Arm64.VectorTableLookup(vecPowersOfTwo, AdvSimd.ShiftRightArithmetic(packed.AsSByte(), 4).AsByte());
174175
var result = AdvSimd.CompareTest(allowedCodePointsShuffled, vecPowersOfTwoShuffled);

0 commit comments

Comments
 (0)