mirror of
https://github.com/opnsense/src.git
synced 2026-02-23 09:56:47 -05:00
all of the features in the current working draft of the upcoming C++ standard, provisionally named C++1y. The code generator's performance is greatly increased, and the loop auto-vectorizer is now enabled at -Os and -O2 in addition to -O3. The PowerPC backend has made several major improvements to code generation quality and compile time, and the X86, SPARC, ARM32, Aarch64 and SystemZ backends have all seen major feature work. Release notes for llvm and clang can be found here: <http://llvm.org/releases/3.4/docs/ReleaseNotes.html> <http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html> MFC after: 1 month
70 lines
2.1 KiB
C++
70 lines
2.1 KiB
C++
//===-- SystemZSubtarget.h - SystemZ subtarget information -----*- C++ -*--===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file declares the SystemZ specific subclass of TargetSubtargetInfo.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#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;
|
|
|
|
private:
|
|
Triple TargetTriple;
|
|
|
|
public:
|
|
SystemZSubtarget(const std::string &TT, const std::string &CPU,
|
|
const std::string &FS);
|
|
|
|
// 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; }
|
|
|
|
// 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 isTargetELF() const { return TargetTriple.isOSBinFormatELF(); }
|
|
};
|
|
} // end namespace llvm
|
|
|
|
#endif
|