Move Post RA Scheduling flag bit into SchedMachineModel
authorSanjay Patel <spatel@rotateright.com>
Tue, 15 Jul 2014 22:39:58 +0000 (22:39 +0000)
committerSanjay Patel <spatel@rotateright.com>
Tue, 15 Jul 2014 22:39:58 +0000 (22:39 +0000)
commitf7e042324ad60d9efdb03064ece8a742bd8c814d
tree8d83aa93e751e0f4987225cf97c3560345b20463
parent110748bbb4a290e10e3d8246edd717bcfe3ca380
Move Post RA Scheduling flag bit into SchedMachineModel

Refactoring; no functional changes intended

    Removed PostRAScheduler bits from subtargets (X86, ARM).
    Added PostRAScheduler bit to MCSchedModel class.
    This bit is set by a CPU's scheduling model (if it exists).
    Removed enablePostRAScheduler() function from TargetSubtargetInfo and subclasses.
    Fixed the existing enablePostMachineScheduler() method to use the MCSchedModel (was just returning false!).
    Added methods to TargetSubtargetInfo to allow overrides for AntiDepBreakMode, CriticalPathRCs, and OptLevel for PostRAScheduling.
    Added enablePostRAScheduler() function to PostRAScheduler class which queries the subtarget for the above values.
    Preserved existing scheduler behavior for ARM, MIPS, PPC, and X86:
       a. ARM overrides the CPU's postRA settings by enabling postRA for any non-Thumb or Thumb2 subtarget.
       b. MIPS overrides the CPU's postRA settings by enabling postRA for everything.
       c. PPC overrides the CPU's postRA settings by enabling postRA for everything.
       d. X86 is the only target that actually has postRA specified via sched model info.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213101 91177308-0d34-0410-b5e6-96231b3b80d8
17 files changed:
include/llvm/MC/MCSchedule.h
include/llvm/Target/TargetSchedule.td
include/llvm/Target/TargetSubtargetInfo.h
lib/CodeGen/PostRASchedulerList.cpp
lib/Target/ARM/ARMSubtarget.cpp
lib/Target/ARM/ARMSubtarget.h
lib/Target/Mips/MipsSubtarget.cpp
lib/Target/Mips/MipsSubtarget.h
lib/Target/PowerPC/PPCSubtarget.cpp
lib/Target/PowerPC/PPCSubtarget.h
lib/Target/TargetSubtargetInfo.cpp
lib/Target/X86/X86Schedule.td
lib/Target/X86/X86ScheduleAtom.td
lib/Target/X86/X86ScheduleSLM.td
lib/Target/X86/X86Subtarget.cpp
lib/Target/X86/X86Subtarget.h
utils/TableGen/SubtargetEmitter.cpp