Как переупорядочить векторные данные четырех слов с помощью Neon Intrinsics? - PullRequest
0 голосов
/ 20 декабря 2010

Вопрос связан с внутренностями ARM NEON. Я использую неоновые встроенные ARM для реализации FIR. Я хочу переупорядочить векторные данные четырех слов. Например, В неоновом регистре есть четыре 32-битных элемента - скажем, Q0 - размером 128 бит.

A3 A2 A1 A0

Я хочу изменить порядок Q0 как A0 A1 A2 A3.

Есть ли возможность сделать это?

1 Ответ

3 голосов
/ 05 января 2011

Чтение http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html вместе с инфоцентром ARM, я думаю, что следующее будет делать то, что вы просите:

    uint32x2_t dvec_h = vget_high_u32(qvec);
    uint32x2_t dvec_l = vget_low_u32(qvec);

    dvec_h = vrev64_u32(dvec_h);
    dvec_l = vrev64_u32(dvec_l);

    qvec = vcombine_u32(dvec_h, dvec_l);

В сборке это можно записать просто как:

    VSWP      d0, d1
    VREV64.32 q0, q0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...