[X86] AMD Zen 3: SSE XMM moves are zero-cycle
authorRoman Lebedev <lebedev.ri@gmail.com>
Fri, 7 May 2021 13:15:43 +0000 (16:15 +0300)
committerRoman Lebedev <lebedev.ri@gmail.com>
Fri, 7 May 2021 14:06:44 +0000 (17:06 +0300)
commit9db4203883f57f34e7e88fd6deb761ef8a9f7d5a
treea52013da3564cd9110a1e718950ba63b8168c103
parent0d961fbd525cb7df3e981d6469b81cbf8f5e5883
[X86] AMD Zen 3: SSE XMM moves are zero-cycle

I've verified this with llvm-exegesis.
This is not limited to zero registers.

Refs:
AMD SOG 19h, 2.9.4 Zero Cycle Move
The processor is able to execute certain register to register
mov operations with zero cycle delay.

Agner,
22.13 Instructions with no latency
Register-to-register move instructions are resolved at
the register rename stage without using any execution units.
These instructions have zero latency. It is possible to do six such
register renamings per clock cycle, and it is even possible to
rename the same register multiple times in one clock cycle.
llvm/lib/Target/X86/X86ScheduleZnver3.td
llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-sse-xmm.s