将特定的 SSE 内部函数转换为 NEON 内部函数
Convert specific SSE intrinsics to NEON intrinsics
> [EDIT: (edited to highlight the question in context)
以下是我需要 NEON 内部函数的 SSE 内部函数,因为我正在转换一些 SSE 代码以在 iOS 上运行。
-
_mm_set_ps
将四个单精度浮点值设置为四个输入。
(__m128 _mm_set_ps(float z , float y , float x , float w );)
Return Value:
r0 := w
r1 := x
r2 := y
r3 := z
-
_mm_loadu_ps
加载四个单精度浮点值。地址不需要 16 字节对齐。
__m128 _mm_loadu_ps(float * p);
Return Value:
r0 := p[0]
r1 := p[1]
r2 := p[2]
r3 := p[3]
-
_mm_storeu_ps
存储四个单精度浮点值。地址不需要 16 字节对齐。
void _mm_storeu_ps(float *p, __m128 a);
Return Value:
p[0] := a0
p[1] := a1
p[2] := a2
p[3] := a3
-
_mm_add_epi32
添加到 b 中的 4 个有符号或无符号 32 位整数。
__m128i _mm_add_epi32 (__m128i a, __m128i b);
Return Value:
r0 := a0 + b0
r1 := a1 + b1
r2 := a2 + b2
r3 := a3 + b3
注意:尽可能避免未对齐的内存访问。因此,我需要一种方法将未对齐的访问转换为对齐的访问(可能使用填充)。
我对 NEON 内联函数不是很熟悉,但我可以命名等效的 NEON 指令。然后,您将轻松找到合适的宏。
_mm_set_ps
如果这些值已经在 S 寄存器中,您只需将它们重新解释为 D 寄存器否则,您可以使用 vmov 指令填充 D 寄存器:vmov.i32 d0, r0, r1
_mm_loadu_ps
VLD1.32 Q0, [R0]
_mm_storeu_ps
VST1.32 Q0, [R0]
_mm_add_epi32
vadd.u32 Q0, Q1, Q2
相关文章:
- 如何使用Rcpp将R函数转换为C++函数
- C++ SSE 内部函数:将结果存储在变量中
- C++代码停止工作错误使用cout内部函数
- C++函数转换为 C# 函数
- 为什么从具有较大阵列的 SIMD 内部函数中获得的相对加速比标量更大?
- 将 C 函数转换为 C++ 以检查数字是否有效
- C++:从重载函数转换为 std::function
- 使用英特尔内部函数 (AVX) 中的混合说明
- 将 C 函数转换为C++语言
- C++隐式构造函数转换,后跟类型向上转换
- 将 lambda 函数转换为具有混合 lambda 引入器和参数列表的函子结构
- 英特尔汇编与内部函数,AVX
- 使用SSE内部函数复制少量数据时出现问题
- 在为函数编写单元测试时,我应该模拟所做的内部函数调用吗?
- 用于平铺矩阵乘法的 AVX 内部函数
- 是否可以使用类的析构函数内部函数来重置值?
- 通过 Boost Python 将 Python 函数转换为 C++,用作回调
- 使用SSE内部函数将布尔数组(8字节布尔)转换为int或char
- 将特定的 SSE 内部函数转换为 NEON 内部函数
- 将SSE内部函数转换为可读的C/C++代码