我处于以下情况:
kernel_fpu_begin/kernel_fpu_end
用于每个浮点计算块。make
来编译内核代码时,出现此错误:SSE register return with SSE disabled
,对应的行是input[3] = (float)util / (float)max;
这是我的问题:
-mno-sse -mno-sse2
,该怎么做才能启用SSE?float x[10]
时,我应该使用kernel_fpu_begin/kernel_fpu_end
吗?谢谢!
您需要停止编译器使用SSE进行例如在kernel_fpu_begin
之前或end
之后复制一个16字节的结构。因此,您不能只在使用-msse2
编译的文件中的函数内部使用块。
您可能可以将FP代码放在单独的函数中,并在该函数上使用__attribute__((target("sse2")))
或__attribute__((target("sse2")))
,以在没有命令行选项的情况下启用它,特别是对于x86。
显然,该函数不能按值return
一个"avx"
,因为标准调用约定以XMM0返回,并且您需要在不进行编译的情况下编译调用方。”>