Why do some SSE “mov” instructions specify that they move floating-point values?

前端 未结 2 1627
滥情空心
滥情空心 2021-01-04 01:18

Many SSE \"mov\" instructions specify that they are moving floating-point values. For example:

  • MOVHLPS—Move Packed Single-Precision Floating-Point Values High
2条回答
  •  死守一世寂寞
    2021-01-04 01:43

    I think I've found the answer: some microarchitectures execute floating-point instructions on different execution units than integer instructions. You get better overall latency when a stream of instructions stays within the same "domain" (integer or floating point). This is covered in pretty good detail in Agner Fog's optimization manual, in the section titled "Data Bypass Delays": http://www.agner.org/optimize/microarchitecture.pdf

    I found this explanation in this similar SO question: Difference between MOVDQA and MOVAPS x86 instructions?

提交回复
热议问题