【问题标题】:Accessing 32bit from 64bit using ARM Neon intrinsics使用 ARM Neon 内部函数从 64 位访问 32 位
【发布时间】:2020-05-28 18:48:31
【问题描述】:

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

【问题讨论】:

    标签: c arm simd intrinsics neon


    【解决方案1】:
    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;
    }
    

    【讨论】:

      【解决方案2】:

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

      如果我们拆分上面的变量,那么我们将得到 ​​p>

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-20
        • 2017-02-18
        • 1970-01-01
        • 2014-07-18
        • 2012-06-30
        • 1970-01-01
        • 1970-01-01
        • 2020-05-30
        相关资源
        最近更新 更多