131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//===-- SparcSubtarget.cpp - SPARC Subtarget Information ------------------===// 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 implements the SPARC specific subclass of TargetSubtargetInfo. 110d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner// 120d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner//===----------------------------------------------------------------------===// 130d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 147c90f73a1b06040d971a3dd95a491031ae6238d5Chris Lattner#include "SparcSubtarget.h" 15ffc0e73046f737d75e0a62b3a83ef19bcef111e3Evan Cheng#include "Sparc.h" 163e74d6fdd248e20a280f1dff3da9a6c689c2c4c3Evan Cheng#include "llvm/Support/TargetRegistry.h" 1794214703d97d8d9dfca88174ffc7e94820a85e62Evan Cheng 1894214703d97d8d9dfca88174ffc7e94820a85e62Evan Cheng#define GET_SUBTARGETINFO_TARGET_DESC 19ebdeeab812beec0385b445f3d4c41a114e0d972fEvan Cheng#define GET_SUBTARGETINFO_CTOR 20385e930d55f3ecd3c9538823dfa5896a12461845Evan Cheng#include "SparcGenSubtargetInfo.inc" 2194214703d97d8d9dfca88174ffc7e94820a85e62Evan Cheng 220d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattnerusing namespace llvm; 230d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 242d24e2a396a1d211baaeedf32148a3b657240170David Blaikievoid SparcSubtarget::anchor() { } 252d24e2a396a1d211baaeedf32148a3b657240170David Blaikie 26276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan ChengSparcSubtarget::SparcSubtarget(const std::string &TT, const std::string &CPU, 27276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng const std::string &FS, bool is64Bit) : 280ddff1b5359433faf2eb1c4ff5320ddcbd42f52fEvan Cheng SparcGenSubtargetInfo(TT, CPU, FS), 2987c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner IsV9(false), 3087c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner V8DeprecatedInsts(false), 3187c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner IsVIS(false), 3287c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner Is64Bit(is64Bit) { 33184cc4ac60dc853fac3baa5e96d5f662d311b2fbChris Lattner 340d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner // Determine default and user specified characteristics 35276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng std::string CPUName = CPU; 36276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng if (CPUName.empty()) { 37276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng if (is64Bit) 38276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng CPUName = "v9"; 39276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng else 40276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng CPUName = "v8"; 4187c06d617917f4a388fbe9db81198e13cde3e431Chris Lattner } 42276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng IsV9 = CPUName == "v9"; 430d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner 440d170a7969e7e36ad00afe596f2937f0c74d2b49Chris Lattner // Parse features string. 450ddff1b5359433faf2eb1c4ff5320ddcbd42f52fEvan Cheng ParseSubtargetFeatures(CPUName, FS); 46d74ea2bbd8bb630331f35ead42d385249bd42af8Chris Lattner} 47