diff options
Diffstat (limited to 'include/llvm/Target/TargetSubtarget.h')
-rw-r--r-- | include/llvm/Target/TargetSubtarget.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/include/llvm/Target/TargetSubtarget.h b/include/llvm/Target/TargetSubtarget.h index ac094f6..fd107e0 100644 --- a/include/llvm/Target/TargetSubtarget.h +++ b/include/llvm/Target/TargetSubtarget.h @@ -14,6 +14,8 @@ #ifndef LLVM_TARGET_TARGETSUBTARGET_H #define LLVM_TARGET_TARGETSUBTARGET_H +#include "llvm/Target/TargetMachine.h" + namespace llvm { class SDep; @@ -31,6 +33,10 @@ class TargetSubtarget { protected: // Can only create subclasses... TargetSubtarget(); public: + // AntiDepBreakMode - Type of anti-dependence breaking that should + // be performed before post-RA scheduling. + typedef enum { ANTIDEP_NONE, ANTIDEP_CRITICAL, ANTIDEP_ALL } AntiDepBreakMode; + virtual ~TargetSubtarget(); /// getSpecialAddressLatency - For targets where it is beneficial to @@ -39,9 +45,14 @@ public: /// should be attempted. virtual unsigned getSpecialAddressLatency() const { return 0; } - // enablePostRAScheduler - Return true to enable - // post-register-allocation scheduling. - virtual bool enablePostRAScheduler() const { return false; } + // enablePostRAScheduler - If the target can benefit from post-regalloc + // scheduling and the specified optimization level meets the requirement + // return true to enable post-register-allocation scheduling. + virtual bool enablePostRAScheduler(CodeGenOpt::Level OptLevel, + AntiDepBreakMode& mode) const { + mode = ANTIDEP_NONE; + return false; + } // adjustSchedDependency - Perform target specific adjustments to // the latency of a schedule dependency. |