Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly vmovd是否有avx sse过渡处罚?_Assembly_Avx - Fatal编程技术网

Assembly vmovd是否有avx sse过渡处罚?

Assembly vmovd是否有avx sse过渡处罚?,assembly,avx,Assembly,Avx,(假设在movd前后有许多avx指令)如果我使用vmovd在通用寄存器和ymm寄存器之间移动数据,是否因为只使用1个ymm浮点值而变慢?avx sse转换惩罚仅适用于执行非VEX编码的sse指令和sse编码的指令。只要您使用vmovd而不是(比如)使用movd,一切都应该正常。avx sse转换惩罚仅适用于执行非VEX编码的sse指令和sse编码的指令。只要你使用vmovd而不是,比如说,movd,一切都会好起来。你能详细说明一下吗?avx sse转换惩罚仅在执行非VEX编码的sse指令和sse

(假设在movd前后有许多avx指令)如果我使用vmovd在通用寄存器和ymm寄存器之间移动数据,是否因为只使用1个ymm浮点值而变慢?

avx sse转换惩罚仅适用于执行非VEX编码的sse指令和sse编码的指令。只要您使用
vmovd
而不是(比如)使用
movd
,一切都应该正常。

avx sse转换惩罚仅适用于执行非VEX编码的sse指令和sse编码的指令。只要你使用
vmovd
而不是,比如说,
movd
,一切都会好起来。

你能详细说明一下吗?avx sse转换惩罚仅在执行非VEX编码的sse指令和sse编码指令时适用。只要您使用
vmovd
而不是,比如说,
movd
,一切都会很好。谢谢。这就是我需要的。我在C++中编写了一些内嵌的ASM,它使用AVX内核围绕它。考虑只使用本质,并删除内联程序集。编译器通常非常擅长选择避免这种惩罚的指令。但编译器擅长对我希望不被触碰的东西重新排序(例如我使用vmovd的代码块中的kahan加法)。如果编译器符合C标准,则它不能“优化”浮点运算。不需要内联汇编,只需确保编译时不会使用告诉编译器忽略C标准的选项(如
-Ofast
)。您能详细说明一下吗?avx sse转换惩罚仅在执行非VEX编码的sse指令和sse编码指令时适用。只要您使用
vmovd
而不是,比如说,
movd
,一切都会很好。谢谢。这就是我需要的。我在C++中编写了一些内嵌的ASM,它使用AVX内核围绕它。考虑只使用本质,并删除内联程序集。编译器通常非常擅长选择避免这种惩罚的指令。但编译器擅长对我希望不被触碰的东西重新排序(例如我使用vmovd的代码块中的kahan加法)。如果编译器符合C标准,则它不能“优化”浮点运算。不需要内联汇编,只需确保编译时没有使用告诉编译器忽略C标准的选项(如
-Ofast
)。