Sparc.td revision cedc6f4b30c1fd5f7ad1df0b65b870e6f107e8ff
1//===- SparcV8.td - Describe the SparcV8 Target Machine ---------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file was developed by the LLVM research group and is distributed under 6// the University of Illinois Open Source License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// 11//===----------------------------------------------------------------------===// 12 13//===----------------------------------------------------------------------===// 14// Target-independent interfaces which we are implementing 15//===----------------------------------------------------------------------===// 16 17include "../Target.td" 18 19//===----------------------------------------------------------------------===// 20// SPARC Subtarget features. 21// 22 23def FeatureV9 24 : SubtargetFeature<"v9", "bool", "IsV9", 25 "Enable SPARC-V9 instructions">; 26def FeatureV8Deprecated 27 : SubtargetFeature<"deprecated-v8", "bool", "V8DeprecatedInsts", 28 "Enable deprecated V8 instructions in V9 mode">; 29def FeatureVIS 30 : SubtargetFeature<"vis", "bool", "IsVIS", 31 "Enable UltraSPARC Visual Instruction Set extensions">; 32 33//===----------------------------------------------------------------------===// 34// Register File Description 35//===----------------------------------------------------------------------===// 36 37include "SparcV8RegisterInfo.td" 38 39//===----------------------------------------------------------------------===// 40// Instruction Descriptions 41//===----------------------------------------------------------------------===// 42 43include "SparcV8InstrInfo.td" 44 45def SparcV8InstrInfo : InstrInfo { 46 // Define how we want to layout our target-specific information field. 47 let TSFlagsFields = []; 48 let TSFlagsShifts = []; 49} 50 51//===----------------------------------------------------------------------===// 52// SPARC processors supported. 53//===----------------------------------------------------------------------===// 54 55class Proc<string Name, list<SubtargetFeature> Features> 56 : Processor<Name, NoItineraries, Features>; 57 58def : Proc<"generic", []>; 59def : Proc<"v8", []>; 60def : Proc<"supersparc", []>; 61def : Proc<"sparclite", []>; 62def : Proc<"f934", []>; 63def : Proc<"hypersparc", []>; 64def : Proc<"sparclite86x", []>; 65def : Proc<"sparclet", []>; 66def : Proc<"tsc701", []>; 67def : Proc<"v9", [FeatureV9]>; 68def : Proc<"ultrasparc", [FeatureV9, FeatureV8Deprecated]>; 69def : Proc<"ultrasparc3", [FeatureV9, FeatureV8Deprecated]>; 70def : Proc<"ultrasparc3-vis", [FeatureV9, FeatureV8Deprecated, FeatureVIS]>; 71 72 73//===----------------------------------------------------------------------===// 74// Declare the target which we are implementing 75//===----------------------------------------------------------------------===// 76 77def SparcV8 : Target { 78 // Pointers are 32-bits in size. 79 let PointerType = i32; 80 81 // FIXME: Specify callee-saved registers 82 let CalleeSavedRegisters = []; 83 84 // Pull in Instruction Info: 85 let InstructionSet = SparcV8InstrInfo; 86} 87