Опитвам се да оптимизирам някои алгоритми за обработка на изображения за ARM с помощта на NEON intrinsics. За някои филтри трябва да зареди елементи в близост до точката. Например, за да филтрирам изображение в пиксел p[x]
, трябва да заредя p[x - 1]
, p[x]
и p[x + 1]
. Ако x=0
, тогава зареждам p[0]
, p[0]
и p[1]
. Ако x=width-1
, тогава зареждам p[width-2]
, p[width-1]
и p[width-1]
.
Така че, ако имам вектор:
uint8x16_t a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
Как мога да получа от него следните вектори:
uint8x16_t b = {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
uint8x16_t c = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15};