]> granicus.if.org Git - llvm/commit
[X86] Correct scheduler information for rotate by constant for Haswell, Broadwell...
authorCraig Topper <craig.topper@intel.com>
Thu, 7 Mar 2019 21:22:56 +0000 (21:22 +0000)
committerCraig Topper <craig.topper@intel.com>
Thu, 7 Mar 2019 21:22:56 +0000 (21:22 +0000)
commitcfbc66ebed1f2f67dfcd77edf4fc7bd00cf02f81
treec76eabf712fc3a1a80264e1c2859c1c582c6fdc5
parent0d2610da268833fdca95d80d2134d81f546eb854
[X86] Correct scheduler information for rotate by constant for Haswell, Broadwell, and Skylake.

Rotate with explicit immediate is a single uop from Haswell on. An immediate of 1 has a dependency on the previous writer of flags, but the other immediate values do not.

The implicit rotate by 1 instruction is 2 uops. But the flags are merged after the rotate uop so the data result does not see the flag dependency. But I don't think we have any way of modeling that.

RORX is 1 uop without the load. 2 uops with the load. We currently model these with WriteShift/WriteShiftLd.

Differential Revision: https://reviews.llvm.org/D59077

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355636 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86SchedBroadwell.td
lib/Target/X86/X86SchedHaswell.td
lib/Target/X86/X86SchedSkylakeClient.td
lib/Target/X86/X86SchedSkylakeServer.td
test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s
test/tools/llvm-mca/X86/Haswell/resources-x86_64.s
test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s
test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s