问题标签 [intrinsics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
279 浏览

assembly - SSE 在哪里可以找到从 SSE 内在函数到汇编程序的翻译指南

我需要在 SSE2 汇编器中编写一些东西。
我所看到的只是内在函数。

我一直在徒劳地寻找从内在函数到汇编程序的转换表。
因为我不想玩猜谜游戏,有人可以给我一个链接,将这些可怕的内在函数翻译成漂亮的汇编。

我只需要 SSE/SSE2 整数指令。

请不要告诉我只使用 C(++) 我没有那个选项,我也不想。

我在哪里可以获得翻译指南?

编辑
感谢您的链接,但是我还没有复合内在函数的翻译,有人有链接吗?它真的会加快速度。:-)

0 投票
1 回答
1356 浏览

c# - 在 C# 中使用编译指示内在(sqrt,pow)?

C++ 总结

在代码的预处理器部分中使用该#pragma intrinsic命令将大大提高大多数数学函数调用的速度。

上面的代码允许将大多数数学函数调用直接发送到数学协处理器,而不是发送到函数堆栈。

问题

有没有办法在 C# 中做到这一点?除了重写内置函数来做类似的事情。例如,通常做二的幂,所以这是合适的,但这不是我要找的:

0 投票
2 回答
1399 浏览

intrinsics - 来自 AVX _m256_unpack*_ps unpack 内在的意外结果

我正在尝试使用 AVX 内在解包指令_m256_unpacklo_ps_m256_unpackhi_ps交错 16 个浮点值。我得到的结果很奇怪,要么是因为我不了解解包在 AVX 中应该如何工作,要么是因为某些东西没有按应有的方式工作。

我看到的是,例如,当我尝试将低阶浮点数从两个向量 v1 和 v2 解压缩到第三个向量 v3 中时,我看到以下内容:

如果 v1 是 [a b c d e f g h] 并且 v1 是[i j k l m n o p]

然后v3 = _m256_unpacklo_ps(v1, v2)导致 [a i b j e m f n]

当我期望 v3 会给[a i b j c k d l]

我的期望不正确还是我使用不正确?还是有其他问题?

一些测试代码是:

我正在使用 gcc 4.5.2 进行编译。

提前感谢您的帮助!- 贾斯汀

0 投票
1 回答
6412 浏览

android - 使用 NEON 内在函数除以浮点数

我当时正在处理四个像素的图像,这armv7适用于Android应用程序。

我想将一个float32x4_t向量除以另一个向量,但其中的数字从大约0.7到变化,在3.85我看来,唯一的除法方法是使用右移,但这是一个数字2^n

另外,我是新来的,所以欢迎任何建设性的帮助或评论。

例子:

如何使用 NEON 内在函数执行这些操作?

0 投票
2 回答
1281 浏览

android - 与霓虹内在函数中的浮点数比较

我认为这是一个愚蠢的问题,但我尝试了一天没有运气来解决这个问题,所以这里是。

我有四个向量的寄存器(float32x4),我想对其中一些进行一些处理,另一个我想将其设置为 0。

例如c中的这个问题:

所以第一个不会处理,但另一个会,所以我需要一个寄存器,第一条车道我有 0,另一个有结果。

但我不知道如何在霓虹内在函数上做到这一点。

我知道有一个 vcltq_f32 但我尝试了这个但没有结果。

0 投票
2 回答
10875 浏览

simd - SIMD 内在函数的参考手册/教程?

我正在研究使用这些来提高某些代码的性能,但是对于 *mmintrin.h 标头中定义的函数似乎很难找到好的文档,有人可以为我提供指向这些好的信息的指针吗?

编辑:对如何开始的非常基本的教程特别感兴趣。

0 投票
2 回答
461 浏览

assembly - 使用内在函数的 SSE2 程序集溢出

我是 SSE 和 SSE2 的新手,我写了一个小的 C 样本(分配两个计数器,一个增加另一个减少而不是增加两个),它按预期工作。我使用了内在函数和 Microsoft Visual Studio 10 C++ Express。作为第二步,我想了解引擎盖下发生了什么,但我现在很困惑。例如 for 循环中的赋值操作编译为:

我知道前两行获取 a_aligned 地址的组成部分,第三行将其复制到 xmm0 寄存器。但我不明白为什么它被复制回内存,而不是再次复制到 xmm0(而不是 a_ptr)。我认为 _mm_load_si128 内在函数应该将 a_aligned[i] 的 128 位复制到 xmm0,仅此而已。为什么会这样?我理论上错了吗?如果不是,我应该如何提示编译器?我的示例代码是否正确(从某种意义上说它没有不必要的东西)?这是我的完整示例代码:

0 投票
1 回答
826 浏览

macos - OSX Accelerate 框架上浮动选择的 4 路 SIMD 版本是什么?

使用 OSX 的Accelerate 框架,您可以访问 4 路 SIMD 功能,您可以在其中对向量浮点数、向量整数和向量布尔值进行操作。它为您提供 4 路除法,例如还有 4 路 sin、cos、tan 等。

对于 4 个浮点数的向量浮点数,框架提供vFloat。对于 4 个 bool 的向量 bool,框架提供vBool32

我想要完成的是这行代码的 4 路 SIMD 版本:

例如,在 Cell 处理器上,您将使用内在的 'spu_sel(val1, val2, conditional)'。

我尝试将 4 向选择写为:

... LLVM 编译器不接受它作为“?” 运算符不接受 vBool32。此外,上述网页上没有名为“vsel”或“vself”或类似名称的运算符。在这个框架中是否有浮点选择可用?如果是这样,如何访问它?

0 投票
2 回答
1954 浏览

sse - 使用 SSSE3 将 2 个未对齐的 64 位值加载到 sse 寄存器中的最佳方法是什么?

有 2 个指针指向要加载到 xmm 寄存器中的 2 个未对齐的 8 字节块。如果可能,使用内在函数。如果可能,不使用辅助寄存器。没有pinrd。(SSSE 核心 2)

0 投票
3 回答
516 浏览

c++ - 在哪里可以找到将 VC++ 内联汇编器转换为内在函数的脚本?

我正在将使用 SSE 命令的内联汇编程序移植到内在函数。为汇编指令找到合适的内在函数需要做很多工作。我在互联网上的某个地方看到了一个简化工作的 Python 脚本,但现在找不到。