什么是"修理"花车?

Sim*_*eke 6 simd intrinsics avx512

我正在查看AVX-512中的指令集并注意到一组fixup指令.一些例子:

_mm512_fixupimm_pd, 
_mm512_mask_fixupimm_pd, 
_mm512_maskz_fixupimm_pd

_mm512_fixupimm_round_pd, 
_mm512_mask_fixupimm_round_pd, 
_mm512_maskz_fixupimm_round_pd
Run Code Online (Sandbox Code Playgroud)

这里的"修理"是什么意思?

JCx*_*JCx 4

这是一个很好的问题。英特尔的答案(我的粗体)在这里:

该指令专门用于修复涉及一个源的算术计算结果,以便它们符合规范,尽管它通常用于修复多指令序列的结果以反映特殊数字输入。例如,考虑 rcp(0)。在rcp中输入0,根据DX10规范应该得到INF。然而,通过 Newton-Raphson 计算 rcp(其中 x=approx(1/0))会产生不正确的结果。为了解决这个问题,可以在 NR 倒数序列之后使用 VFIXUPIMMPS 将结果设置为正确的值(即输入为 0 时的 INF)。

在以下位置查找 VFIXUPIMMPD:

https://software.intel.com/sites/default/files/management/0d/53/319433-022.pdf