Интересно, как можно было бы заменить байтовые значения в Vector128<byte>
Я думаю, что нормально принять код ниже, где у нас есть resultvector
с этими значениями: < 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0>
Здесь мне нравится создавать новый вектор, где все «0» будут заменены на «2», а все «1» будут заменены на «0» следующим образом: <2,2,2,2,0,0,0,0,2,2, 2,2,2,2,2,2>
Я не уверен, есть ли для этого встроенная функция или как этого добиться?
Спасибо!
//Create array
byte[] array = new byte[16];
for (int i = 0; i < 4; i++) { array[i] = 0; }
for (int i = 4; i < 8; i++) { array[i] = 1; }
for (int i = 8; i < 16; i++) { array[i] = 0; }
fixed (byte* ptr = array)
{
byte* pointarray = &*((byte*)(ptr + 0));
System.Runtime.Intrinsics.Vector128<byte> resultvector = System.Runtime.Intrinsics.X86.Avx.LoadVector128(&pointarray[0]);
//<0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0>
//resultvector
}