LLVM  3.7.0
SparcSubtarget.h
Go to the documentation of this file.
1 //===-- SparcSubtarget.h - Define Subtarget for the SPARC -------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file declares the SPARC specific subclass of TargetSubtargetInfo.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_LIB_TARGET_SPARC_SPARCSUBTARGET_H
15 #define LLVM_LIB_TARGET_SPARC_SPARCSUBTARGET_H
16 
17 #include "SparcFrameLowering.h"
18 #include "SparcInstrInfo.h"
19 #include "SparcISelLowering.h"
20 #include "llvm/IR/DataLayout.h"
24 #include <string>
25 
26 #define GET_SUBTARGETINFO_HEADER
27 #include "SparcGenSubtargetInfo.inc"
28 
29 namespace llvm {
30 class StringRef;
31 
33  virtual void anchor();
34  bool IsV9;
35  bool V8DeprecatedInsts;
36  bool IsVIS, IsVIS2, IsVIS3;
37  bool Is64Bit;
38  bool HasHardQuad;
39  bool UsePopc;
40  SparcInstrInfo InstrInfo;
41  SparcTargetLowering TLInfo;
43  SparcFrameLowering FrameLowering;
44 
45 public:
46  SparcSubtarget(const Triple &TT, const std::string &CPU,
47  const std::string &FS, TargetMachine &TM, bool is64bit);
48 
49  const SparcInstrInfo *getInstrInfo() const override { return &InstrInfo; }
50  const TargetFrameLowering *getFrameLowering() const override {
51  return &FrameLowering;
52  }
53  const SparcRegisterInfo *getRegisterInfo() const override {
54  return &InstrInfo.getRegisterInfo();
55  }
56  const SparcTargetLowering *getTargetLowering() const override {
57  return &TLInfo;
58  }
59  const TargetSelectionDAGInfo *getSelectionDAGInfo() const override {
60  return &TSInfo;
61  }
62 
63  bool isV9() const { return IsV9; }
64  bool isVIS() const { return IsVIS; }
65  bool isVIS2() const { return IsVIS2; }
66  bool isVIS3() const { return IsVIS3; }
67  bool useDeprecatedV8Instructions() const { return V8DeprecatedInsts; }
68  bool hasHardQuad() const { return HasHardQuad; }
69  bool usePopc() const { return UsePopc; }
70 
71  /// ParseSubtargetFeatures - Parses features string setting specified
72  /// subtarget options. Definition of function is auto generated by tblgen.
75 
76  bool is64Bit() const { return Is64Bit; }
77 
78  /// The 64-bit ABI uses biased stack and frame pointers, so the stack frame
79  /// of the current function is the area from [%sp+BIAS] to [%fp+BIAS].
80  int64_t getStackPointerBias() const {
81  return is64Bit() ? 2047 : 0;
82  }
83 
84  /// Given a actual stack size as determined by FrameInfo, this function
85  /// returns adjusted framesize which includes space for register window
86  /// spills and arguments.
87  int getAdjustedFrameSize(int stackSize) const;
88 
89 };
90 
91 } // end namespace llvm
92 
93 #endif
bool useDeprecatedV8Instructions() const
SparcSubtarget & initializeSubtargetDependencies(StringRef CPU, StringRef FS)
bool isVIS3() const
const SparcInstrInfo * getInstrInfo() const override
bool isVIS() const
const SparcRegisterInfo & getRegisterInfo() const
getRegisterInfo - TargetInstrInfo is a superset of MRegister info.
TargetSelectionDAGInfo - Targets can subclass this to parameterize the SelectionDAG lowering and inst...
const SparcTargetLowering * getTargetLowering() const override
void ParseSubtargetFeatures(StringRef CPU, StringRef FS)
ParseSubtargetFeatures - Parses features string setting specified subtarget options.
Triple - Helper class for working with autoconf configuration names.
Definition: Triple.h:44
const SparcRegisterInfo * getRegisterInfo() const override
const TargetFrameLowering * getFrameLowering() const override
bool hasHardQuad() const
bool usePopc() const
Information about stack frame layout on the target.
bool isVIS2() const
int getAdjustedFrameSize(int stackSize) const
Given a actual stack size as determined by FrameInfo, this function returns adjusted framesize which ...
const TargetSelectionDAGInfo * getSelectionDAGInfo() const override
bool isV9() const
bool is64Bit() const
Primary interface to the complete machine description for the target machine.
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:40
SparcSubtarget(const Triple &TT, const std::string &CPU, const std::string &FS, TargetMachine &TM, bool is64bit)
int64_t getStackPointerBias() const
The 64-bit ABI uses biased stack and frame pointers, so the stack frame of the current function is th...