У меня есть 128 32-битных значений (пронумерованных от 0 до 127), и они упорядочены следующим образом:
0, 32, 64, 96, 1, 33, 65, 97, ... 31, 63, 95, 127
При таком порядке я загружаю их группами по 4 в регистры NEON для выполнения некоторых вычислений (которые требуют такого порядка). Таким образом, у меня есть q0 = (0, 32, 64, 96)
... и так далее.
Мне было интересно, есть ли какой-нибудь простой способ сохранить их обратно в память в их естественном порядке (0 1 2 3...)
Другими словами, есть ли более простой способ или трюк для этого:
vst1.u32 {d0[0]}, [r0]
vst1.u32 {d0[1]}, [r0,#128]
vst1.u32 {d1[0]}, [r0,#256]
vst1.u32 {d1[1]}, [r0,#384]
vst1.u32 {d2[0]}, [r0,#4]
vst1.u32 {d2[1]}, [r0,#132]
...
Я не совсем понимаю использование суффикса @alignment
с инструкциями vstx
и vldx
. Разве это не тот случай, когда это может быть полезно?