src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Helper\Base64DecoderHelper.cs (36)
80if (AdvSimd.Arm64.IsSupported && (end >= src))
91if ((Ssse3.IsSupported || AdvSimd.Arm64.IsSupported) && BitConverter.IsLittleEndian && (end >= src))
970[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
973Debug.Assert((Ssse3.IsSupported || AdvSimd.Arm64.IsSupported) && BitConverter.IsLittleEndian);
981return AdvSimd.Arm64.VectorTableLookup(left, right & mask8F);
986[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
1061Vector128<byte> decOne1 = AdvSimd.Arm64.VectorTableLookup(decLutOne, str1);
1062Vector128<byte> decOne2 = AdvSimd.Arm64.VectorTableLookup(decLutOne, str2);
1063Vector128<byte> decOne3 = AdvSimd.Arm64.VectorTableLookup(decLutOne, str3);
1064Vector128<byte> decOne4 = AdvSimd.Arm64.VectorTableLookup(decLutOne, str4);
1075Vector128<byte> decTwo1 = AdvSimd.SubtractSaturate(str1, offset);
1076Vector128<byte> decTwo2 = AdvSimd.SubtractSaturate(str2, offset);
1077Vector128<byte> decTwo3 = AdvSimd.SubtractSaturate(str3, offset);
1078Vector128<byte> decTwo4 = AdvSimd.SubtractSaturate(str4, offset);
1081decTwo1 = AdvSimd.Arm64.VectorTableLookupExtension(decTwo1, decLutTwo, decTwo1);
1082decTwo2 = AdvSimd.Arm64.VectorTableLookupExtension(decTwo2, decLutTwo, decTwo2);
1083decTwo3 = AdvSimd.Arm64.VectorTableLookupExtension(decTwo3, decLutTwo, decTwo3);
1084decTwo4 = AdvSimd.Arm64.VectorTableLookupExtension(decTwo4, decLutTwo, decTwo4);
1115AdvSimd.Arm64.StoreVectorAndZip(dest, (res1, res2, res3));
1127[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
1134Debug.Assert((Ssse3.IsSupported || AdvSimd.Arm64.IsSupported) && BitConverter.IsLittleEndian);
1249else if (AdvSimd.Arm64.IsSupported)
1251Vector128<ushort> evens = AdvSimd.ShiftLeftLogicalWideningLower(AdvSimd.Arm64.UnzipEven(str, one).GetLower(), 6);
1252Vector128<ushort> odds = AdvSimd.Arm64.TransposeOdd(str, Vector128<byte>.Zero).AsUInt16();
1271else if (AdvSimd.Arm64.IsSupported)
1273Vector128<int> ievens = AdvSimd.ShiftLeftLogicalWideningLower(AdvSimd.Arm64.UnzipEven(merge_ab_and_bc, one.AsInt16()).GetLower(), 12);
1274Vector128<int> iodds = AdvSimd.Arm64.TransposeOdd(merge_ab_and_bc, Vector128<short>.Zero).AsInt32();
1422[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
1515[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
1521(str1, str2, str3, str4) = AdvSimd.Arm64.Load4xVector128AndUnzip(src);
1649[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
1715[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
1721var (s11, s12, s21, s22) = AdvSimd.Arm64.Load4xVector128AndUnzip(src);
1722var (s31, s32, s41, s42) = AdvSimd.Arm64.Load4xVector128AndUnzip(src + 32);
src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Helper\Base64EncoderHelper.cs (25)
65if (AdvSimd.Arm64.IsSupported && (end >= src))
74if ((Ssse3.IsSupported || AdvSimd.Arm64.IsSupported) && BitConverter.IsLittleEndian && (end >= src))
385[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
411(str1, str2, str3) = AdvSimd.Arm64.Load3xVector128AndUnzip(src);
417res2 = AdvSimd.ShiftLeftAndInsert(res2, str1, 4);
418res3 = AdvSimd.ShiftLeftAndInsert(res3, str2, 2);
421res2 &= AdvSimd.DuplicateToVector128((byte)0x3F);
422res3 &= AdvSimd.DuplicateToVector128((byte)0x3F);
423res4 = str3 & AdvSimd.DuplicateToVector128((byte)0x3F);
428res1 = AdvSimd.Arm64.VectorTableLookup((tblEnc1, tblEnc2, tblEnc3, tblEnc4), res1);
429res2 = AdvSimd.Arm64.VectorTableLookup((tblEnc1, tblEnc2, tblEnc3, tblEnc4), res2);
430res3 = AdvSimd.Arm64.VectorTableLookup((tblEnc1, tblEnc2, tblEnc3, tblEnc4), res3);
431res4 = AdvSimd.Arm64.VectorTableLookup((tblEnc1, tblEnc2, tblEnc3, tblEnc4), res4);
446[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
505else if (AdvSimd.Arm64.IsSupported)
507Vector128<ushort> odd = Vector128.ShiftRightLogical(AdvSimd.Arm64.UnzipOdd(t0.AsUInt16(), t0.AsUInt16()), 6);
508Vector128<ushort> even = Vector128.ShiftRightLogical(AdvSimd.Arm64.UnzipEven(t0.AsUInt16(), t0.AsUInt16()), 10);
509t1 = AdvSimd.Arm64.ZipLow(even, odd);
551else if (AdvSimd.IsSupported)
553indices = AdvSimd.SubtractSaturate(str.AsByte(), const51);
798[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
804AdvSimd.Arm64.StoreVectorAndZip(dest, (res1, res2, res3, res4));
889[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
899AdvSimd.Arm64.StoreVectorAndZip(dest, (utf16LowVector1, utf16LowVector2, utf16LowVector3, utf16LowVector4));
900AdvSimd.Arm64.StoreVectorAndZip(dest + 32, (utf16HighVector1, utf16HighVector2, utf16HighVector3, utf16HighVector4));
src\libraries\System.Private.CoreLib\src\System\Numerics\Matrix4x4.Impl.cs (9)
1560if (AdvSimd.Arm64.IsSupported)
1567Vector128<float> lowerXZ = AdvSimd.Arm64.ZipLow(x, z); // x[0], z[0], x[1], z[1]
1568Vector128<float> lowerYW = AdvSimd.Arm64.ZipLow(y, w); // y[0], w[0], y[1], w[1]
1569Vector128<float> upperXZ = AdvSimd.Arm64.ZipHigh(x, z); // x[2], z[2], x[3], z[3]
1570Vector128<float> upperYW = AdvSimd.Arm64.ZipHigh(y, w); // y[2], w[2], y[3], z[3]
1572result.X = AdvSimd.Arm64.ZipLow(lowerXZ, lowerYW).AsVector4(); // x[0], y[0], z[0], w[0]
1573result.Y = AdvSimd.Arm64.ZipHigh(lowerXZ, lowerYW).AsVector4(); // x[1], y[1], z[1], w[1]
1574result.Z = AdvSimd.Arm64.ZipLow(upperXZ, upperYW).AsVector4(); // x[2], y[2], z[2], w[2]
1575result.W = AdvSimd.Arm64.ZipHigh(upperXZ, upperYW).AsVector4(); // x[3], y[3], z[3], w[3]
src\libraries\System.Private.CoreLib\src\System\Text\Ascii.Utility.cs (37)
66[CompExactlyDependsOn(typeof(AdvSimd.Arm64))]
69if (!AdvSimd.Arm64.IsSupported || !BitConverter.IsLittleEndian)
79extractedBits = AdvSimd.Arm64.AddPairwise(extractedBits, extractedBits);
119(Sse2.IsSupported || AdvSimd.IsSupported))
364Debug.Assert(AdvSimd.IsSupported);
376Debug.Assert(Sse2.IsSupported || AdvSimd.Arm64.IsSupported, "Sse2 or AdvSimd64 required.");
407else if (AdvSimd.Arm64.IsSupported)
409Vector128<byte> vector = AdvSimd.LoadVector128(pBuffer);
467else if (AdvSimd.Arm64.IsSupported)
469Vector128<byte> firstVector = AdvSimd.LoadVector128(pBuffer);
470Vector128<byte> secondVector = AdvSimd.LoadVector128(pBuffer + SizeOfVector128);
513else if (AdvSimd.Arm64.IsSupported)
515Vector128<byte> vector = AdvSimd.LoadVector128(pBuffer);
549else if (AdvSimd.Arm64.IsSupported)
551Vector128<byte> vector = AdvSimd.LoadVector128(pBuffer);
584else if (AdvSimd.IsSupported)
607else if (AdvSimd.Arm64.IsSupported)
745(Sse2.IsSupported || AdvSimd.IsSupported))
980Debug.Assert(Sse2.IsSupported || AdvSimd.Arm64.IsSupported, "Should've been checked by caller.");
1152else if (AdvSimd.Arm64.IsSupported)
1160Vector128<byte> compareResult = AdvSimd.CompareGreaterThan(firstVector, largestAsciiValue).AsByte();
1161ulong asciiCompareMask = AdvSimd.Arm64.UnzipOdd(compareResult, compareResult).AsUInt64().ToScalar();
1289else if (AdvSimd.IsSupported)
1295Vector64<byte> lower = AdvSimd.ExtractNarrowingSaturateUnsignedLower(vecWide);
1544else if (AdvSimd.Arm64.IsSupported)
1546Vector128<byte> maxBytes = AdvSimd.Arm64.MaxPairwise(asciiVector, asciiVector);
1574else if (AdvSimd.Arm64.IsSupported)
1578Vector128<ushort> maxChars = AdvSimd.Arm64.MaxPairwise(utf16Vector, utf16Vector);
1630AdvSimd.Arm64.IsSupported ? AllBytesInUInt64AreAscii(AdvSimd.Arm64.MaxPairwise(vector.AsByte(), vector.AsByte()).AsUInt64().ToScalar()) :
1636AdvSimd.Arm64.IsSupported ? AllCharsInUInt64AreAscii(AdvSimd.Arm64.MaxPairwise(vector.AsUInt16(), vector.AsUInt16()).AsUInt64().ToScalar()) :
1688else if (AdvSimd.Arm64.IsSupported)
1690return AdvSimd.Arm64.UnzipEven(vectorFirst.AsByte(), vectorSecond.AsByte());
2295if (AdvSimd.Arm64.IsSupported)
2297Vector128<byte> vecNarrow = AdvSimd.DuplicateToVector128(value).AsByte();
2298Vector128<ulong> vecWide = AdvSimd.Arm64.ZipLow(vecNarrow, Vector128<byte>.Zero).AsUInt64();