NEON指令集
来源:互联网 发布:通关单数据查询 编辑:程序博客网 时间:2024/06/05 09:58
Intel公司的单指令多数据流式扩展(SSE,Streaming SIMD Extensions)技术能够有效增强CPU浮点运算的能力。
SIMD(single-instruction, multiple-data)是一种使用单道指令处理多道数据流的CPU执行模式,即在一个CPU指令执行周期内用一道指令完成处理多个数据的操作。
http://blog.csdn.net/tonyfield2015/article/details/8602611
GCC支持的ARM NEON 内联SIMD Intrinsics
NEON中的正常指令、宽指令、窄指令、饱和指令、长指令
正常指令:生成大小相同且类型通常与操作数向量相同到结果向量
长指令:对双字向量操作数执行运算,生产四字向量到结果。所生成的元素一般是操作数元素宽度到两倍,并属于同一类型。L标记,如VMOVL。
宽指令:一个双字向量操作数和一个四字向量操作数执行运算,生成四字向量结果。W标记,如VADDW。
窄指令:四字向量操作数执行运算,并生成双字向量结果,所生成的元素一般是操作数元素宽度的一半。N标记,如VMOVN。
饱和指令:当超过数据类型指定到范围则自动限制在该范围内。Q标记,如VQSHRUN
逻辑运算:
VADD:按位与;VBIC:位清除;VEOR:按位异或;VORN:按位或非;VORR:按位或
移位指令:
VSHL:左移、VSHLL:左移扩展、VQSHL:左移饱和、VQSHLU:无符号左移饱和扩展
VSHR:右移、VSHRN:右移窄、VRSHR:右移舍入、VQSHRUN:无符号右移饱和舍入
ARM NEON基本指令集
ARM Neon Intrinsics各函数介绍
支持目标平台为ARM CPU的主流编译器基本都支持NEON指令。可以通过在代码中嵌入NEON汇编来使用NEON,但是更加常见的方式是通过类似C函数的NEON Instrinsic来编写NEON代码。NEON Instrinsic是编译器支持的一种buildin类型和函数的集合,基本涵盖NEON的所有指令,通常这些Instrinsic包含在arm_neon.h头文件中。
- 16个通用寄存器(32bit),R0-R15
- 16个NEON寄存器(128bit),Q0-Q15(同时也可以被视为32个64bit的寄存器,D0-D31)
16个VFP寄存器(32bit),S0-S15
NEON和VFP的区别在于VFP是加速浮点计算的硬件不具备数据并行能力,同时VFP更尽兴双精度浮点数(double)的计算,NEON只有单精度浮点计算能力
- 正常指令:生成大小相同且类型通常与操作数向量相同到结果向量。
- 长指令:对双字向量操作数执行运算,生产四字向量到结果。所生成的元素一般是操作数元素宽度的两倍,并属于同一类型。L标记,如VMOVL。
- 宽指令:一个双字向量操作数和一个四字向量操作数执行运算,生成四字向量结果。W标记,如VADDW。
- 窄指令:四字向量操作数执行运算,并生成双字向量结果,所生成的元素一般是操作数元素宽度的一半。N标记,如VMOVN。
- 饱和指令:当超过数据类型指定到范围则自动限制在该范围内。Q标记,如VQSHRUN
quad vector 128
- NEON指令集综述
- NEON指令集
- arm neon 指令集
- ARM和neon指令集
- Neon 指令集 ARMv7/v8 对比
- Neon 指令集 ARMv7/v8 对比
- neon指令集(arm平台优化)
- ARM NEON 基本指令集介绍
- ARM NEON 指令
- ARM NEON 指令
- ARM和NEON指令
- Neon指令C模拟器
- Android NEON指令学习
- ARM和NEON指令
- neon指令数据解析
- ARM Neon指令
- ARM和NEON指令
- ARM和NEON指令
- rest 两种客户端数据返回的处理方式
- 【原创】在Ubuntu中设置环境变量PATH时遇到的问题
- return finally执行顺序
- 自己实现的listener监听器
- C++单例模式
- NEON指令集
- linux下软连接和硬链接的创建
- 建立maven工程
- 深度学习——NMS(非极大抑制)
- Could not get lock /var/lib/apt/lists/lock
- XML管理类
- VC2010升级到VC2015遇到问题及解决办法
- sitemesh应用
- BZOJ 3173: [Tjoi2013]最长上升子序列