Mercurial > hg > CbC > CbC_llvm
comparison lib/Target/Sparc/SparcSubtarget.h @ 0:95c75e76d11b LLVM3.4
LLVM 3.4
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 12 Dec 2013 13:56:28 +0900 |
parents | |
children | e4204d083e25 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:95c75e76d11b |
---|---|
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 SPARC_SUBTARGET_H | |
15 #define SPARC_SUBTARGET_H | |
16 | |
17 #include "llvm/Target/TargetSubtargetInfo.h" | |
18 #include <string> | |
19 | |
20 #define GET_SUBTARGETINFO_HEADER | |
21 #include "SparcGenSubtargetInfo.inc" | |
22 | |
23 namespace llvm { | |
24 class StringRef; | |
25 | |
26 class SparcSubtarget : public SparcGenSubtargetInfo { | |
27 virtual void anchor(); | |
28 bool IsV9; | |
29 bool V8DeprecatedInsts; | |
30 bool IsVIS; | |
31 bool Is64Bit; | |
32 bool HasHardQuad; | |
33 | |
34 public: | |
35 SparcSubtarget(const std::string &TT, const std::string &CPU, | |
36 const std::string &FS, bool is64bit); | |
37 | |
38 bool isV9() const { return IsV9; } | |
39 bool isVIS() const { return IsVIS; } | |
40 bool useDeprecatedV8Instructions() const { return V8DeprecatedInsts; } | |
41 bool hasHardQuad() const { return HasHardQuad; } | |
42 | |
43 /// ParseSubtargetFeatures - Parses features string setting specified | |
44 /// subtarget options. Definition of function is auto generated by tblgen. | |
45 void ParseSubtargetFeatures(StringRef CPU, StringRef FS); | |
46 | |
47 bool is64Bit() const { return Is64Bit; } | |
48 std::string getDataLayout() const { | |
49 const char *p; | |
50 if (is64Bit()) { | |
51 p = "E-p:64:64:64-i64:64:64-f64:64:64-f128:128:128-n32:64"; | |
52 } else { | |
53 p = "E-p:32:32:32-i64:64:64-f64:64:64-f128:64:64-n32"; | |
54 } | |
55 return std::string(p); | |
56 } | |
57 | |
58 /// The 64-bit ABI uses biased stack and frame pointers, so the stack frame | |
59 /// of the current function is the area from [%sp+BIAS] to [%fp+BIAS]. | |
60 int64_t getStackPointerBias() const { | |
61 return is64Bit() ? 2047 : 0; | |
62 } | |
63 | |
64 /// Given a actual stack size as determined by FrameInfo, this function | |
65 /// returns adjusted framesize which includes space for register window | |
66 /// spills and arguments. | |
67 int getAdjustedFrameSize(int stackSize) const; | |
68 | |
69 }; | |
70 | |
71 } // end namespace llvm | |
72 | |
73 #endif |