aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-04-19 18:00:17 +0000
committerCraig Topper <craig.topper@intel.com>2018-04-19 18:00:17 +0000
commitb5f265913060be12d375adf11b417def00893e66 (patch)
tree1302879ec9a79d9f4456ddf522760b2bf88dcdec /llvm/lib/Transforms/Utils/LoopRotationUtils.cpp
parenta201787fd700b4eaaf951d381a158d093031e71a (diff)
downloadllvm-b5f265913060be12d375adf11b417def00893e66.zip
llvm-b5f265913060be12d375adf11b417def00893e66.tar.gz
llvm-b5f265913060be12d375adf11b417def00893e66.tar.bz2
[X86] Correct the scheduling data for register forms of XCHG and XADD on Intel CPUs.
The XCHG16rr/XCHG32rr/XCHG64rr instructions should be 3 uops just like XCHG8rr. I believe they're just implemented as 3 move uops with a temporary register. XADD is probably 2 moves and an add also using a temporary register. Change the latency for both from 2 cycles to 3 cycles. Only 2 of the uops are serialized in their execution, the move into the temporary and the move out of the temporary. The move from one GPR to the other should be able to go in parallel with this if there are ALU resources available. llvm-svn: 330349
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopRotationUtils.cpp')
0 files changed, 0 insertions, 0 deletions