13 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
15 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
16 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
17 -1, -1, -1, 62, -1, -1, -1, 63, 52, 53,
18 54, 55, 56, 57, 58, 59, 60, 61, -1, -1,
19 -1, -1, -1, -1, -1, 0, 1, 2, 3, 4,
20 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
21 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
22 25, -1, -1, -1, -1, -1, -1, 26, 27, 28,
23 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
24 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
25 49, 50, 51, -1, -1, -1, -1, -1, -1, -1,
26 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
27 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
28 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
29 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
30 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
31 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
32 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
33 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
34 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
35 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
36 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
37 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
38 -1, -1, -1, -1, -1, -1
308 private unsafe
static void Avx2Decode(ref
byte* srcBytes, ref
byte* destBytes,
byte* srcEnd,
int sourceLength,
int destLength,
byte* srcStart,
byte* destStart)
310 Vector256<sbyte> value =
Vector256.
Create(16, 16, 1, 2, 4, 8, 4, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 2, 4, 8, 4, 8, 16, 16, 16, 16, 16, 16, 16, 16);
311 Vector256<sbyte> value2 =
Vector256.
Create(21, 17, 17, 17, 17, 17, 17, 17, 17, 17, 19, 26, 27, 27, 27, 26, 21, 17, 17, 17, 17, 17, 17, 17, 17, 17, 19, 26, 27, 27, 27, 26);
312 Vector256<sbyte> value3 =
Vector256.
Create(0, 16, 19, 4, -65, -65, -71, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, 4, -65, -65, -71, -71, 0, 0, 0, 0, 0, 0, 0, 0);
313 Vector256<sbyte> mask =
Vector256.
Create(2, 1, 0, 6, 5, 4, 10, 9, 8, 14, 13, 12, -1, -1, -1, -1, 2, 1, 0, 6, 5, 4, 10, 9, 8, 14, 13, 12, -1, -1, -1, -1);
314 Vector256<int> control =
Vector256.
Create(0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1).AsInt32();
318 byte* ptr = srcBytes;
319 byte* ptr2 = destBytes;
333 vector =
Avx2.
Add(vector, right5);
336 vector3 =
Avx2.
Shuffle(vector3.AsSByte(), mask).AsInt32();
342 while (ptr <= srcEnd);
348 private unsafe
static void Ssse3Decode(ref
byte* srcBytes, ref
byte* destBytes,
byte* srcEnd,
int sourceLength,
int destLength,
byte* srcStart,
byte* destStart)
350 Vector128<sbyte> value =
Vector128.
Create(16, 16, 1, 2, 4, 8, 4, 8, 16, 16, 16, 16, 16, 16, 16, 16);
351 Vector128<sbyte> value2 =
Vector128.
Create(21, 17, 17, 17, 17, 17, 17, 17, 17, 17, 19, 26, 27, 27, 27, 26);
352 Vector128<sbyte> value3 =
Vector128.
Create(0, 16, 19, 4, -65, -65, -71, -71, 0, 0, 0, 0, 0, 0, 0, 0);
353 Vector128<sbyte> mask =
Vector128.
Create(2, 1, 0, 6, 5, 4, 10, 9, 8, 14, 13, 12, -1, -1, -1, -1);
358 byte* ptr = srcBytes;
359 byte* ptr2 = destBytes;
373 vector =
Sse2.
Add(vector, right5);
381 while (ptr <= srcEnd);
551 private unsafe
static void Avx2Encode(ref
byte* srcBytes, ref
byte* destBytes,
byte* srcEnd,
int sourceLength,
int destLength,
byte* srcStart,
byte* destStart)
553 Vector256<sbyte> mask =
Vector256.
Create(5, 4, 6, 5, 8, 7, 9, 8, 11, 10, 12, 11, 14, 13, 15, 14, 1, 0, 2, 1, 4, 3, 5, 4, 7, 6, 8, 7, 10, 9, 11, 10);
554 Vector256<sbyte> value =
Vector256.
Create(65, 71, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -19, -16, 0, 0, 65, 71, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -19, -16, 0, 0);
561 byte* ptr = srcBytes;
562 byte* ptr2 = destBytes;
564 vector =
Avx2.
PermuteVar8x32(vector.AsInt32(),
Vector256.
Create(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0).AsInt32()).AsSByte();
573 vector =
Avx2.
Or(vector4.AsSByte(), vector5.AsSByte());