NEON函数详解-----vld1_u16、vadd_u16、vst1_u16、vcombine_s32、vget_high_s32、vget_low_s32

#include <stdio.h>
#include <arm_neon.h>


unsigned short int A[] = {1,2,3,4}; // array with 4 elements


int main(void)

{

  uint16x4_t v; // declare a vector of four 16-bit lanes


   v = vld1_u16(A); // load the array from memory into a vector


   v = vadd_u16(v,v); // double each element in the vector


  vst1_u16(A, v); // store the vector back to memory


   return 0;

}


函数功能:

               vld1_u16():     函数的功能是将内存中的数据映射到寄存器上面。这样就可以直接通过寄存器来操作数据了

   

                vadd_u16():   函数的功能是数据的加法  ,上面的数据1\2\3\4   经过函数变成 2\4\6\8

  

                vst1_u16():  函数的功能是将寄存器中的数据映射回内存中,这样就可以通过打印来看到结果了。

 

#include <arm_neon.h>
#include "stdio.h"

int data[5]={99,10,4,5,6};

int main(void)
{
    int A,B;
    int32x2_t a,b;
    int32x4_t c;
    //int32x4_t vdupq_n_s32 (int32_t __a);
    a=vdup_n_s32(data[0]);
    b=vdup_n_s32(data[1]);

    //int32x4_t vcombine_s32 (int32x2_t __a, int32x2_t __b);
    c=vcombine_s32(a,b);
    c=vqaddq_s32(c,c);
    c=vqaddq_s32(c,c);
    c=vmulq_s32(c,c);

    a=vget_high_s32(c);
    b=vget_low_s32(c);

    vst1_s32(&A,a);
    vst1_s32(&B,b);

    printf("A:%d\nB:%d \n",A,B);
    return 0;
}





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零一2035

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值