Sparc.td revision 2f17d0facf6a489a051c86c015453c2b102e5c37
1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)//===-- Sparc.td - Describe the Sparc Target Machine -------*- tablegen -*-===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
58bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// This file is distributed under the University of Illinois Open Source
68bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// License. See LICENSE.TXT for details.
78bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)//
80f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)//
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)//===----------------------------------------------------------------------===//
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)//===----------------------------------------------------------------------===//
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Target-independent interfaces which we are implementing
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//===----------------------------------------------------------------------===//
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)include "llvm/Target/Target.td"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SPARC Subtarget features.
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def FeatureV9
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  : SubtargetFeature<"v9", "IsV9", "true",
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     "Enable SPARC-V9 instructions">;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def FeatureV8Deprecated
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  : SubtargetFeature<"deprecated-v8", "V8DeprecatedInsts", "true",
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     "Enable deprecated V8 instructions in V9 mode">;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def FeatureVIS
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  : SubtargetFeature<"vis", "IsVIS", "true",
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     "Enable UltraSPARC Visual Instruction Set extensions">;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def FeatureHardQuad
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  : SubtargetFeature<"hard-quad-float", "HasHardQuad", "true",
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     "Enable quad-word floating point instructions">;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Register File, Calling Conv, Instruction Descriptions
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)include "SparcRegisterInfo.td"
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)include "SparcCallingConv.td"
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)include "SparcInstrInfo.td"
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def SparcInstrInfo : InstrInfo;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SPARC processors supported.
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//===----------------------------------------------------------------------===//
501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Proc<string Name, list<SubtargetFeature> Features>
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : Processor<Name, NoItineraries, Features>;
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def : Proc<"generic",         []>;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def : Proc<"v8",              []>;
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def : Proc<"supersparc",      []>;
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def : Proc<"sparclite",       []>;
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def : Proc<"f934",            []>;
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def : Proc<"hypersparc",      []>;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def : Proc<"sparclite86x",    []>;
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def : Proc<"sparclet",        []>;
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def : Proc<"tsc701",          []>;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def : Proc<"v9",              [FeatureV9]>;
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def : Proc<"ultrasparc",      [FeatureV9, FeatureV8Deprecated]>;
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def : Proc<"ultrasparc3",     [FeatureV9, FeatureV8Deprecated]>;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def : Proc<"ultrasparc3-vis", [FeatureV9, FeatureV8Deprecated, FeatureVIS]>;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Declare the target which we are implementing
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def Sparc : Target {
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Pull in Instruction Info:
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  let InstructionSet = SparcInstrInfo;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)