SparcSubtarget.h revision 2d24e2a396a1d211baaeedf32148a3b657240170
1d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com//=====-- SparcSubtarget.h - Define Subtarget for the SPARC ----*- C++ -*-====//
2d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com//
3d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com//                     The LLVM Compiler Infrastructure
4d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com//
5d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com// This file is distributed under the University of Illinois Open Source
6d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com// License. See LICENSE.TXT for details.
7d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com//
8d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com//===----------------------------------------------------------------------===//
9d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com//
1066bb3d1f5e451f8501f5c28d1dc28fcef6e908e1commit-bot@chromium.org// This file declares the SPARC specific subclass of TargetSubtargetInfo.
11d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com//
12d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com//===----------------------------------------------------------------------===//
13d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
14ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org#ifndef SPARC_SUBTARGET_H
15d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#define SPARC_SUBTARGET_H
16d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
1790b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org#include "llvm/Target/TargetSubtargetInfo.h"
1890b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org#include <string>
1990b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org
2090b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org#define GET_SUBTARGETINFO_HEADER
21c1362424b864ee3ae7aa44971985e5481057363acommit-bot@chromium.org#include "SparcGenSubtargetInfo.inc"
22d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com
23d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.comnamespace llvm {
2490b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.orgclass StringRef;
25d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
26d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.comclass SparcSubtarget : public SparcGenSubtargetInfo {
27d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com  virtual void anchor();
28d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com  bool IsV9;
29d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com  bool V8DeprecatedInsts;
30d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com  bool IsVIS;
3190b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org  bool Is64Bit;
32d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
33d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.compublic:
3466bb3d1f5e451f8501f5c28d1dc28fcef6e908e1commit-bot@chromium.org  SparcSubtarget(const std::string &TT, const std::string &CPU,
35d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com                 const std::string &FS, bool is64bit);
36d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
37d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com  bool isV9() const { return IsV9; }
38d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com  bool isVIS() const { return IsVIS; }
39d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com  bool useDeprecatedV8Instructions() const { return V8DeprecatedInsts; }
40
41  /// ParseSubtargetFeatures - Parses features string setting specified
42  /// subtarget options.  Definition of function is auto generated by tblgen.
43  void ParseSubtargetFeatures(StringRef CPU, StringRef FS);
44
45  bool is64Bit() const { return Is64Bit; }
46  std::string getDataLayout() const {
47    const char *p;
48    if (is64Bit()) {
49      p = "E-p:64:64:64-i64:64:64-f64:64:64-f128:128:128-n32:64";
50    } else {
51      p = "E-p:32:32:32-i64:64:64-f64:64:64-f128:64:64-n32";
52    }
53    return std::string(p);
54  }
55};
56
57} // end namespace llvm
58
59#endif
60