使用ARM Neon内部函数从64位访问32位

问题描述 投票:0回答:2

如何使用ARM Neon Intrinsics从64位带符号整数访问低32位或高32位?另外,我想将提取的数据分配给另一个32位变量。有可能吗?

c arm simd intrinsics neon
2个回答
0
投票
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
投票

嘿,在这种情况下,您必须使用64位变量进行操作。看这个例子:假设我们有值的64位变量0b0000000000000000000000000000000000001101100000000000000000000000000000001

如果我们在变量上面分割,则将得到

00000000000000000000000000000011 = 300000000000000000000000000000001 = 1所以这里的前32位(MSB)值为3,接下来的32位(LSB)值为1

first32_bit = 64bit_var>>32;
next32_bit = 64bit_var&0000000000000000000000000000000011111111111111111111111111111111;
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.