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