TableGen: Check scheduling models for completeness
authorMatthias Braun <matze@braunis.de>
Tue, 1 Mar 2016 20:03:21 +0000 (20:03 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 1 Mar 2016 20:03:21 +0000 (20:03 +0000)
commit17cb57995eb9535c30cdff864b6157a34d1f5143
treeb3f0a74bf54273a3ceba97c71bec0daaa24cdd5f
parent8e0a734fc5ee45e2dc8926c58b6ed68fd57500ea
TableGen: Check scheduling models for completeness

TableGen checks at compiletime that for scheduling models with
"CompleteModel = 1" one of the following holds:

- Is marked with the hasNoSchedulingInfo flag
- The instruction is a subclass of Sched
- There are InstRW definitions in the scheduling model

Typical steps necessary to complete a model:

- Ensure all pseudo instructions that are expanded before machine
  scheduling (usually everything handled with EmitYYY() functions in
  XXXTargetLowering).
- If a CPU does not support some instructions mark the corresponding
  resource unsupported: "WriteRes<WriteXXX, []> { let Unsupported = 1; }".
- Add missing scheduling information.

Differential Revision: http://reviews.llvm.org/D17747

llvm-svn: 262384
22 files changed:
llvm/include/llvm/Target/TargetSchedule.td
llvm/lib/Target/AArch64/AArch64SchedA53.td
llvm/lib/Target/AArch64/AArch64SchedA57.td
llvm/lib/Target/AArch64/AArch64SchedCyclone.td
llvm/lib/Target/AArch64/AArch64SchedKryo.td
llvm/lib/Target/AMDGPU/SISchedule.td
llvm/lib/Target/ARM/ARMScheduleA8.td
llvm/lib/Target/Hexagon/HexagonScheduleV4.td
llvm/lib/Target/Hexagon/HexagonScheduleV55.td
llvm/lib/Target/Hexagon/HexagonScheduleV60.td
llvm/lib/Target/Mips/MipsScheduleP5600.td
llvm/lib/Target/PowerPC/PPCSchedule440.td
llvm/lib/Target/PowerPC/PPCScheduleA2.td
llvm/lib/Target/PowerPC/PPCScheduleE500mc.td
llvm/lib/Target/PowerPC/PPCScheduleE5500.td
llvm/lib/Target/PowerPC/PPCScheduleG5.td
llvm/lib/Target/PowerPC/PPCScheduleP7.td
llvm/lib/Target/PowerPC/PPCScheduleP8.td
llvm/lib/Target/X86/X86Schedule.td
llvm/lib/Target/X86/X86ScheduleAtom.td
llvm/utils/TableGen/CodeGenSchedule.cpp
llvm/utils/TableGen/CodeGenSchedule.h