[PATCH] D59077: [X86] Correct scheduler information for rotate by constant for Haswell, Broadwell, and Skylake.

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 7 00:44:35 PST 2019


craig.topper created this revision.
craig.topper added reviewers: RKSimon, andreadb.
Herald added a subscriber: gbedwell.
Herald added a project: LLVM.

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.


Repository:
  rL LLVM

https://reviews.llvm.org/D59077

Files:
  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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D59077.189660.patch
Type: text/x-patch
Size: 35372 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190307/db04f340/attachment.bin>


More information about the llvm-commits mailing list