[X86] Add SchedWrites for CMOV and SETCC. Use them to remove InstRWs.
authorCraig Topper <craig.topper@intel.com>
Sun, 8 Apr 2018 17:53:18 +0000 (17:53 +0000)
committerCraig Topper <craig.topper@intel.com>
Sun, 8 Apr 2018 17:53:18 +0000 (17:53 +0000)
commitb7baa358f632324f593deeba3daa3268795bd258
treec29b630419f422bb26d81126670d2e2acd405d94
parentc362f42b6acc8f159ac7453f370cf72a672cbc12
[X86] Add SchedWrites for CMOV and SETCC. Use them to remove InstRWs.

Summary:
Cmov and setcc previously used WriteALU, but on Intel processors at least they are more restricted than basic ALU ops.

This patch adds new SchedWrites for them and removes the InstRWs. I had to leave some InstRWs for CMOVA/CMOVBE and SETA/SETBE because those have an extra uop relative to the other condition codes on Intel CPUs.

The test changes are due to fixing a missing ZnAGU dependency on the memory form of setcc.

Reviewers: RKSimon, andreadb, GGanesh

Reviewed By: RKSimon

Subscribers: GGanesh, llvm-commits

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

llvm-svn: 329539
llvm/lib/Target/X86/X86InstrCMovSetCC.td
llvm/lib/Target/X86/X86SchedBroadwell.td
llvm/lib/Target/X86/X86SchedHaswell.td
llvm/lib/Target/X86/X86SchedSandyBridge.td
llvm/lib/Target/X86/X86SchedSkylakeClient.td
llvm/lib/Target/X86/X86SchedSkylakeServer.td
llvm/lib/Target/X86/X86Schedule.td
llvm/lib/Target/X86/X86ScheduleBtVer2.td
llvm/lib/Target/X86/X86ScheduleSLM.td
llvm/lib/Target/X86/X86ScheduleZnver1.td
llvm/test/CodeGen/X86/schedule-x86_64.ll