相关疑难解决方法(0)

微融合和寻址模式

我使用英特尔®架构代码分析器(IACA)发现了一些意想不到的东西(对我而言).

以下指令使用[base+index]寻址

addps xmm1, xmmword ptr [rsi+rax*1]
Run Code Online (Sandbox Code Playgroud)

根据IACA没有微熔丝.但是,如果我用[base+offset]这样的

addps xmm1, xmmword ptr [rsi]
Run Code Online (Sandbox Code Playgroud)

IACA报告它确实融合了.

英特尔优化参考手册的第2-11节给出了以下"可以由所有解码器处理的微融合微操作"的示例

FADD DOUBLE PTR [RDI + RSI*8]
Run Code Online (Sandbox Code Playgroud)

Agner Fog的优化装配手册也给出了使用[base+index]寻址的微操作融合的例子.例如,请参见第12.2节"Core2上的相同示例".那么正确的答案是什么?

cpu x86 assembly intel iaca

44
推荐指数
4
解决办法
4504
查看次数

SSE:将短整数转换为float

我想使用SSE将无符号短数组转换为float.让我们说吧

__m128i xVal;     // Has 8 16-bit unsigned integers
__m128 y1, y2;    // 2 xmm registers for 8 float values
Run Code Online (Sandbox Code Playgroud)

我希望y1中的前4个uint16和y2中的下一个4 uint16.需要知道哪些内在使用.

x86 sse simd

11
推荐指数
2
解决办法
8640
查看次数

标签 统计

x86 ×2

assembly ×1

cpu ×1

iaca ×1

intel ×1

simd ×1

sse ×1