NVPTX.td revision 36b56886974eae4f9c5ebc96befd3e7bfe5de338
1//===- NVPTX.td - Describe the NVPTX 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 NVPTX target.
10//===----------------------------------------------------------------------===//
11
12//===----------------------------------------------------------------------===//
13// Target-independent interfaces
14//===----------------------------------------------------------------------===//
15
16include "llvm/Target/Target.td"
17
18include "NVPTXRegisterInfo.td"
19include "NVPTXInstrInfo.td"
20
21//===----------------------------------------------------------------------===//
22// Subtarget Features.
23// - We use the SM version number instead of explicit feature table.
24// - Need at least one feature to avoid generating zero sized array by
25//   TableGen in NVPTXGenSubtarget.inc.
26//===----------------------------------------------------------------------===//
27
28// SM Versions
29def SM20 : SubtargetFeature<"sm_20", "SmVersion", "20",
30                            "Target SM 2.0">;
31def SM21 : SubtargetFeature<"sm_21", "SmVersion", "21",
32                            "Target SM 2.1">;
33def SM30 : SubtargetFeature<"sm_30", "SmVersion", "30",
34                            "Target SM 3.0">;
35def SM35 : SubtargetFeature<"sm_35", "SmVersion", "35",
36                            "Target SM 3.5">;
37
38// PTX Versions
39def PTX30 : SubtargetFeature<"ptx30", "PTXVersion", "30",
40                             "Use PTX version 3.0">;
41def PTX31 : SubtargetFeature<"ptx31", "PTXVersion", "31",
42                             "Use PTX version 3.1">;
43
44//===----------------------------------------------------------------------===//
45// NVPTX supported processors.
46//===----------------------------------------------------------------------===//
47
48class Proc<string Name, list<SubtargetFeature> Features>
49 : Processor<Name, NoItineraries, Features>;
50
51def : Proc<"sm_20", [SM20]>;
52def : Proc<"sm_21", [SM21]>;
53def : Proc<"sm_30", [SM30]>;
54def : Proc<"sm_35", [SM35]>;
55
56
57def NVPTXInstrInfo : InstrInfo {
58}
59
60def NVPTX : Target {
61  let InstructionSet = NVPTXInstrInfo;
62}
63