OSDN Git Service

[ARM] Use post-RA MI scheduler when +use-misched is set
authorEugene Leviant <eleviant@accesssoftek.com>
Fri, 20 Oct 2017 14:29:17 +0000 (14:29 +0000)
committerEugene Leviant <eleviant@accesssoftek.com>
Fri, 20 Oct 2017 14:29:17 +0000 (14:29 +0000)
Differential revision: https://reviews.llvm.org/D39100

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316214 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMTargetMachine.cpp
test/CodeGen/ARM/cortex-a57-misched-alu.ll

index 9a191e4..39b8df4 100644 (file)
@@ -310,7 +310,14 @@ namespace {
 class ARMPassConfig : public TargetPassConfig {
 public:
   ARMPassConfig(ARMBaseTargetMachine &TM, PassManagerBase &PM)
-    : TargetPassConfig(TM, PM) {}
+      : TargetPassConfig(TM, PM) {
+    if (TM.getOptLevel() != CodeGenOpt::None) {
+      ARMGenSubtargetInfo STI(TM.getTargetTriple(), TM.getTargetCPU(),
+                              TM.getTargetFeatureString());
+      if (STI.hasFeature(ARM::FeatureUseMISched))
+        substitutePass(&PostRASchedulerID, &PostMachineSchedulerID);
+    }
+  }
 
   ARMBaseTargetMachine &getARMTargetMachine() const {
     return getTM<ARMBaseTargetMachine>();
index 960ee87..2ced60f 100644 (file)
@@ -1,5 +1,6 @@
 ; REQUIRES: asserts
 ; RUN: llc < %s -mtriple=armv8r-eabi -mcpu=cortex-a57 -enable-misched -verify-misched -debug-only=machine-scheduler -o - 2>&1 > /dev/null | FileCheck %s
+; RUN: llc < %s -mtriple=armv8r-eabi -mcpu=cortex-a57 -mattr=+use-misched -debug-only=machine-scheduler -o - 2>&1 > /dev/null | FileCheck %s --check-prefix=POST-MISCHED
 
 ; Check the latency for ALU shifted operand variants.
 ;
@@ -60,6 +61,8 @@
 ; CHECK:      Ready
 ; CHECK-NEXT: A57UnitI
 
+; Check that post RA MI scheduler is invoked with +use-misched
+; POST-MISCHED: Before post-MI-sched
 
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 target triple = "armv8r-arm-none-eabi"