Sparc.td revision 263508
1//===-- Sparc.td - Describe the Sparc Target Machine -------*- tablegen -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10//
11//===----------------------------------------------------------------------===//
12
13//===----------------------------------------------------------------------===//
14// Target-independent interfaces which we are implementing
15//===----------------------------------------------------------------------===//
16
17include "llvm/Target/Target.td"
18
19//===----------------------------------------------------------------------===//
20// SPARC Subtarget features.
21//
22
23def FeatureV9
24  : SubtargetFeature<"v9", "IsV9", "true",
25                     "Enable SPARC-V9 instructions">;
26def FeatureV8Deprecated
27  : SubtargetFeature<"deprecated-v8", "V8DeprecatedInsts", "true",
28                     "Enable deprecated V8 instructions in V9 mode">;
29def FeatureVIS
30  : SubtargetFeature<"vis", "IsVIS", "true",
31                     "Enable UltraSPARC Visual Instruction Set extensions">;
32
33def FeatureHardQuad
34  : SubtargetFeature<"hard-quad-float", "HasHardQuad", "true",
35                     "Enable quad-word floating point instructions">;
36
37//===----------------------------------------------------------------------===//
38// Register File, Calling Conv, Instruction Descriptions
39//===----------------------------------------------------------------------===//
40
41include "SparcRegisterInfo.td"
42include "SparcCallingConv.td"
43include "SparcInstrInfo.td"
44
45def SparcInstrInfo : InstrInfo;
46
47//===----------------------------------------------------------------------===//
48// SPARC processors supported.
49//===----------------------------------------------------------------------===//
50
51class Proc<string Name, list<SubtargetFeature> Features>
52 : Processor<Name, NoItineraries, Features>;
53
54def : Proc<"generic",         []>;
55def : Proc<"v8",              []>;
56def : Proc<"supersparc",      []>;
57def : Proc<"sparclite",       []>;
58def : Proc<"f934",            []>;
59def : Proc<"hypersparc",      []>;
60def : Proc<"sparclite86x",    []>;
61def : Proc<"sparclet",        []>;
62def : Proc<"tsc701",          []>;
63def : Proc<"v9",              [FeatureV9]>;
64def : Proc<"ultrasparc",      [FeatureV9, FeatureV8Deprecated]>;
65def : Proc<"ultrasparc3",     [FeatureV9, FeatureV8Deprecated]>;
66def : Proc<"ultrasparc3-vis", [FeatureV9, FeatureV8Deprecated, FeatureVIS]>;
67
68
69//===----------------------------------------------------------------------===//
70// Declare the target which we are implementing
71//===----------------------------------------------------------------------===//
72
73def Sparc : Target {
74  // Pull in Instruction Info:
75  let InstructionSet = SparcInstrInfo;
76}
77