如何在x64 CPU上快速计算sincos?

时间:2018-02-25 08:48:22

标签: performance sse avx sin function-approximation

这是一个在SSE / AVX指令系列中经验丰富的用户,以及熟悉其性能分析的人员。我看到了很多不同的实现和方法,范围从older for SSE2到新的。网络充斥着这样的链接。但就我个人而言,我对sse装配分析并不十分经验。有些人指出了uops,缓存,这需要一些低级知识。所以我要求提示和你的个人经历。如果你有时间推出一些比较,那么"什么是最快的"为什么,你看到了什么方法。实现可能不那么精确,单个FP精度的10-16位就足够了。越多越好,但是当它不影响速度时。

PS。为了避免元洪水,我可以准确地描述任务的细节:

  • 给定标量参数x(以弧度表示),它在xmm寄存器中传递(根据x64 fastcall约定)。
  • 编写一个带签名__m128 sincos(float x)的函数;返回其sin(x)和cos(x)值近似值。
  • 返回值应位于一个xmm寄存器内,并以尽可能最快的方式计算,以满足10位精度要求。
  • 参数可以是任何真实数字(但不是naninf,依此类推)。如果方法需要参数规范化,其性能实现(fmod())也是主题。但问题不在于处理特殊的FP案例。

这可能是重复的,但我在这里找不到类似的问题,所以请指出我,如果已有的话。

0 个答案:

没有答案