У меня 128 32-разрядных значений (пронумерованных от 0 до 127) и иметь их упорядочены следующим образом:Reorder значения при хранении от NEON регистров
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
инструкции. Разве это не тот случай, когда это может быть полезно?
Извините, если мой вопрос глуп, но ваш заказ начинается с 1, 32, 64, 96; (+ 31, + 32, + 32), не должен заканчиваться 31,62,94,126, 32,63,95,127, 33,64,96,128? –
Спасибо! Конечно, это была опечатка. – NumberFour