用SSE编译Delphi单元(fma)

时间:2017-10-30 20:20:02

标签: delphi sse freepascal

在Free-Pascal中,您可以通过条件定义来确定是否使用SSE2 / 3/64指令编译代码 https://www.freepascal.org/docs-html/current/prog/prog.html#QQ2-333-379, 表G.3:可能的FPU定义何时使用FPC进行编译

FPUSSE2   SSE 2 instructions on Intel I386 and higher. 
FPUSSE3   SSE 3 instructions on Intel I386 and higher, AMD64.
FPUSSE64  SSE64 FPU on Intel I386 and higher, AMD64. 

我知道Delphi 64位编译器在Win RTL中使用SSE,但我的问题是:

  

如果使用SSE指令编译单元,Delphi中是否存在检查编译时的已知方法,特别是如果使用硬件fma指令计算a*b + c

1 个答案:

答案 0 :(得分:3)

  

如果一个单元是用SSE指令编译的,那么Delphi中有一个已知的方法可以在编译时进行检查吗?

在Intel平台上,如果定义了CPUX64条件,则编译器使用SSE指令生成浮点代码。否则,将生成x87指令。

没有Delphi编译器使用FMA指令生成代码。自从在XE2中首次发布以来,dcc64使用的浮点代码生成并没有实质性改变。