mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-29 13:29:28 +00:00
When a new SM architecture is introduced, it is only supported by the current PTX version and later. Make sure we are using at least the minimum PTX version for the target architecture. This also removes support for PTX ISA < 3.2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233583 91177308-0d34-0410-b5e6-96231b3b80d8
82 lines
3.1 KiB
TableGen
82 lines
3.1 KiB
TableGen
//===- NVPTX.td - Describe the NVPTX Target Machine -----------*- tblgen -*-==//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
// This is the top level entry point for the NVPTX target.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Target-independent interfaces
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
include "llvm/Target/Target.td"
|
|
|
|
include "NVPTXRegisterInfo.td"
|
|
include "NVPTXInstrInfo.td"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Subtarget Features.
|
|
// - We use the SM version number instead of explicit feature table.
|
|
// - Need at least one feature to avoid generating zero sized array by
|
|
// TableGen in NVPTXGenSubtarget.inc.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// SM Versions
|
|
def SM20 : SubtargetFeature<"sm_20", "SmVersion", "20",
|
|
"Target SM 2.0">;
|
|
def SM21 : SubtargetFeature<"sm_21", "SmVersion", "21",
|
|
"Target SM 2.1">;
|
|
def SM30 : SubtargetFeature<"sm_30", "SmVersion", "30",
|
|
"Target SM 3.0">;
|
|
def SM32 : SubtargetFeature<"sm_32", "SmVersion", "32",
|
|
"Target SM 3.2">;
|
|
def SM35 : SubtargetFeature<"sm_35", "SmVersion", "35",
|
|
"Target SM 3.5">;
|
|
def SM37 : SubtargetFeature<"sm_37", "SmVersion", "37",
|
|
"Target SM 3.7">;
|
|
def SM50 : SubtargetFeature<"sm_50", "SmVersion", "50",
|
|
"Target SM 5.0">;
|
|
def SM52 : SubtargetFeature<"sm_52", "SmVersion", "52",
|
|
"Target SM 5.2">;
|
|
def SM53 : SubtargetFeature<"sm_53", "SmVersion", "53",
|
|
"Target SM 5.3">;
|
|
|
|
// PTX Versions
|
|
def PTX32 : SubtargetFeature<"ptx32", "PTXVersion", "32",
|
|
"Use PTX version 3.2">;
|
|
def PTX40 : SubtargetFeature<"ptx40", "PTXVersion", "40",
|
|
"Use PTX version 4.0">;
|
|
def PTX41 : SubtargetFeature<"ptx41", "PTXVersion", "41",
|
|
"Use PTX version 4.1">;
|
|
def PTX42 : SubtargetFeature<"ptx42", "PTXVersion", "42",
|
|
"Use PTX version 4.2">;
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// NVPTX supported processors.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
class Proc<string Name, list<SubtargetFeature> Features>
|
|
: Processor<Name, NoItineraries, Features>;
|
|
|
|
def : Proc<"sm_20", [SM20]>;
|
|
def : Proc<"sm_21", [SM21]>;
|
|
def : Proc<"sm_30", [SM30]>;
|
|
def : Proc<"sm_32", [SM32, PTX40]>;
|
|
def : Proc<"sm_35", [SM35]>;
|
|
def : Proc<"sm_37", [SM37, PTX41]>;
|
|
def : Proc<"sm_50", [SM50, PTX40]>;
|
|
def : Proc<"sm_52", [SM52, PTX41]>;
|
|
def : Proc<"sm_53", [SM53, PTX42]>;
|
|
|
|
|
|
def NVPTXInstrInfo : InstrInfo {
|
|
}
|
|
|
|
def NVPTX : Target {
|
|
let InstructionSet = NVPTXInstrInfo;
|
|
}
|