131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//===-- SparcSubtarget.h - Define Subtarget for the SPARC -------*- C++ -*-===// 20d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner// 30d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner// The LLVM Compiler Infrastructure 40d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner// 54ee451de366474b9c228b4e5fa573795a715216dChris Lattner// This file is distributed under the University of Illinois Open Source 64ee451de366474b9c228b4e5fa573795a715216dChris Lattner// License. See LICENSE.TXT for details. 70d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner// 80d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner//===----------------------------------------------------------------------===// 90d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner// 105b1b4489cf3a0f56f8be0673fc5cc380a32d277bEvan Cheng// This file declares the SPARC specific subclass of TargetSubtargetInfo. 110d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner// 120d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner//===----------------------------------------------------------------------===// 130d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 140d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner#ifndef SPARC_SUBTARGET_H 150d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner#define SPARC_SUBTARGET_H 160d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 175b1b4489cf3a0f56f8be0673fc5cc380a32d277bEvan Cheng#include "llvm/Target/TargetSubtargetInfo.h" 180d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner#include <string> 190d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 2094214703d97d8d9dfca88174ffc7e94820a85e62Evan Cheng#define GET_SUBTARGETINFO_HEADER 21385e930d55f3ecd3c9538823dfa5896a12461845Evan Cheng#include "SparcGenSubtargetInfo.inc" 2294214703d97d8d9dfca88174ffc7e94820a85e62Evan Cheng 230d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattnernamespace llvm { 240ddff1b5359433faf2eb1c4ff5320ddcbd42f52fEvan Chengclass StringRef; 253be03406c9c3b2075d5ae416499af2f15f703d6fDaniel Dunbar 2694214703d97d8d9dfca88174ffc7e94820a85e62Evan Chengclass SparcSubtarget : public SparcGenSubtargetInfo { 272d24e2a396a1d211baaeedf32148a3b657240170David Blaikie virtual void anchor(); 284dcfaac2e390fdd0e8a562aeccb666178bd8664cChris Lattner bool IsV9; 294dcfaac2e390fdd0e8a562aeccb666178bd8664cChris Lattner bool V8DeprecatedInsts; 304dcfaac2e390fdd0e8a562aeccb666178bd8664cChris Lattner bool IsVIS; 3187c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner bool Is64Bit; 3287c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner 330d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattnerpublic: 34276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng SparcSubtarget(const std::string &TT, const std::string &CPU, 35276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng const std::string &FS, bool is64bit); 360d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 374dcfaac2e390fdd0e8a562aeccb666178bd8664cChris Lattner bool isV9() const { return IsV9; } 384dcfaac2e390fdd0e8a562aeccb666178bd8664cChris Lattner bool isVIS() const { return IsVIS; } 394dcfaac2e390fdd0e8a562aeccb666178bd8664cChris Lattner bool useDeprecatedV8Instructions() const { return V8DeprecatedInsts; } 400d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 410d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner /// ParseSubtargetFeatures - Parses features string setting specified 420d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner /// subtarget options. Definition of function is auto generated by tblgen. 430ddff1b5359433faf2eb1c4ff5320ddcbd42f52fEvan Cheng void ParseSubtargetFeatures(StringRef CPU, StringRef FS); 4487c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner 4587c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner bool is64Bit() const { return Is64Bit; } 4687c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner std::string getDataLayout() const { 4787c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner const char *p; 4887c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner if (is64Bit()) { 4987c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner p = "E-p:64:64:64-i64:64:64-f64:64:64-f128:128:128-n32:64"; 5087c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner } else { 5187c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner p = "E-p:32:32:32-i64:64:64-f64:64:64-f128:64:64-n32"; 5287c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner } 5387c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner return std::string(p); 5487c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner } 550d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner}; 560d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 570d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner} // end namespace llvm 580d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 590d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner#endif 60