英特尔/ ARM内在等效性

chi

我有一个使用英特尔内部函数的C应用程序,例如:

__m128 _mm_add_ps (__m128 a, __m128 b)
__m128 _mm_sub_ps (__m128 a, __m128 b)
__m128 _mm_mul_ps (__m128 a, __m128 b)
__m128 _mm_set_ps (float e3, float e2, float e1, float e0)
void _mm_store_ps (float* mem_addr, __m128 a)
__m128 _mm_load_ps (float const* mem_addr)

现在,我正在尝试使用名为Gem5的模拟器来修改我的应用程序,以使其在ARMv8上运行因此,我开始四处寻找ARM内在函数,并找到了本手册《ARM®NEON™Intrinsics Reference》。

好吧,我找到了算术内在函数,但是我对设置,存储和加载指令有些迷失。

任何具有ARM内部函数经验的人都可以告诉我正确的内部函数吗?

保罗·R

这里有一些等效的方法可以帮助您入门:

SSE             ARM

__m128          float32x4_t     // 4 x 32 bits floats in a vector

_mm_load_ps     vld1q_f32       // load float vector from memory

_mm_store_ps    vst1q_f32       // store float vector to memory

_mm_add_ps      vaddq_f32       // add float vectors

至于初始化向量,例如您_mm_set_ps在SSE中可能会遇到的那样,例如gcc和clang的编译器使您可以使用类似于Neon数据类型的C方式进行此操作,例如

const float32x4_t v = { 1.0f, 2.0f, 3.0f, 4.0f };

但是,如果编译器不支持此方法,则可能必须使用等效的Neon内部函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

英特尔内在函数问题

来自分类Dev

英特尔内在支持Atom cloverview处理器

来自分类Dev

英特尔TBB禁用嵌套并行性

来自分类Dev

英特尔TBB禁用嵌套并行性

来自分类Dev

英特尔至强 E 与 Ubuntu 16.04 的兼容性

来自分类Dev

英特尔SSE内在函数_mm_load_si128分段错误,

来自分类Dev

英特尔SSE内在函数:si64 si64x之间的区别

来自分类Dev

英特尔SSE内在函数_mm_load_si128分段错误,

来自分类Dev

哪些AMD CPU具有与英特尔的TXT等效的内置TPM?

来自分类Dev

英特尔(CISC)和ARM(RISC)架构有什么区别?

来自分类Dev

英特尔Fortran灾难性错误:令牌太长,最大值为7194

来自分类Dev

英特尔Fortran灾难性错误:令牌太长,最大值为7194

来自分类Dev

英特尔S5520UR SSD兼容性

来自分类Dev

在英特尔编程?

来自分类Dev

为什么英特尔的某些内在函数采用const立即数,而另一些则为非const?

来自分类Dev

英特尔TSX硬件事务性存储器非事务性线程会看到什么?

来自分类Dev

英特尔TSX硬件事务性存储器非事务性线程会看到什么?

来自分类Dev

投机性负载和存储如何在现代英特尔处理器中发生?

来自分类Dev

英特尔Edison模块

来自分类Dev

英特尔XDK + jsPDF

来自分类Dev

英特尔SSD术语

来自分类Dev

英特尔Nextbook降级

来自分类Dev

英特尔XDK信息

来自分类Dev

FASM是否使用英特尔语法?

来自分类Dev

英特尔OpenMP安装问题

来自分类Dev

英特尔Galileo裸机UART

来自分类Dev

英特尔Fortran值属性

来自分类Dev

英特尔XDK中的同源策略

来自分类Dev

英特尔软件安装中的问题