SystemZSubtarget.h [plain text]
#ifndef SYSTEMZSUBTARGET_H
#define SYSTEMZSUBTARGET_H
#include "llvm/ADT/Triple.h"
#include "llvm/Target/TargetSubtargetInfo.h"
#include <string>
#define GET_SUBTARGETINFO_HEADER
#include "SystemZGenSubtargetInfo.inc"
namespace llvm {
class GlobalValue;
class StringRef;
class SystemZSubtarget : public SystemZGenSubtargetInfo {
virtual void anchor();
protected:
bool HasDistinctOps;
bool HasLoadStoreOnCond;
bool HasHighWord;
bool HasFPExtension;
bool HasFastSerialization;
bool HasInterlockedAccess1;
private:
Triple TargetTriple;
public:
SystemZSubtarget(const std::string &TT, const std::string &CPU,
const std::string &FS);
virtual bool useAA() const LLVM_OVERRIDE { return true; }
void ParseSubtargetFeatures(StringRef CPU, StringRef FS);
bool hasDistinctOps() const { return HasDistinctOps; }
bool hasLoadStoreOnCond() const { return HasLoadStoreOnCond; }
bool hasHighWord() const { return HasHighWord; }
bool hasFPExtension() const { return HasFPExtension; }
bool hasFastSerialization() const { return HasFastSerialization; }
bool hasInterlockedAccess1() const { return HasInterlockedAccess1; }
bool isPC32DBLSymbol(const GlobalValue *GV, Reloc::Model RM,
CodeModel::Model CM) const;
bool isTargetELF() const { return TargetTriple.isOSBinFormatELF(); }
};
}
#endif