NEON矢量数据类型的混叠
Aliasing of NEON vector data types
NEON是否支持矢量数据类型与其标量组件的混叠?
。英特尔(SSE)
typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
以上将允许我做:
__m128i* somePtr;
somePtr++;//advance to the next block
与Intel的混叠将允许我的指针前进到我想要处理的下一个块无需管理额外的计数和索引
__m128i
上的__may_alias__
属性应该被视为一种解决方法,即使Intel 完全搞混了一些SEE加载/存储特性的签名,也可以编写严格别名正确的代码。(8字节加载_mm_loadl_epi64(const __m128i*)
是最搞笑的例子,但还有其他例子)。ARM获得了正确的内在特性,因此不需要__may_alias__
。
只使用指向元素类型的指针,并使用显式的加载和存储。根据我的经验,这样可以生成更好的代码,并且可能也更易于移植。(ARM C语言规范甚至允许指向NEON类型的指针吗?
NEON intrinsic实现不支持向量数据类型与其标量组件的混叠。
当你指定-mfpu_neon时,GCC支持一堆内部函数。我猜你们会感兴趣的是int32x4_t。关于所有可用类型的更多信息可以在ARM网站上找到。
相关文章:
- 防止主数据类型C++的隐式转换
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在C++中打印指向不同基元数据类型的指针的内存地址
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何计算数据类型的范围,例如int
- C++中数据类型修饰符的顺序
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 特定数据类型的模板类
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 有没有办法提示用户使用哪种数据类型作为模板 c++
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 如何获取C++字符数据类型的地址
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- 构造智能点数据类型以及普通数据类型的通用方法
- 如何使映射键具有两种不同的数据类型?
- 数据类型"struct seq<0, 1, 2>{}"含义是什么?
- 如何在不破坏现有应用程序的情况下更改 API 中 stl 容器的数据类型?
- 如何将c数据类型转换为neon数据类型
- NEON矢量数据类型的混叠