Имея r1
, r3
и r4
типа uint32x4_t
загруженного в регистры NEON У меня есть следующий код:Неон простой вектор назначения?
r3 = veorq_u32(r0,r3);
r4 = r1;
r1 = vandq_u32(r1,r3);
r4 = veorq_u32(r4,r2);
r1 = veorq_u32(r1,r0);
И я был просто интересно, действительно ли переводит GCC r4 = r1
в vmov
инструкции. Глядя на разобранный код, я не удивился, что это не так. (более того, я не могу понять, что на самом деле генерирует сгенерированный код сборки)
Сбой с помощью ссылки на NEON по ARM NEON Я не мог найти никакого простого векторного> векторного присвоения intrinsic.
Какой самый простой способ достичь этого? Я не уверен, как будет выглядеть встроенный код сборки, поскольку я не знаю, в каких регистрах были r1
и r4
, назначенные vld1q_u32
. Мне не нужен фактический обмен, просто назначение.
Как выглядит сборка? вы скомпилировали с -O2? – auselen
Да, есть только куча логических инструкций, но не 'vmov', которого я ожидал бы. – NumberFour
Если вы считаете, что внутренняя функция для вариации инструкции NEON 'vmov' отсутствует, не стесняйтесь публиковать ошибку на http://gcc.gnu.org/ с опкодом, аргументом, ссылкой на документацию и т. Д. – ydroneaud