X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FSystemZ%2FSystemZSubtarget.h;h=74d3f90ad74d05919aa10898dd70d45fb8676668;hb=b21ab43cfc3fa0dacf5c95f04e58b6d804b59a16;hp=9bf1f08a07b442ca3150911100a5124f73b1d474;hpb=5b1b4489cf3a0f56f8be0673fc5cc380a32d277b;p=oota-llvm.git diff --git a/lib/Target/SystemZ/SystemZSubtarget.h b/lib/Target/SystemZ/SystemZSubtarget.h index 9bf1f08a07b..74d3f90ad74 100644 --- a/lib/Target/SystemZ/SystemZSubtarget.h +++ b/lib/Target/SystemZ/SystemZSubtarget.h @@ -1,4 +1,4 @@ -//==-- SystemZSubtarget.h - Define Subtarget for the SystemZ ---*- C++ -*--===// +//===-- SystemZSubtarget.h - SystemZ subtarget information -----*- C++ -*--===// // // The LLVM Compiler Infrastructure // @@ -11,37 +11,59 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_TARGET_SystemZ_SUBTARGET_H -#define LLVM_TARGET_SystemZ_SUBTARGET_H +#ifndef SYSTEMZSUBTARGET_H +#define SYSTEMZSUBTARGET_H +#include "llvm/ADT/Triple.h" #include "llvm/Target/TargetSubtargetInfo.h" #include #define GET_SUBTARGETINFO_HEADER -#include "SystemZGenSubtarget.inc" +#include "SystemZGenSubtargetInfo.inc" namespace llvm { class GlobalValue; -class TargetMachine; +class StringRef; class SystemZSubtarget : public SystemZGenSubtargetInfo { - bool HasZ10Insts; +protected: + bool HasDistinctOps; + bool HasLoadStoreOnCond; + bool HasHighWord; + bool HasFPExtension; + +private: + Triple TargetTriple; + public: - /// This constructor initializes the data members to match that - /// of the specified triple. - /// SystemZSubtarget(const std::string &TT, const std::string &CPU, const std::string &FS); - /// ParseSubtargetFeatures - Parses features string setting specified - /// subtarget options. Definition of function is auto generated by tblgen. - void ParseSubtargetFeatures(const std::string &FS, const std::string &CPU); + // This is important for reducing register pressure in vector code. + virtual bool useAA() const LLVM_OVERRIDE { return true; } + + // Automatically generated by tblgen. + void ParseSubtargetFeatures(StringRef CPU, StringRef FS); + + // Return true if the target has the distinct-operands facility. + bool hasDistinctOps() const { return HasDistinctOps; } + + // Return true if the target has the load/store-on-condition facility. + bool hasLoadStoreOnCond() const { return HasLoadStoreOnCond; } + + // Return true if the target has the high-word facility. + bool hasHighWord() const { return HasHighWord; } + + // Return true if the target has the floating-point extension facility. + bool hasFPExtension() const { return HasFPExtension; } - bool isZ10() const { return HasZ10Insts; } + // Return true if GV can be accessed using LARL for reloc model RM + // and code model CM. + bool isPC32DBLSymbol(const GlobalValue *GV, Reloc::Model RM, + CodeModel::Model CM) const; - bool GVRequiresExtraLoad(const GlobalValue* GV, const TargetMachine& TM, - bool isDirectCall) const; + bool isTargetELF() const { return TargetTriple.isOSBinFormatELF(); } }; -} // End llvm namespace +} // end namespace llvm -#endif // LLVM_TARGET_SystemZ_SUBTARGET_H +#endif