• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1//===- PTX.td - Describe the PTX Target Machine ---------------*- tblgen -*-==//
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// This is the top level entry point for the PTX target.
10//===----------------------------------------------------------------------===//
11
12//===----------------------------------------------------------------------===//
13// Target-independent interfaces
14//===----------------------------------------------------------------------===//
15
16include "llvm/Target/Target.td"
17
18//===----------------------------------------------------------------------===//
19// Subtarget Features
20//===----------------------------------------------------------------------===//
21
22//===- Architectural Features ---------------------------------------------===//
23
24def FeatureDouble : SubtargetFeature<"double", "SupportsDouble", "true",
25                                     "Do not demote .f64 to .f32">;
26
27def FeatureNoFMA  : SubtargetFeature<"no-fma","SupportsFMA", "false",
28                                     "Disable Fused-Multiply Add">;
29
30//===- PTX Version --------------------------------------------------------===//
31
32def FeaturePTX20 : SubtargetFeature<"ptx20", "PTXVersion", "PTX_VERSION_2_0",
33                                    "Use PTX Language Version 2.0">;
34
35def FeaturePTX21 : SubtargetFeature<"ptx21", "PTXVersion", "PTX_VERSION_2_1",
36                                    "Use PTX Language Version 2.1">;
37
38def FeaturePTX22 : SubtargetFeature<"ptx22", "PTXVersion", "PTX_VERSION_2_2",
39                                    "Use PTX Language Version 2.2">;
40
41def FeaturePTX23 : SubtargetFeature<"ptx23", "PTXVersion", "PTX_VERSION_2_3",
42                                    "Use PTX Language Version 2.3">;
43
44//===- PTX Target ---------------------------------------------------------===//
45
46def FeatureSM10 : SubtargetFeature<"sm10", "PTXTarget", "PTX_SM_1_0",
47                                   "Use Shader Model 1.0">;
48def FeatureSM11 : SubtargetFeature<"sm11", "PTXTarget", "PTX_SM_1_1",
49                                   "Use Shader Model 1.1">;
50def FeatureSM12 : SubtargetFeature<"sm12", "PTXTarget", "PTX_SM_1_2",
51                                   "Use Shader Model 1.2">;
52def FeatureSM13 : SubtargetFeature<"sm13", "PTXTarget", "PTX_SM_1_3",
53                                   "Use Shader Model 1.3">;
54def FeatureSM20 : SubtargetFeature<"sm20", "PTXTarget", "PTX_SM_2_0",
55                                   "Use Shader Model 2.0">;
56def FeatureSM21 : SubtargetFeature<"sm21", "PTXTarget", "PTX_SM_2_1",
57                                   "Use Shader Model 2.1">;
58def FeatureSM22 : SubtargetFeature<"sm22", "PTXTarget", "PTX_SM_2_2",
59                                   "Use Shader Model 2.2">;
60def FeatureSM23 : SubtargetFeature<"sm23", "PTXTarget", "PTX_SM_2_3",
61                                   "Use Shader Model 2.3">;
62
63def FeatureCOMPUTE10 : SubtargetFeature<"compute10", "PTXTarget",
64                                        "PTX_COMPUTE_1_0",
65                                        "Use Compute Compatibility 1.0">;
66def FeatureCOMPUTE11 : SubtargetFeature<"compute11", "PTXTarget",
67                                        "PTX_COMPUTE_1_1",
68                                        "Use Compute Compatibility 1.1">;
69def FeatureCOMPUTE12 : SubtargetFeature<"compute12", "PTXTarget",
70                                        "PTX_COMPUTE_1_2",
71                                        "Use Compute Compatibility 1.2">;
72def FeatureCOMPUTE13 : SubtargetFeature<"compute13", "PTXTarget",
73                                        "PTX_COMPUTE_1_3",
74                                        "Use Compute Compatibility 1.3">;
75def FeatureCOMPUTE20 : SubtargetFeature<"compute20", "PTXTarget",
76                                        "PTX_COMPUTE_2_0",
77                                        "Use Compute Compatibility 2.0">;
78
79//===----------------------------------------------------------------------===//
80// PTX supported processors
81//===----------------------------------------------------------------------===//
82
83class Proc<string Name, list<SubtargetFeature> Features>
84  : Processor<Name, NoItineraries, Features>;
85
86def : Proc<"generic", []>;
87
88// Processor definitions for compute/shader models
89def : Proc<"compute_10", [FeatureCOMPUTE10]>;
90def : Proc<"compute_11", [FeatureCOMPUTE11]>;
91def : Proc<"compute_12", [FeatureCOMPUTE12]>;
92def : Proc<"compute_13", [FeatureCOMPUTE13]>;
93def : Proc<"compute_20", [FeatureCOMPUTE20]>;
94def : Proc<"sm_10",      [FeatureSM10]>;
95def : Proc<"sm_11",      [FeatureSM11]>;
96def : Proc<"sm_12",      [FeatureSM12]>;
97def : Proc<"sm_13",      [FeatureSM13]>;
98def : Proc<"sm_20",      [FeatureSM20]>;
99def : Proc<"sm_21",      [FeatureSM21]>;
100def : Proc<"sm_22",      [FeatureSM22]>;
101def : Proc<"sm_23",      [FeatureSM23]>;
102
103// Processor definitions for common GPU architectures
104def : Proc<"g80",        [FeatureSM10]>;
105def : Proc<"gt200",      [FeatureSM13]>;
106def : Proc<"gf100",      [FeatureSM20, FeatureDouble]>;
107def : Proc<"fermi",      [FeatureSM20, FeatureDouble]>;
108
109//===----------------------------------------------------------------------===//
110// Register File Description
111//===----------------------------------------------------------------------===//
112
113include "PTXRegisterInfo.td"
114
115//===----------------------------------------------------------------------===//
116// Calling Conventions
117//===----------------------------------------------------------------------===//
118
119include "PTXCallingConv.td"
120
121//===----------------------------------------------------------------------===//
122// Instruction Descriptions
123//===----------------------------------------------------------------------===//
124
125include "PTXInstrInfo.td"
126
127def PTXInstrInfo : InstrInfo;
128
129//===----------------------------------------------------------------------===//
130// Target Declaration
131//===----------------------------------------------------------------------===//
132
133def PTX : Target {
134  let InstructionSet = PTXInstrInfo;
135}
136