1*9880d681SAndroid Build Coastguard Worker//===- NVPTX.td - Describe the NVPTX Target Machine -----------*- tblgen -*-==// 2*9880d681SAndroid Build Coastguard Worker// 3*9880d681SAndroid Build Coastguard Worker// The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker// 5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker// 8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker// This is the top level entry point for the NVPTX target. 10*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 13*9880d681SAndroid Build Coastguard Worker// Target-independent interfaces 14*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerinclude "llvm/Target/Target.td" 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerinclude "NVPTXRegisterInfo.td" 19*9880d681SAndroid Build Coastguard Workerinclude "NVPTXInstrInfo.td" 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 22*9880d681SAndroid Build Coastguard Worker// Subtarget Features. 23*9880d681SAndroid Build Coastguard Worker// - We use the SM version number instead of explicit feature table. 24*9880d681SAndroid Build Coastguard Worker// - Need at least one feature to avoid generating zero sized array by 25*9880d681SAndroid Build Coastguard Worker// TableGen in NVPTXGenSubtarget.inc. 26*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker// SM Versions 29*9880d681SAndroid Build Coastguard Workerdef SM20 : SubtargetFeature<"sm_20", "SmVersion", "20", 30*9880d681SAndroid Build Coastguard Worker "Target SM 2.0">; 31*9880d681SAndroid Build Coastguard Workerdef SM21 : SubtargetFeature<"sm_21", "SmVersion", "21", 32*9880d681SAndroid Build Coastguard Worker "Target SM 2.1">; 33*9880d681SAndroid Build Coastguard Workerdef SM30 : SubtargetFeature<"sm_30", "SmVersion", "30", 34*9880d681SAndroid Build Coastguard Worker "Target SM 3.0">; 35*9880d681SAndroid Build Coastguard Workerdef SM32 : SubtargetFeature<"sm_32", "SmVersion", "32", 36*9880d681SAndroid Build Coastguard Worker "Target SM 3.2">; 37*9880d681SAndroid Build Coastguard Workerdef SM35 : SubtargetFeature<"sm_35", "SmVersion", "35", 38*9880d681SAndroid Build Coastguard Worker "Target SM 3.5">; 39*9880d681SAndroid Build Coastguard Workerdef SM37 : SubtargetFeature<"sm_37", "SmVersion", "37", 40*9880d681SAndroid Build Coastguard Worker "Target SM 3.7">; 41*9880d681SAndroid Build Coastguard Workerdef SM50 : SubtargetFeature<"sm_50", "SmVersion", "50", 42*9880d681SAndroid Build Coastguard Worker "Target SM 5.0">; 43*9880d681SAndroid Build Coastguard Workerdef SM52 : SubtargetFeature<"sm_52", "SmVersion", "52", 44*9880d681SAndroid Build Coastguard Worker "Target SM 5.2">; 45*9880d681SAndroid Build Coastguard Workerdef SM53 : SubtargetFeature<"sm_53", "SmVersion", "53", 46*9880d681SAndroid Build Coastguard Worker "Target SM 5.3">; 47*9880d681SAndroid Build Coastguard Workerdef SM60 : SubtargetFeature<"sm_60", "SmVersion", "60", 48*9880d681SAndroid Build Coastguard Worker "Target SM 6.0">; 49*9880d681SAndroid Build Coastguard Workerdef SM61 : SubtargetFeature<"sm_61", "SmVersion", "61", 50*9880d681SAndroid Build Coastguard Worker "Target SM 6.1">; 51*9880d681SAndroid Build Coastguard Workerdef SM62 : SubtargetFeature<"sm_62", "SmVersion", "62", 52*9880d681SAndroid Build Coastguard Worker "Target SM 6.2">; 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker// PTX Versions 55*9880d681SAndroid Build Coastguard Workerdef PTX32 : SubtargetFeature<"ptx32", "PTXVersion", "32", 56*9880d681SAndroid Build Coastguard Worker "Use PTX version 3.2">; 57*9880d681SAndroid Build Coastguard Workerdef PTX40 : SubtargetFeature<"ptx40", "PTXVersion", "40", 58*9880d681SAndroid Build Coastguard Worker "Use PTX version 4.0">; 59*9880d681SAndroid Build Coastguard Workerdef PTX41 : SubtargetFeature<"ptx41", "PTXVersion", "41", 60*9880d681SAndroid Build Coastguard Worker "Use PTX version 4.1">; 61*9880d681SAndroid Build Coastguard Workerdef PTX42 : SubtargetFeature<"ptx42", "PTXVersion", "42", 62*9880d681SAndroid Build Coastguard Worker "Use PTX version 4.2">; 63*9880d681SAndroid Build Coastguard Workerdef PTX43 : SubtargetFeature<"ptx43", "PTXVersion", "43", 64*9880d681SAndroid Build Coastguard Worker "Use PTX version 4.3">; 65*9880d681SAndroid Build Coastguard Workerdef PTX50 : SubtargetFeature<"ptx50", "PTXVersion", "50", 66*9880d681SAndroid Build Coastguard Worker "Use PTX version 5.0">; 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 69*9880d681SAndroid Build Coastguard Worker// NVPTX supported processors. 70*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerclass Proc<string Name, list<SubtargetFeature> Features> 73*9880d681SAndroid Build Coastguard Worker : Processor<Name, NoItineraries, Features>; 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_20", [SM20]>; 76*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_21", [SM21]>; 77*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_30", [SM30]>; 78*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_32", [SM32, PTX40]>; 79*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_35", [SM35]>; 80*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_37", [SM37, PTX41]>; 81*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_50", [SM50, PTX40]>; 82*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_52", [SM52, PTX41]>; 83*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_53", [SM53, PTX42]>; 84*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_60", [SM60, PTX50]>; 85*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_61", [SM61, PTX50]>; 86*9880d681SAndroid Build Coastguard Workerdef : Proc<"sm_62", [SM62, PTX50]>; 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Workerdef NVPTXInstrInfo : InstrInfo { 89*9880d681SAndroid Build Coastguard Worker} 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Workerdef NVPTX : Target { 92*9880d681SAndroid Build Coastguard Worker let InstructionSet = NVPTXInstrInfo; 93*9880d681SAndroid Build Coastguard Worker} 94