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)