Доступ к 32-битному из 64-битного с использованием встроенных ARM Neon - PullRequest
0 голосов
/ 13 февраля 2020

Как получить доступ к младшим 32 битам или старшим 32 битам из 64-битного целого числа со знаком, используя ARM Neon Intrinsics? Также я хочу присвоить эти извлеченные данные другой 32-битной переменной. Возможно ли это?

Ответы [ 2 ]

1 голос
/ 13 февраля 2020
static inline int32x2_t low32(int64x2_t in)
{
    int32x2_t out;

    out = vmovn_s64(in); // vqmovn for saturating

    return out;
}

static inline int32x2_t high32(int64x2_t in)
{
    int32x2_t out;

    out = vshrn_n_s64(in, 32);

    return out;
}
0 голосов
/ 13 февраля 2020

Эй, в этом случае вам нужно сделать и работать с вашей 64-битной переменной. Взгляните на этот пример: предположим, что у нас есть 64-битная переменная, имеющая значение 0b000000000000000000000000000000110000000000001100000000000000000000000000000000000000000001

, если мы разделим переменную выше, то получим

00000000000000000000000000000000 3 = * и 00000000000000000000000000000001 = 1 , поэтому здесь значение первых 32 бит (MSB) равно 3, а значение следующих 32 бит (LSB) равно 1

first32_bit = 64bit_var>>32;
next32_bit = 64bit_var&0000000000000000000000000000000011111111111111111111111111111111;
...