You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.234
Former-commit-id: 8071ec1a8c5eaa9be24b41745add19297608001f
This commit is contained in:
parent
f32dbaf0b2
commit
212f6bafcb
124
external/llvm/lib/Target/Sparc/SparcSubtarget.h
vendored
124
external/llvm/lib/Target/Sparc/SparcSubtarget.h
vendored
@ -1,124 +0,0 @@
|
||||
//===-- SparcSubtarget.h - Define Subtarget for the SPARC -------*- 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 SPARC specific subclass of TargetSubtargetInfo.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIB_TARGET_SPARC_SPARCSUBTARGET_H
|
||||
#define LLVM_LIB_TARGET_SPARC_SPARCSUBTARGET_H
|
||||
|
||||
#include "SparcFrameLowering.h"
|
||||
#include "SparcISelLowering.h"
|
||||
#include "SparcInstrInfo.h"
|
||||
#include "llvm/CodeGen/SelectionDAGTargetInfo.h"
|
||||
#include "llvm/CodeGen/TargetFrameLowering.h"
|
||||
#include "llvm/CodeGen/TargetSubtargetInfo.h"
|
||||
#include "llvm/IR/DataLayout.h"
|
||||
#include <string>
|
||||
|
||||
#define GET_SUBTARGETINFO_HEADER
|
||||
#include "SparcGenSubtargetInfo.inc"
|
||||
|
||||
namespace llvm {
|
||||
class StringRef;
|
||||
|
||||
class SparcSubtarget : public SparcGenSubtargetInfo {
|
||||
Triple TargetTriple;
|
||||
virtual void anchor();
|
||||
bool UseSoftMulDiv;
|
||||
bool IsV9;
|
||||
bool IsLeon;
|
||||
bool V8DeprecatedInsts;
|
||||
bool IsVIS, IsVIS2, IsVIS3;
|
||||
bool Is64Bit;
|
||||
bool HasHardQuad;
|
||||
bool UsePopc;
|
||||
bool UseSoftFloat;
|
||||
bool HasNoFSMULD;
|
||||
bool HasNoFMULS;
|
||||
|
||||
// LEON features
|
||||
bool HasUmacSmac;
|
||||
bool HasLeonCasa;
|
||||
bool InsertNOPLoad;
|
||||
bool FixAllFDIVSQRT;
|
||||
bool DetectRoundChange;
|
||||
bool PerformSDIVReplace;
|
||||
|
||||
SparcInstrInfo InstrInfo;
|
||||
SparcTargetLowering TLInfo;
|
||||
SelectionDAGTargetInfo TSInfo;
|
||||
SparcFrameLowering FrameLowering;
|
||||
|
||||
public:
|
||||
SparcSubtarget(const Triple &TT, const std::string &CPU,
|
||||
const std::string &FS, const TargetMachine &TM, bool is64bit);
|
||||
|
||||
const SparcInstrInfo *getInstrInfo() const override { return &InstrInfo; }
|
||||
const TargetFrameLowering *getFrameLowering() const override {
|
||||
return &FrameLowering;
|
||||
}
|
||||
const SparcRegisterInfo *getRegisterInfo() const override {
|
||||
return &InstrInfo.getRegisterInfo();
|
||||
}
|
||||
const SparcTargetLowering *getTargetLowering() const override {
|
||||
return &TLInfo;
|
||||
}
|
||||
const SelectionDAGTargetInfo *getSelectionDAGInfo() const override {
|
||||
return &TSInfo;
|
||||
}
|
||||
|
||||
bool enableMachineScheduler() const override;
|
||||
|
||||
bool useSoftMulDiv() const { return UseSoftMulDiv; }
|
||||
bool isV9() const { return IsV9; }
|
||||
bool isLeon() const { return IsLeon; }
|
||||
bool isVIS() const { return IsVIS; }
|
||||
bool isVIS2() const { return IsVIS2; }
|
||||
bool isVIS3() const { return IsVIS3; }
|
||||
bool useDeprecatedV8Instructions() const { return V8DeprecatedInsts; }
|
||||
bool hasHardQuad() const { return HasHardQuad; }
|
||||
bool usePopc() const { return UsePopc; }
|
||||
bool useSoftFloat() const { return UseSoftFloat; }
|
||||
bool hasNoFSMULD() const { return HasNoFSMULD; }
|
||||
bool hasNoFMULS() const { return HasNoFMULS; }
|
||||
|
||||
// Leon options
|
||||
bool hasUmacSmac() const { return HasUmacSmac; }
|
||||
bool performSDIVReplace() const { return PerformSDIVReplace; }
|
||||
bool hasLeonCasa() const { return HasLeonCasa; }
|
||||
bool insertNOPLoad() const { return InsertNOPLoad; }
|
||||
bool fixAllFDIVSQRT() const { return FixAllFDIVSQRT; }
|
||||
bool detectRoundChange() const { return DetectRoundChange; }
|
||||
|
||||
/// ParseSubtargetFeatures - Parses features string setting specified
|
||||
/// subtarget options. Definition of function is auto generated by tblgen.
|
||||
void ParseSubtargetFeatures(StringRef CPU, StringRef FS);
|
||||
SparcSubtarget &initializeSubtargetDependencies(StringRef CPU, StringRef FS);
|
||||
|
||||
bool is64Bit() const { return Is64Bit; }
|
||||
|
||||
/// The 64-bit ABI uses biased stack and frame pointers, so the stack frame
|
||||
/// of the current function is the area from [%sp+BIAS] to [%fp+BIAS].
|
||||
int64_t getStackPointerBias() const {
|
||||
return is64Bit() ? 2047 : 0;
|
||||
}
|
||||
|
||||
/// Given a actual stack size as determined by FrameInfo, this function
|
||||
/// returns adjusted framesize which includes space for register window
|
||||
/// spills and arguments.
|
||||
int getAdjustedFrameSize(int stackSize) const;
|
||||
|
||||
bool isTargetLinux() const { return TargetTriple.isOSLinux(); }
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user