Home | History | Annotate | Download | only in Sparc
      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 
     17 include "llvm/Target/Target.td"
     18 
     19 //===----------------------------------------------------------------------===//
     20 // SPARC Subtarget features.
     21 //
     22 
     23 def FeatureV9
     24   : SubtargetFeature<"v9", "IsV9", "true",
     25                      "Enable SPARC-V9 instructions">;
     26 def FeatureV8Deprecated
     27   : SubtargetFeature<"deprecated-v8", "V8DeprecatedInsts", "true",
     28                      "Enable deprecated V8 instructions in V9 mode">;
     29 def FeatureVIS
     30   : SubtargetFeature<"vis", "IsVIS", "true",
     31                      "Enable UltraSPARC Visual Instruction Set extensions">;
     32 
     33 //===----------------------------------------------------------------------===//
     34 // Register File, Calling Conv, Instruction Descriptions
     35 //===----------------------------------------------------------------------===//
     36 
     37 include "SparcRegisterInfo.td"
     38 include "SparcCallingConv.td"
     39 include "SparcInstrInfo.td"
     40 
     41 def SparcInstrInfo : InstrInfo;
     42 
     43 //===----------------------------------------------------------------------===//
     44 // SPARC processors supported.
     45 //===----------------------------------------------------------------------===//
     46 
     47 class Proc<string Name, list<SubtargetFeature> Features>
     48  : Processor<Name, NoItineraries, Features>;
     49 
     50 def : Proc<"generic",         []>;
     51 def : Proc<"v8",              []>;
     52 def : Proc<"supersparc",      []>;
     53 def : Proc<"sparclite",       []>;
     54 def : Proc<"f934",            []>;
     55 def : Proc<"hypersparc",      []>;
     56 def : Proc<"sparclite86x",    []>;
     57 def : Proc<"sparclet",        []>;
     58 def : Proc<"tsc701",          []>;
     59 def : Proc<"v9",              [FeatureV9]>;
     60 def : Proc<"ultrasparc",      [FeatureV9, FeatureV8Deprecated]>;
     61 def : Proc<"ultrasparc3",     [FeatureV9, FeatureV8Deprecated]>;
     62 def : Proc<"ultrasparc3-vis", [FeatureV9, FeatureV8Deprecated, FeatureVIS]>;
     63 
     64 
     65 //===----------------------------------------------------------------------===//
     66 // Declare the target which we are implementing
     67 //===----------------------------------------------------------------------===//
     68 
     69 def Sparc : Target {
     70   // Pull in Instruction Info:
     71   let InstructionSet = SparcInstrInfo;
     72 }
     73