1 //==-- llvm/Target/TargetSubtarget.h - Target Information --------*- C++ -*-==//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file describes the subtarget options of a Target machine.
12 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_TARGET_TARGETSUBTARGET_H
15 #define LLVM_TARGET_TARGETSUBTARGET_H
22 //===----------------------------------------------------------------------===//
24 /// TargetSubtarget - Generic base class for all target subtargets. All
25 /// Target-specific options that control code generation and printing should
26 /// be exposed through a TargetSubtarget-derived class.
28 class TargetSubtarget {
29 TargetSubtarget(const TargetSubtarget&); // DO NOT IMPLEMENT
30 void operator=(const TargetSubtarget&); // DO NOT IMPLEMENT
31 protected: // Can only create subclasses...
34 virtual ~TargetSubtarget();
36 /// getSpecialAddressLatency - For targets where it is beneficial to
37 /// backschedule instructions that compute addresses, return a value
38 /// indicating the number of scheduling cycles of backscheduling that
39 /// should be attempted.
40 virtual unsigned getSpecialAddressLatency() const { return 0; }
42 // adjustSchedDependency - Perform target specific adjustments to
43 // the latency of a schedule dependency.
44 virtual void adjustSchedDependency(SUnit *def, SUnit *use,
48 } // End llvm namespace