diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonSubtarget.cpp | 10 | ||||
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonSubtarget.h | 5 | ||||
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp | 15 | ||||
| -rw-r--r-- | llvm/lib/Target/TargetSubtargetInfo.cpp | 20 | 
4 files changed, 20 insertions, 30 deletions
| diff --git a/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp b/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp index 380f023bcf3..1717ae3fe88 100644 --- a/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp +++ b/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp @@ -48,6 +48,10 @@ EnableIEEERndNear(      cl::Hidden, cl::ZeroOrMore, cl::init(false),      cl::desc("Generate non-chopped conversion from fp to int.")); +static cl::opt<bool> DisableHexagonMISched("disable-hexagon-misched", +      cl::Hidden, cl::ZeroOrMore, cl::init(false), +      cl::desc("Disable Hexagon MI Scheduling")); +  HexagonSubtarget &  HexagonSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) {    // If the programmer has not specified a Hexagon version, default to -mv4. @@ -91,3 +95,9 @@ HexagonSubtarget::HexagonSubtarget(StringRef TT, StringRef CPU, StringRef FS,  // Pin the vtable to this file.  void HexagonSubtarget::anchor() {} + +bool HexagonSubtarget::enableMachineScheduler() const { +  if (DisableHexagonMISched.getNumOccurrences()) +    return !DisableHexagonMISched; +  return true; +} diff --git a/llvm/lib/Target/Hexagon/HexagonSubtarget.h b/llvm/lib/Target/Hexagon/HexagonSubtarget.h index 57de5461f08..780567bcd36 100644 --- a/llvm/lib/Target/Hexagon/HexagonSubtarget.h +++ b/llvm/lib/Target/Hexagon/HexagonSubtarget.h @@ -85,6 +85,11 @@ public:    bool hasV5TOps() const { return getHexagonArchVersion() >= V5; }    bool hasV5TOpsOnly() const { return getHexagonArchVersion() == V5; }    bool modeIEEERndNear() const { return ModeIEEERndNear; } +  bool enableMachineScheduler() const override; +  // Always use the TargetLowering default scheduler. +  // FIXME: This will use the vliw scheduler which is probably just hurting +  // compiler time and will be removed eventually anyway. +  bool enableMachineSchedDefaultSched() const override { return false; }    const std::string &getCPUString () const { return CPUString; } diff --git a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp index f40c2568045..15591061839 100644 --- a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp +++ b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp @@ -29,10 +29,6 @@ using namespace llvm;  static cl:: opt<bool> DisableHardwareLoops("disable-hexagon-hwloops",        cl::Hidden, cl::desc("Disable Hardware Loops for Hexagon target")); -static cl::opt<bool> DisableHexagonMISched("disable-hexagon-misched", -      cl::Hidden, cl::ZeroOrMore, cl::init(false), -      cl::desc("Disable Hexagon MI Scheduling")); -  static cl::opt<bool> DisableHexagonCFGOpt("disable-hexagon-cfgopt",        cl::Hidden, cl::ZeroOrMore, cl::init(false),        cl::desc("Disable Hexagon CFG Optimization")); @@ -82,16 +78,7 @@ namespace {  class HexagonPassConfig : public TargetPassConfig {  public:    HexagonPassConfig(HexagonTargetMachine *TM, PassManagerBase &PM) -    : TargetPassConfig(TM, PM) { -    // FIXME: Rather than calling enablePass(&MachineSchedulerID) below, define -    // HexagonSubtarget::enableMachineScheduler() { return true; }. -    // That will bypass the SelectionDAG VLIW scheduler, which is probably just -    // hurting compile time and will be removed eventually anyway. -    if (DisableHexagonMISched) -      disablePass(&MachineSchedulerID); -    else -      enablePass(&MachineSchedulerID); -  } +      : TargetPassConfig(TM, PM) {}    HexagonTargetMachine &getHexagonTargetMachine() const {      return getTM<HexagonTargetMachine>(); diff --git a/llvm/lib/Target/TargetSubtargetInfo.cpp b/llvm/lib/Target/TargetSubtargetInfo.cpp index 10597a84bca..b2bb59ea28c 100644 --- a/llvm/lib/Target/TargetSubtargetInfo.cpp +++ b/llvm/lib/Target/TargetSubtargetInfo.cpp @@ -23,22 +23,6 @@ TargetSubtargetInfo::TargetSubtargetInfo() {}  TargetSubtargetInfo::~TargetSubtargetInfo() {} -// Temporary option to compare overall performance change when moving from the -// SD scheduler to the MachineScheduler pass pipeline. This is convenient for -// benchmarking during the transition from SD to MI scheduling. Once armv7 makes -// the switch, it should go away. The normal way to enable/disable the -// MachineScheduling pass itself is by using -enable-misched. For targets that -// already use MI sched (via MySubTarget::enableMachineScheduler()) -// -misched-bench=false negates the subtarget hook. -static cl::opt<bool> BenchMachineSched("misched-bench", cl::Hidden, -    cl::desc("Migrate from the target's default SD scheduler to MI scheduler")); - -bool TargetSubtargetInfo::useMachineScheduler() const { -  if (BenchMachineSched.getNumOccurrences()) -    return BenchMachineSched; -  return enableMachineScheduler(); -} -  bool TargetSubtargetInfo::enableAtomicExpand() const {    return true;  } @@ -47,6 +31,10 @@ bool TargetSubtargetInfo::enableMachineScheduler() const {    return false;  } +bool TargetSubtargetInfo::enableJoinGlobalCopies() const { +  return enableMachineScheduler(); +} +  bool TargetSubtargetInfo::enableRALocalReassignment(      CodeGenOpt::Level OptLevel) const {    return true; | 

