LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/AVR - AVRGenSubtargetInfo.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 60 68 88.2 %
Date: 2018-10-20 13:21:21 Functions: 3 7 42.9 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Subtarget Enumeration Source Fragment                                      *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : 
      10             : #ifdef GET_SUBTARGETINFO_ENUM
      11             : #undef GET_SUBTARGETINFO_ENUM
      12             : 
      13             : namespace llvm {
      14             : namespace AVR {
      15             : enum {
      16             :   ELFArchAVR1 = 0,
      17             :   ELFArchAVR2 = 1,
      18             :   ELFArchAVR3 = 2,
      19             :   ELFArchAVR4 = 3,
      20             :   ELFArchAVR5 = 4,
      21             :   ELFArchAVR6 = 5,
      22             :   ELFArchAVR25 = 6,
      23             :   ELFArchAVR31 = 7,
      24             :   ELFArchAVR35 = 8,
      25             :   ELFArchAVR51 = 9,
      26             :   ELFArchTiny = 10,
      27             :   ELFArchXMEGA1 = 11,
      28             :   ELFArchXMEGA2 = 12,
      29             :   ELFArchXMEGA3 = 13,
      30             :   ELFArchXMEGA4 = 14,
      31             :   ELFArchXMEGA5 = 15,
      32             :   ELFArchXMEGA6 = 16,
      33             :   ELFArchXMEGA7 = 17,
      34             :   FamilyAVR0 = 18,
      35             :   FamilyAVR1 = 19,
      36             :   FamilyAVR2 = 20,
      37             :   FamilyAVR3 = 21,
      38             :   FamilyAVR4 = 22,
      39             :   FamilyAVR5 = 23,
      40             :   FamilyAVR6 = 24,
      41             :   FamilyAVR25 = 25,
      42             :   FamilyAVR31 = 26,
      43             :   FamilyAVR35 = 27,
      44             :   FamilyAVR51 = 28,
      45             :   FamilyTiny = 29,
      46             :   FamilyXMEGA = 30,
      47             :   FamilyXMEGAU = 31,
      48             :   FeatureADDSUBIW = 32,
      49             :   FeatureBREAK = 33,
      50             :   FeatureDES = 34,
      51             :   FeatureEIJMPCALL = 35,
      52             :   FeatureELPM = 36,
      53             :   FeatureELPMX = 37,
      54             :   FeatureIJMPCALL = 38,
      55             :   FeatureJMPCALL = 39,
      56             :   FeatureLPM = 40,
      57             :   FeatureLPMX = 41,
      58             :   FeatureMOVW = 42,
      59             :   FeatureMultiplication = 43,
      60             :   FeatureRMW = 44,
      61             :   FeatureSPM = 45,
      62             :   FeatureSPMX = 46,
      63             :   FeatureSRAM = 47,
      64             :   FeatureSetSpecial = 48,
      65             :   FeatureSmallStack = 49,
      66             :   FeatureTinyEncoding = 50,
      67             : };
      68             : } // end namespace AVR
      69             : } // end namespace llvm
      70             : 
      71             : #endif // GET_SUBTARGETINFO_ENUM
      72             : 
      73             : 
      74             : #ifdef GET_SUBTARGETINFO_MC_DESC
      75             : #undef GET_SUBTARGETINFO_MC_DESC
      76             : 
      77             : namespace llvm {
      78             : // Sorted (by key) array of values for CPU features.
      79             : extern const llvm::SubtargetFeatureKV AVRFeatureKV[] = {
      80             :   { "addsubiw", "Enable 16-bit register-immediate addition and subtraction instructions", { AVR::FeatureADDSUBIW }, { } },
      81             :   { "avr0", "The device is a part of the avr0 family", { AVR::FamilyAVR0 }, { } },
      82             :   { "avr1", "The device is a part of the avr1 family", { AVR::FamilyAVR1 }, { AVR::FamilyAVR0, AVR::FeatureLPM } },
      83             :   { "avr2", "The device is a part of the avr2 family", { AVR::FamilyAVR2 }, { AVR::FamilyAVR1, AVR::FeatureIJMPCALL, AVR::FeatureADDSUBIW, AVR::FeatureSRAM } },
      84             :   { "avr25", "The device is a part of the avr25 family", { AVR::FamilyAVR25 }, { AVR::FamilyAVR2, AVR::FeatureMOVW, AVR::FeatureLPMX, AVR::FeatureSPM, AVR::FeatureBREAK } },
      85             :   { "avr3", "The device is a part of the avr3 family", { AVR::FamilyAVR3 }, { AVR::FamilyAVR2, AVR::FeatureJMPCALL } },
      86             :   { "avr31", "The device is a part of the avr31 family", { AVR::FamilyAVR31 }, { AVR::FamilyAVR3, AVR::FeatureELPM } },
      87             :   { "avr35", "The device is a part of the avr35 family", { AVR::FamilyAVR35 }, { AVR::FamilyAVR3, AVR::FeatureMOVW, AVR::FeatureLPMX, AVR::FeatureSPM, AVR::FeatureBREAK } },
      88             :   { "avr4", "The device is a part of the avr4 family", { AVR::FamilyAVR4 }, { AVR::FamilyAVR2, AVR::FeatureMultiplication, AVR::FeatureMOVW, AVR::FeatureLPMX, AVR::FeatureSPM, AVR::FeatureBREAK } },
      89             :   { "avr5", "The device is a part of the avr5 family", { AVR::FamilyAVR5 }, { AVR::FamilyAVR3, AVR::FeatureMultiplication, AVR::FeatureMOVW, AVR::FeatureLPMX, AVR::FeatureSPM, AVR::FeatureBREAK } },
      90             :   { "avr51", "The device is a part of the avr51 family", { AVR::FamilyAVR51 }, { AVR::FamilyAVR5, AVR::FeatureELPM, AVR::FeatureELPMX } },
      91             :   { "avr6", "The device is a part of the avr6 family", { AVR::FamilyAVR6 }, { AVR::FamilyAVR51 } },
      92             :   { "avrtiny", "The device is a part of the avrtiny family", { AVR::FamilyTiny }, { AVR::FamilyAVR0, AVR::FeatureBREAK, AVR::FeatureSRAM, AVR::FeatureTinyEncoding } },
      93             :   { "break", "The device supports the `BREAK` debugging instruction", { AVR::FeatureBREAK }, { } },
      94             :   { "des", "The device supports the `DES k` encryption instruction", { AVR::FeatureDES }, { } },
      95             :   { "eijmpcall", "The device supports the `EIJMP`/`EICALL` instructions", { AVR::FeatureEIJMPCALL }, { } },
      96             :   { "elpm", "The device supports the ELPM instruction", { AVR::FeatureELPM }, { } },
      97             :   { "elpmx", "The device supports the `ELPM Rd, Z[+]` instructions", { AVR::FeatureELPMX }, { } },
      98             :   { "ijmpcall", "The device supports `IJMP`/`ICALL`instructions", { AVR::FeatureIJMPCALL }, { } },
      99             :   { "jmpcall", "The device supports the `JMP` and `CALL` instructions", { AVR::FeatureJMPCALL }, { } },
     100             :   { "lpm", "The device supports the `LPM` instruction", { AVR::FeatureLPM }, { } },
     101             :   { "lpmx", "The device supports the `LPM Rd, Z[+]` instruction", { AVR::FeatureLPMX }, { } },
     102             :   { "movw", "The device supports the 16-bit MOVW instruction", { AVR::FeatureMOVW }, { } },
     103             :   { "mul", "The device supports the multiplication instructions", { AVR::FeatureMultiplication }, { } },
     104             :   { "rmw", "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT", { AVR::FeatureRMW }, { } },
     105             :   { "smallstack", "The device has an 8-bit stack pointer", { AVR::FeatureSmallStack }, { } },
     106             :   { "special", "Enable use of the entire instruction set - used for debugging", { AVR::FeatureSetSpecial }, { AVR::FeatureSRAM, AVR::FeatureJMPCALL, AVR::FeatureIJMPCALL, AVR::FeatureEIJMPCALL, AVR::FeatureADDSUBIW, AVR::FeatureMOVW, AVR::FeatureLPM, AVR::FeatureLPMX, AVR::FeatureELPM, AVR::FeatureELPMX, AVR::FeatureSPM, AVR::FeatureSPMX, AVR::FeatureDES, AVR::FeatureRMW, AVR::FeatureMultiplication, AVR::FeatureBREAK } },
     107             :   { "spm", "The device supports the `SPM` instruction", { AVR::FeatureSPM }, { } },
     108             :   { "spmx", "The device supports the `SPM Z+` instruction", { AVR::FeatureSPMX }, { } },
     109             :   { "sram", "The device has random access memory", { AVR::FeatureSRAM }, { } },
     110             :   { "tinyencoding", "The device has Tiny core specific instruction encodings", { AVR::FeatureTinyEncoding }, { } },
     111             :   { "xmega", "The device is a part of the xmega family", { AVR::FamilyXMEGA }, { AVR::FamilyAVR51, AVR::FeatureEIJMPCALL, AVR::FeatureSPMX, AVR::FeatureDES } },
     112             :   { "xmegau", "The device is a part of the xmegau family", { AVR::FamilyXMEGAU }, { AVR::FamilyXMEGA, AVR::FeatureRMW } },
     113             : };
     114             : 
     115             : // Sorted (by key) array of values for CPU subtype.
     116             : extern const llvm::SubtargetFeatureKV AVRSubTypeKV[] = {
     117             :   { "at43usb320", "Select the at43usb320 processor", { AVR::FamilyAVR31, AVR::ELFArchAVR31 }, { } },
     118             :   { "at43usb355", "Select the at43usb355 processor", { AVR::FamilyAVR3, AVR::ELFArchAVR3 }, { } },
     119             :   { "at76c711", "Select the at76c711 processor", { AVR::FamilyAVR3, AVR::ELFArchAVR3 }, { } },
     120             :   { "at86rf401", "Select the at86rf401 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR25, AVR::FeatureMOVW, AVR::FeatureLPMX }, { } },
     121             :   { "at90c8534", "Select the at90c8534 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     122             :   { "at90can128", "Select the at90can128 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     123             :   { "at90can32", "Select the at90can32 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     124             :   { "at90can64", "Select the at90can64 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     125             :   { "at90pwm1", "Select the at90pwm1 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     126             :   { "at90pwm161", "Select the at90pwm161 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     127             :   { "at90pwm2", "Select the at90pwm2 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     128             :   { "at90pwm216", "Select the at90pwm216 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     129             :   { "at90pwm2b", "Select the at90pwm2b processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     130             :   { "at90pwm3", "Select the at90pwm3 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     131             :   { "at90pwm316", "Select the at90pwm316 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     132             :   { "at90pwm3b", "Select the at90pwm3b processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     133             :   { "at90pwm81", "Select the at90pwm81 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     134             :   { "at90s1200", "Select the at90s1200 processor", { AVR::FamilyAVR0, AVR::ELFArchAVR1 }, { } },
     135             :   { "at90s2313", "Select the at90s2313 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     136             :   { "at90s2323", "Select the at90s2323 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     137             :   { "at90s2333", "Select the at90s2333 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     138             :   { "at90s2343", "Select the at90s2343 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     139             :   { "at90s4414", "Select the at90s4414 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     140             :   { "at90s4433", "Select the at90s4433 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     141             :   { "at90s4434", "Select the at90s4434 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     142             :   { "at90s8515", "Select the at90s8515 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     143             :   { "at90s8535", "Select the at90s8535 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     144             :   { "at90scr100", "Select the at90scr100 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     145             :   { "at90usb1286", "Select the at90usb1286 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     146             :   { "at90usb1287", "Select the at90usb1287 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     147             :   { "at90usb162", "Select the at90usb162 processor", { AVR::FamilyAVR35, AVR::ELFArchAVR35 }, { } },
     148             :   { "at90usb646", "Select the at90usb646 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     149             :   { "at90usb647", "Select the at90usb647 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     150             :   { "at90usb82", "Select the at90usb82 processor", { AVR::FamilyAVR35, AVR::ELFArchAVR35 }, { } },
     151             :   { "at94k", "Select the at94k processor", { AVR::FamilyAVR3, AVR::ELFArchAVR5, AVR::FeatureMultiplication, AVR::FeatureMOVW, AVR::FeatureLPMX }, { } },
     152             :   { "ata5272", "Select the ata5272 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     153             :   { "ata5505", "Select the ata5505 processor", { AVR::FamilyAVR35, AVR::ELFArchAVR35 }, { } },
     154             :   { "ata5790", "Select the ata5790 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     155             :   { "ata5795", "Select the ata5795 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     156             :   { "ata6285", "Select the ata6285 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     157             :   { "ata6286", "Select the ata6286 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     158             :   { "ata6289", "Select the ata6289 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     159             :   { "atmega103", "Select the atmega103 processor", { AVR::FamilyAVR31, AVR::ELFArchAVR31 }, { } },
     160             :   { "atmega128", "Select the atmega128 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     161             :   { "atmega1280", "Select the atmega1280 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     162             :   { "atmega1281", "Select the atmega1281 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     163             :   { "atmega1284", "Select the atmega1284 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     164             :   { "atmega1284p", "Select the atmega1284p processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     165             :   { "atmega1284rfr2", "Select the atmega1284rfr2 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     166             :   { "atmega128a", "Select the atmega128a processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     167             :   { "atmega128rfa1", "Select the atmega128rfa1 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     168             :   { "atmega128rfr2", "Select the atmega128rfr2 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     169             :   { "atmega16", "Select the atmega16 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     170             :   { "atmega161", "Select the atmega161 processor", { AVR::FamilyAVR3, AVR::ELFArchAVR5, AVR::FeatureMultiplication, AVR::FeatureMOVW, AVR::FeatureLPMX, AVR::FeatureSPM }, { } },
     171             :   { "atmega162", "Select the atmega162 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     172             :   { "atmega163", "Select the atmega163 processor", { AVR::FamilyAVR3, AVR::ELFArchAVR5, AVR::FeatureMultiplication, AVR::FeatureMOVW, AVR::FeatureLPMX, AVR::FeatureSPM }, { } },
     173             :   { "atmega164a", "Select the atmega164a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     174             :   { "atmega164p", "Select the atmega164p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     175             :   { "atmega164pa", "Select the atmega164pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     176             :   { "atmega165", "Select the atmega165 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     177             :   { "atmega165a", "Select the atmega165a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     178             :   { "atmega165p", "Select the atmega165p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     179             :   { "atmega165pa", "Select the atmega165pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     180             :   { "atmega168", "Select the atmega168 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     181             :   { "atmega168a", "Select the atmega168a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     182             :   { "atmega168p", "Select the atmega168p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     183             :   { "atmega168pa", "Select the atmega168pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     184             :   { "atmega169", "Select the atmega169 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     185             :   { "atmega169a", "Select the atmega169a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     186             :   { "atmega169p", "Select the atmega169p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     187             :   { "atmega169pa", "Select the atmega169pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     188             :   { "atmega16a", "Select the atmega16a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     189             :   { "atmega16hva", "Select the atmega16hva processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     190             :   { "atmega16hva2", "Select the atmega16hva2 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     191             :   { "atmega16hvb", "Select the atmega16hvb processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     192             :   { "atmega16hvbrevb", "Select the atmega16hvbrevb processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     193             :   { "atmega16m1", "Select the atmega16m1 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     194             :   { "atmega16u2", "Select the atmega16u2 processor", { AVR::FamilyAVR35, AVR::ELFArchAVR35 }, { } },
     195             :   { "atmega16u4", "Select the atmega16u4 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     196             :   { "atmega2560", "Select the atmega2560 processor", { AVR::FamilyAVR6, AVR::ELFArchAVR6 }, { } },
     197             :   { "atmega2561", "Select the atmega2561 processor", { AVR::FamilyAVR6, AVR::ELFArchAVR6 }, { } },
     198             :   { "atmega2564rfr2", "Select the atmega2564rfr2 processor", { AVR::FamilyAVR6, AVR::ELFArchAVR6 }, { } },
     199             :   { "atmega256rfr2", "Select the atmega256rfr2 processor", { AVR::FamilyAVR6, AVR::ELFArchAVR6 }, { } },
     200             :   { "atmega32", "Select the atmega32 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     201             :   { "atmega323", "Select the atmega323 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     202             :   { "atmega324a", "Select the atmega324a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     203             :   { "atmega324p", "Select the atmega324p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     204             :   { "atmega324pa", "Select the atmega324pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     205             :   { "atmega325", "Select the atmega325 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     206             :   { "atmega3250", "Select the atmega3250 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     207             :   { "atmega3250a", "Select the atmega3250a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     208             :   { "atmega3250p", "Select the atmega3250p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     209             :   { "atmega3250pa", "Select the atmega3250pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     210             :   { "atmega325a", "Select the atmega325a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     211             :   { "atmega325p", "Select the atmega325p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     212             :   { "atmega325pa", "Select the atmega325pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     213             :   { "atmega328", "Select the atmega328 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     214             :   { "atmega328p", "Select the atmega328p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     215             :   { "atmega329", "Select the atmega329 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     216             :   { "atmega3290", "Select the atmega3290 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     217             :   { "atmega3290a", "Select the atmega3290a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     218             :   { "atmega3290p", "Select the atmega3290p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     219             :   { "atmega3290pa", "Select the atmega3290pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     220             :   { "atmega329a", "Select the atmega329a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     221             :   { "atmega329p", "Select the atmega329p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     222             :   { "atmega329pa", "Select the atmega329pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     223             :   { "atmega32a", "Select the atmega32a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     224             :   { "atmega32c1", "Select the atmega32c1 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     225             :   { "atmega32hvb", "Select the atmega32hvb processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     226             :   { "atmega32hvbrevb", "Select the atmega32hvbrevb processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     227             :   { "atmega32m1", "Select the atmega32m1 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     228             :   { "atmega32u2", "Select the atmega32u2 processor", { AVR::FamilyAVR35, AVR::ELFArchAVR35 }, { } },
     229             :   { "atmega32u4", "Select the atmega32u4 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     230             :   { "atmega32u6", "Select the atmega32u6 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     231             :   { "atmega406", "Select the atmega406 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     232             :   { "atmega48", "Select the atmega48 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     233             :   { "atmega48a", "Select the atmega48a processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     234             :   { "atmega48p", "Select the atmega48p processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     235             :   { "atmega48pa", "Select the atmega48pa processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     236             :   { "atmega64", "Select the atmega64 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     237             :   { "atmega640", "Select the atmega640 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     238             :   { "atmega644", "Select the atmega644 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     239             :   { "atmega644a", "Select the atmega644a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     240             :   { "atmega644p", "Select the atmega644p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     241             :   { "atmega644pa", "Select the atmega644pa processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     242             :   { "atmega644rfr2", "Select the atmega644rfr2 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     243             :   { "atmega645", "Select the atmega645 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     244             :   { "atmega6450", "Select the atmega6450 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     245             :   { "atmega6450a", "Select the atmega6450a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     246             :   { "atmega6450p", "Select the atmega6450p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     247             :   { "atmega645a", "Select the atmega645a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     248             :   { "atmega645p", "Select the atmega645p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     249             :   { "atmega649", "Select the atmega649 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     250             :   { "atmega6490", "Select the atmega6490 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     251             :   { "atmega6490a", "Select the atmega6490a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     252             :   { "atmega6490p", "Select the atmega6490p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     253             :   { "atmega649a", "Select the atmega649a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     254             :   { "atmega649p", "Select the atmega649p processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     255             :   { "atmega64a", "Select the atmega64a processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     256             :   { "atmega64c1", "Select the atmega64c1 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     257             :   { "atmega64hve", "Select the atmega64hve processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     258             :   { "atmega64m1", "Select the atmega64m1 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     259             :   { "atmega64rfr2", "Select the atmega64rfr2 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     260             :   { "atmega8", "Select the atmega8 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     261             :   { "atmega8515", "Select the atmega8515 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR4, AVR::FeatureMultiplication, AVR::FeatureMOVW, AVR::FeatureLPMX, AVR::FeatureSPM }, { } },
     262             :   { "atmega8535", "Select the atmega8535 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR4, AVR::FeatureMultiplication, AVR::FeatureMOVW, AVR::FeatureLPMX, AVR::FeatureSPM }, { } },
     263             :   { "atmega88", "Select the atmega88 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     264             :   { "atmega88a", "Select the atmega88a processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     265             :   { "atmega88p", "Select the atmega88p processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     266             :   { "atmega88pa", "Select the atmega88pa processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     267             :   { "atmega8a", "Select the atmega8a processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     268             :   { "atmega8hva", "Select the atmega8hva processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     269             :   { "atmega8u2", "Select the atmega8u2 processor", { AVR::FamilyAVR35, AVR::ELFArchAVR35 }, { } },
     270             :   { "attiny10", "Select the attiny10 processor", { AVR::FamilyTiny, AVR::ELFArchTiny }, { } },
     271             :   { "attiny102", "Select the attiny102 processor", { AVR::FamilyTiny, AVR::ELFArchTiny }, { } },
     272             :   { "attiny104", "Select the attiny104 processor", { AVR::FamilyTiny, AVR::ELFArchTiny }, { } },
     273             :   { "attiny11", "Select the attiny11 processor", { AVR::FamilyAVR1, AVR::ELFArchAVR1 }, { } },
     274             :   { "attiny12", "Select the attiny12 processor", { AVR::FamilyAVR1, AVR::ELFArchAVR1 }, { } },
     275             :   { "attiny13", "Select the attiny13 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     276             :   { "attiny13a", "Select the attiny13a processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     277             :   { "attiny15", "Select the attiny15 processor", { AVR::FamilyAVR1, AVR::ELFArchAVR1 }, { } },
     278             :   { "attiny1634", "Select the attiny1634 processor", { AVR::FamilyAVR35, AVR::ELFArchAVR35 }, { } },
     279             :   { "attiny167", "Select the attiny167 processor", { AVR::FamilyAVR35, AVR::ELFArchAVR35 }, { } },
     280             :   { "attiny20", "Select the attiny20 processor", { AVR::FamilyTiny, AVR::ELFArchTiny }, { } },
     281             :   { "attiny22", "Select the attiny22 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     282             :   { "attiny2313", "Select the attiny2313 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     283             :   { "attiny2313a", "Select the attiny2313a processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     284             :   { "attiny24", "Select the attiny24 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     285             :   { "attiny24a", "Select the attiny24a processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     286             :   { "attiny25", "Select the attiny25 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     287             :   { "attiny26", "Select the attiny26 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2, AVR::FeatureLPMX }, { } },
     288             :   { "attiny261", "Select the attiny261 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     289             :   { "attiny261a", "Select the attiny261a processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     290             :   { "attiny28", "Select the attiny28 processor", { AVR::FamilyAVR1, AVR::ELFArchAVR1 }, { } },
     291             :   { "attiny4", "Select the attiny4 processor", { AVR::FamilyTiny, AVR::ELFArchTiny }, { } },
     292             :   { "attiny40", "Select the attiny40 processor", { AVR::FamilyTiny, AVR::ELFArchTiny }, { } },
     293             :   { "attiny4313", "Select the attiny4313 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     294             :   { "attiny43u", "Select the attiny43u processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     295             :   { "attiny44", "Select the attiny44 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     296             :   { "attiny44a", "Select the attiny44a processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     297             :   { "attiny45", "Select the attiny45 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     298             :   { "attiny461", "Select the attiny461 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     299             :   { "attiny461a", "Select the attiny461a processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     300             :   { "attiny48", "Select the attiny48 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     301             :   { "attiny5", "Select the attiny5 processor", { AVR::FamilyTiny, AVR::ELFArchTiny }, { } },
     302             :   { "attiny828", "Select the attiny828 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     303             :   { "attiny84", "Select the attiny84 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     304             :   { "attiny84a", "Select the attiny84a processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     305             :   { "attiny85", "Select the attiny85 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     306             :   { "attiny861", "Select the attiny861 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     307             :   { "attiny861a", "Select the attiny861a processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     308             :   { "attiny87", "Select the attiny87 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     309             :   { "attiny88", "Select the attiny88 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     310             :   { "attiny9", "Select the attiny9 processor", { AVR::FamilyTiny, AVR::ELFArchTiny }, { } },
     311             :   { "atxmega128a1", "Select the atxmega128a1 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA7 }, { } },
     312             :   { "atxmega128a1u", "Select the atxmega128a1u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA7 }, { } },
     313             :   { "atxmega128a3", "Select the atxmega128a3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     314             :   { "atxmega128a3u", "Select the atxmega128a3u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     315             :   { "atxmega128a4u", "Select the atxmega128a4u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA7 }, { } },
     316             :   { "atxmega128b1", "Select the atxmega128b1 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     317             :   { "atxmega128b3", "Select the atxmega128b3 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     318             :   { "atxmega128c3", "Select the atxmega128c3 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     319             :   { "atxmega128d3", "Select the atxmega128d3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     320             :   { "atxmega128d4", "Select the atxmega128d4 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     321             :   { "atxmega16a4", "Select the atxmega16a4 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA2 }, { } },
     322             :   { "atxmega16a4u", "Select the atxmega16a4u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA2 }, { } },
     323             :   { "atxmega16c4", "Select the atxmega16c4 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA2 }, { } },
     324             :   { "atxmega16d4", "Select the atxmega16d4 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA2 }, { } },
     325             :   { "atxmega16e5", "Select the atxmega16e5 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA2 }, { } },
     326             :   { "atxmega192a3", "Select the atxmega192a3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     327             :   { "atxmega192a3u", "Select the atxmega192a3u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     328             :   { "atxmega192c3", "Select the atxmega192c3 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     329             :   { "atxmega192d3", "Select the atxmega192d3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     330             :   { "atxmega256a3", "Select the atxmega256a3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     331             :   { "atxmega256a3b", "Select the atxmega256a3b processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     332             :   { "atxmega256a3bu", "Select the atxmega256a3bu processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     333             :   { "atxmega256a3u", "Select the atxmega256a3u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     334             :   { "atxmega256c3", "Select the atxmega256c3 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     335             :   { "atxmega256d3", "Select the atxmega256d3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     336             :   { "atxmega32a4", "Select the atxmega32a4 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA2 }, { } },
     337             :   { "atxmega32a4u", "Select the atxmega32a4u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA2 }, { } },
     338             :   { "atxmega32c4", "Select the atxmega32c4 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA2 }, { } },
     339             :   { "atxmega32d4", "Select the atxmega32d4 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA2 }, { } },
     340             :   { "atxmega32e5", "Select the atxmega32e5 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA2 }, { } },
     341             :   { "atxmega32x1", "Select the atxmega32x1 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA2 }, { } },
     342             :   { "atxmega384c3", "Select the atxmega384c3 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA6 }, { } },
     343             :   { "atxmega384d3", "Select the atxmega384d3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     344             :   { "atxmega64a1", "Select the atxmega64a1 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA5 }, { } },
     345             :   { "atxmega64a1u", "Select the atxmega64a1u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA5 }, { } },
     346             :   { "atxmega64a3", "Select the atxmega64a3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA4 }, { } },
     347             :   { "atxmega64a3u", "Select the atxmega64a3u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA4 }, { } },
     348             :   { "atxmega64a4u", "Select the atxmega64a4u processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA4 }, { } },
     349             :   { "atxmega64b1", "Select the atxmega64b1 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA4 }, { } },
     350             :   { "atxmega64b3", "Select the atxmega64b3 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA4 }, { } },
     351             :   { "atxmega64c3", "Select the atxmega64c3 processor", { AVR::FamilyXMEGAU, AVR::ELFArchXMEGA4 }, { } },
     352             :   { "atxmega64d3", "Select the atxmega64d3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA4 }, { } },
     353             :   { "atxmega64d4", "Select the atxmega64d4 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA4 }, { } },
     354             :   { "atxmega8e5", "Select the atxmega8e5 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA2 }, { } },
     355             :   { "avr1", "Select the avr1 processor", { AVR::FamilyAVR1, AVR::ELFArchAVR1 }, { } },
     356             :   { "avr2", "Select the avr2 processor", { AVR::FamilyAVR2, AVR::ELFArchAVR2 }, { } },
     357             :   { "avr25", "Select the avr25 processor", { AVR::FamilyAVR25, AVR::ELFArchAVR25 }, { } },
     358             :   { "avr3", "Select the avr3 processor", { AVR::FamilyAVR3, AVR::ELFArchAVR3 }, { } },
     359             :   { "avr31", "Select the avr31 processor", { AVR::FamilyAVR31, AVR::ELFArchAVR31 }, { } },
     360             :   { "avr35", "Select the avr35 processor", { AVR::FamilyAVR35, AVR::ELFArchAVR35 }, { } },
     361             :   { "avr4", "Select the avr4 processor", { AVR::FamilyAVR4, AVR::ELFArchAVR4 }, { } },
     362             :   { "avr5", "Select the avr5 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     363             :   { "avr51", "Select the avr51 processor", { AVR::FamilyAVR51, AVR::ELFArchAVR51 }, { } },
     364             :   { "avr6", "Select the avr6 processor", { AVR::FamilyAVR6, AVR::ELFArchAVR6 }, { } },
     365             :   { "avrtiny", "Select the avrtiny processor", { AVR::FamilyTiny, AVR::ELFArchTiny }, { } },
     366             :   { "avrxmega1", "Select the avrxmega1 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA1 }, { } },
     367             :   { "avrxmega2", "Select the avrxmega2 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA2 }, { } },
     368             :   { "avrxmega3", "Select the avrxmega3 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA3 }, { } },
     369             :   { "avrxmega4", "Select the avrxmega4 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA4 }, { } },
     370             :   { "avrxmega5", "Select the avrxmega5 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA5 }, { } },
     371             :   { "avrxmega6", "Select the avrxmega6 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA6 }, { } },
     372             :   { "avrxmega7", "Select the avrxmega7 processor", { AVR::FamilyXMEGA, AVR::ELFArchXMEGA7 }, { } },
     373             :   { "m3000", "Select the m3000 processor", { AVR::FamilyAVR5, AVR::ELFArchAVR5 }, { } },
     374             : };
     375             : 
     376             : #ifdef DBGFIELD
     377             : #error "<target>GenSubtargetInfo.inc requires a DBGFIELD macro"
     378             : #endif
     379             : #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
     380             : #define DBGFIELD(x) x,
     381             : #else
     382             : #define DBGFIELD(x)
     383             : #endif
     384             : 
     385             : // ===============================================================
     386             : // Data tables for the new per-operand machine model.
     387             : 
     388             : // {ProcResourceIdx, Cycles}
     389             : extern const llvm::MCWriteProcResEntry AVRWriteProcResTable[] = {
     390             :   { 0,  0}, // Invalid
     391             : }; // AVRWriteProcResTable
     392             : 
     393             : // {Cycles, WriteResourceID}
     394             : extern const llvm::MCWriteLatencyEntry AVRWriteLatencyTable[] = {
     395             :   { 0,  0}, // Invalid
     396             : }; // AVRWriteLatencyTable
     397             : 
     398             : // {UseIdx, WriteResourceID, Cycles}
     399             : extern const llvm::MCReadAdvanceEntry AVRReadAdvanceTable[] = {
     400             :   {0,  0,  0}, // Invalid
     401             : }; // AVRReadAdvanceTable
     402             : 
     403             : static const llvm::MCSchedModel NoSchedModel = {
     404             :   MCSchedModel::DefaultIssueWidth,
     405             :   MCSchedModel::DefaultMicroOpBufferSize,
     406             :   MCSchedModel::DefaultLoopMicroOpBufferSize,
     407             :   MCSchedModel::DefaultLoadLatency,
     408             :   MCSchedModel::DefaultHighLatency,
     409             :   MCSchedModel::DefaultMispredictPenalty,
     410             :   false, // PostRAScheduler
     411             :   false, // CompleteModel
     412             :   0, // Processor ID
     413             :   nullptr, nullptr, 0, 0, // No instruction-level machine model.
     414             :   nullptr, // No Itinerary
     415             :   nullptr // No extra processor descriptor
     416             : };
     417             : 
     418             : // Sorted (by key) array of itineraries for CPU subtype.
     419             : extern const llvm::SubtargetInfoKV AVRProcSchedKV[] = {
     420             :   { "at43usb320", (const void *)&NoSchedModel },
     421             :   { "at43usb355", (const void *)&NoSchedModel },
     422             :   { "at76c711", (const void *)&NoSchedModel },
     423             :   { "at86rf401", (const void *)&NoSchedModel },
     424             :   { "at90c8534", (const void *)&NoSchedModel },
     425             :   { "at90can128", (const void *)&NoSchedModel },
     426             :   { "at90can32", (const void *)&NoSchedModel },
     427             :   { "at90can64", (const void *)&NoSchedModel },
     428             :   { "at90pwm1", (const void *)&NoSchedModel },
     429             :   { "at90pwm161", (const void *)&NoSchedModel },
     430             :   { "at90pwm2", (const void *)&NoSchedModel },
     431             :   { "at90pwm216", (const void *)&NoSchedModel },
     432             :   { "at90pwm2b", (const void *)&NoSchedModel },
     433             :   { "at90pwm3", (const void *)&NoSchedModel },
     434             :   { "at90pwm316", (const void *)&NoSchedModel },
     435             :   { "at90pwm3b", (const void *)&NoSchedModel },
     436             :   { "at90pwm81", (const void *)&NoSchedModel },
     437             :   { "at90s1200", (const void *)&NoSchedModel },
     438             :   { "at90s2313", (const void *)&NoSchedModel },
     439             :   { "at90s2323", (const void *)&NoSchedModel },
     440             :   { "at90s2333", (const void *)&NoSchedModel },
     441             :   { "at90s2343", (const void *)&NoSchedModel },
     442             :   { "at90s4414", (const void *)&NoSchedModel },
     443             :   { "at90s4433", (const void *)&NoSchedModel },
     444             :   { "at90s4434", (const void *)&NoSchedModel },
     445             :   { "at90s8515", (const void *)&NoSchedModel },
     446             :   { "at90s8535", (const void *)&NoSchedModel },
     447             :   { "at90scr100", (const void *)&NoSchedModel },
     448             :   { "at90usb1286", (const void *)&NoSchedModel },
     449             :   { "at90usb1287", (const void *)&NoSchedModel },
     450             :   { "at90usb162", (const void *)&NoSchedModel },
     451             :   { "at90usb646", (const void *)&NoSchedModel },
     452             :   { "at90usb647", (const void *)&NoSchedModel },
     453             :   { "at90usb82", (const void *)&NoSchedModel },
     454             :   { "at94k", (const void *)&NoSchedModel },
     455             :   { "ata5272", (const void *)&NoSchedModel },
     456             :   { "ata5505", (const void *)&NoSchedModel },
     457             :   { "ata5790", (const void *)&NoSchedModel },
     458             :   { "ata5795", (const void *)&NoSchedModel },
     459             :   { "ata6285", (const void *)&NoSchedModel },
     460             :   { "ata6286", (const void *)&NoSchedModel },
     461             :   { "ata6289", (const void *)&NoSchedModel },
     462             :   { "atmega103", (const void *)&NoSchedModel },
     463             :   { "atmega128", (const void *)&NoSchedModel },
     464             :   { "atmega1280", (const void *)&NoSchedModel },
     465             :   { "atmega1281", (const void *)&NoSchedModel },
     466             :   { "atmega1284", (const void *)&NoSchedModel },
     467             :   { "atmega1284p", (const void *)&NoSchedModel },
     468             :   { "atmega1284rfr2", (const void *)&NoSchedModel },
     469             :   { "atmega128a", (const void *)&NoSchedModel },
     470             :   { "atmega128rfa1", (const void *)&NoSchedModel },
     471             :   { "atmega128rfr2", (const void *)&NoSchedModel },
     472             :   { "atmega16", (const void *)&NoSchedModel },
     473             :   { "atmega161", (const void *)&NoSchedModel },
     474             :   { "atmega162", (const void *)&NoSchedModel },
     475             :   { "atmega163", (const void *)&NoSchedModel },
     476             :   { "atmega164a", (const void *)&NoSchedModel },
     477             :   { "atmega164p", (const void *)&NoSchedModel },
     478             :   { "atmega164pa", (const void *)&NoSchedModel },
     479             :   { "atmega165", (const void *)&NoSchedModel },
     480             :   { "atmega165a", (const void *)&NoSchedModel },
     481             :   { "atmega165p", (const void *)&NoSchedModel },
     482             :   { "atmega165pa", (const void *)&NoSchedModel },
     483             :   { "atmega168", (const void *)&NoSchedModel },
     484             :   { "atmega168a", (const void *)&NoSchedModel },
     485             :   { "atmega168p", (const void *)&NoSchedModel },
     486             :   { "atmega168pa", (const void *)&NoSchedModel },
     487             :   { "atmega169", (const void *)&NoSchedModel },
     488             :   { "atmega169a", (const void *)&NoSchedModel },
     489             :   { "atmega169p", (const void *)&NoSchedModel },
     490             :   { "atmega169pa", (const void *)&NoSchedModel },
     491             :   { "atmega16a", (const void *)&NoSchedModel },
     492             :   { "atmega16hva", (const void *)&NoSchedModel },
     493             :   { "atmega16hva2", (const void *)&NoSchedModel },
     494             :   { "atmega16hvb", (const void *)&NoSchedModel },
     495             :   { "atmega16hvbrevb", (const void *)&NoSchedModel },
     496             :   { "atmega16m1", (const void *)&NoSchedModel },
     497             :   { "atmega16u2", (const void *)&NoSchedModel },
     498             :   { "atmega16u4", (const void *)&NoSchedModel },
     499             :   { "atmega2560", (const void *)&NoSchedModel },
     500             :   { "atmega2561", (const void *)&NoSchedModel },
     501             :   { "atmega2564rfr2", (const void *)&NoSchedModel },
     502             :   { "atmega256rfr2", (const void *)&NoSchedModel },
     503             :   { "atmega32", (const void *)&NoSchedModel },
     504             :   { "atmega323", (const void *)&NoSchedModel },
     505             :   { "atmega324a", (const void *)&NoSchedModel },
     506             :   { "atmega324p", (const void *)&NoSchedModel },
     507             :   { "atmega324pa", (const void *)&NoSchedModel },
     508             :   { "atmega325", (const void *)&NoSchedModel },
     509             :   { "atmega3250", (const void *)&NoSchedModel },
     510             :   { "atmega3250a", (const void *)&NoSchedModel },
     511             :   { "atmega3250p", (const void *)&NoSchedModel },
     512             :   { "atmega3250pa", (const void *)&NoSchedModel },
     513             :   { "atmega325a", (const void *)&NoSchedModel },
     514             :   { "atmega325p", (const void *)&NoSchedModel },
     515             :   { "atmega325pa", (const void *)&NoSchedModel },
     516             :   { "atmega328", (const void *)&NoSchedModel },
     517             :   { "atmega328p", (const void *)&NoSchedModel },
     518             :   { "atmega329", (const void *)&NoSchedModel },
     519             :   { "atmega3290", (const void *)&NoSchedModel },
     520             :   { "atmega3290a", (const void *)&NoSchedModel },
     521             :   { "atmega3290p", (const void *)&NoSchedModel },
     522             :   { "atmega3290pa", (const void *)&NoSchedModel },
     523             :   { "atmega329a", (const void *)&NoSchedModel },
     524             :   { "atmega329p", (const void *)&NoSchedModel },
     525             :   { "atmega329pa", (const void *)&NoSchedModel },
     526             :   { "atmega32a", (const void *)&NoSchedModel },
     527             :   { "atmega32c1", (const void *)&NoSchedModel },
     528             :   { "atmega32hvb", (const void *)&NoSchedModel },
     529             :   { "atmega32hvbrevb", (const void *)&NoSchedModel },
     530             :   { "atmega32m1", (const void *)&NoSchedModel },
     531             :   { "atmega32u2", (const void *)&NoSchedModel },
     532             :   { "atmega32u4", (const void *)&NoSchedModel },
     533             :   { "atmega32u6", (const void *)&NoSchedModel },
     534             :   { "atmega406", (const void *)&NoSchedModel },
     535             :   { "atmega48", (const void *)&NoSchedModel },
     536             :   { "atmega48a", (const void *)&NoSchedModel },
     537             :   { "atmega48p", (const void *)&NoSchedModel },
     538             :   { "atmega48pa", (const void *)&NoSchedModel },
     539             :   { "atmega64", (const void *)&NoSchedModel },
     540             :   { "atmega640", (const void *)&NoSchedModel },
     541             :   { "atmega644", (const void *)&NoSchedModel },
     542             :   { "atmega644a", (const void *)&NoSchedModel },
     543             :   { "atmega644p", (const void *)&NoSchedModel },
     544             :   { "atmega644pa", (const void *)&NoSchedModel },
     545             :   { "atmega644rfr2", (const void *)&NoSchedModel },
     546             :   { "atmega645", (const void *)&NoSchedModel },
     547             :   { "atmega6450", (const void *)&NoSchedModel },
     548             :   { "atmega6450a", (const void *)&NoSchedModel },
     549             :   { "atmega6450p", (const void *)&NoSchedModel },
     550             :   { "atmega645a", (const void *)&NoSchedModel },
     551             :   { "atmega645p", (const void *)&NoSchedModel },
     552             :   { "atmega649", (const void *)&NoSchedModel },
     553             :   { "atmega6490", (const void *)&NoSchedModel },
     554             :   { "atmega6490a", (const void *)&NoSchedModel },
     555             :   { "atmega6490p", (const void *)&NoSchedModel },
     556             :   { "atmega649a", (const void *)&NoSchedModel },
     557             :   { "atmega649p", (const void *)&NoSchedModel },
     558             :   { "atmega64a", (const void *)&NoSchedModel },
     559             :   { "atmega64c1", (const void *)&NoSchedModel },
     560             :   { "atmega64hve", (const void *)&NoSchedModel },
     561             :   { "atmega64m1", (const void *)&NoSchedModel },
     562             :   { "atmega64rfr2", (const void *)&NoSchedModel },
     563             :   { "atmega8", (const void *)&NoSchedModel },
     564             :   { "atmega8515", (const void *)&NoSchedModel },
     565             :   { "atmega8535", (const void *)&NoSchedModel },
     566             :   { "atmega88", (const void *)&NoSchedModel },
     567             :   { "atmega88a", (const void *)&NoSchedModel },
     568             :   { "atmega88p", (const void *)&NoSchedModel },
     569             :   { "atmega88pa", (const void *)&NoSchedModel },
     570             :   { "atmega8a", (const void *)&NoSchedModel },
     571             :   { "atmega8hva", (const void *)&NoSchedModel },
     572             :   { "atmega8u2", (const void *)&NoSchedModel },
     573             :   { "attiny10", (const void *)&NoSchedModel },
     574             :   { "attiny102", (const void *)&NoSchedModel },
     575             :   { "attiny104", (const void *)&NoSchedModel },
     576             :   { "attiny11", (const void *)&NoSchedModel },
     577             :   { "attiny12", (const void *)&NoSchedModel },
     578             :   { "attiny13", (const void *)&NoSchedModel },
     579             :   { "attiny13a", (const void *)&NoSchedModel },
     580             :   { "attiny15", (const void *)&NoSchedModel },
     581             :   { "attiny1634", (const void *)&NoSchedModel },
     582             :   { "attiny167", (const void *)&NoSchedModel },
     583             :   { "attiny20", (const void *)&NoSchedModel },
     584             :   { "attiny22", (const void *)&NoSchedModel },
     585             :   { "attiny2313", (const void *)&NoSchedModel },
     586             :   { "attiny2313a", (const void *)&NoSchedModel },
     587             :   { "attiny24", (const void *)&NoSchedModel },
     588             :   { "attiny24a", (const void *)&NoSchedModel },
     589             :   { "attiny25", (const void *)&NoSchedModel },
     590             :   { "attiny26", (const void *)&NoSchedModel },
     591             :   { "attiny261", (const void *)&NoSchedModel },
     592             :   { "attiny261a", (const void *)&NoSchedModel },
     593             :   { "attiny28", (const void *)&NoSchedModel },
     594             :   { "attiny4", (const void *)&NoSchedModel },
     595             :   { "attiny40", (const void *)&NoSchedModel },
     596             :   { "attiny4313", (const void *)&NoSchedModel },
     597             :   { "attiny43u", (const void *)&NoSchedModel },
     598             :   { "attiny44", (const void *)&NoSchedModel },
     599             :   { "attiny44a", (const void *)&NoSchedModel },
     600             :   { "attiny45", (const void *)&NoSchedModel },
     601             :   { "attiny461", (const void *)&NoSchedModel },
     602             :   { "attiny461a", (const void *)&NoSchedModel },
     603             :   { "attiny48", (const void *)&NoSchedModel },
     604             :   { "attiny5", (const void *)&NoSchedModel },
     605             :   { "attiny828", (const void *)&NoSchedModel },
     606             :   { "attiny84", (const void *)&NoSchedModel },
     607             :   { "attiny84a", (const void *)&NoSchedModel },
     608             :   { "attiny85", (const void *)&NoSchedModel },
     609             :   { "attiny861", (const void *)&NoSchedModel },
     610             :   { "attiny861a", (const void *)&NoSchedModel },
     611             :   { "attiny87", (const void *)&NoSchedModel },
     612             :   { "attiny88", (const void *)&NoSchedModel },
     613             :   { "attiny9", (const void *)&NoSchedModel },
     614             :   { "atxmega128a1", (const void *)&NoSchedModel },
     615             :   { "atxmega128a1u", (const void *)&NoSchedModel },
     616             :   { "atxmega128a3", (const void *)&NoSchedModel },
     617             :   { "atxmega128a3u", (const void *)&NoSchedModel },
     618             :   { "atxmega128a4u", (const void *)&NoSchedModel },
     619             :   { "atxmega128b1", (const void *)&NoSchedModel },
     620             :   { "atxmega128b3", (const void *)&NoSchedModel },
     621             :   { "atxmega128c3", (const void *)&NoSchedModel },
     622             :   { "atxmega128d3", (const void *)&NoSchedModel },
     623             :   { "atxmega128d4", (const void *)&NoSchedModel },
     624             :   { "atxmega16a4", (const void *)&NoSchedModel },
     625             :   { "atxmega16a4u", (const void *)&NoSchedModel },
     626             :   { "atxmega16c4", (const void *)&NoSchedModel },
     627             :   { "atxmega16d4", (const void *)&NoSchedModel },
     628             :   { "atxmega16e5", (const void *)&NoSchedModel },
     629             :   { "atxmega192a3", (const void *)&NoSchedModel },
     630             :   { "atxmega192a3u", (const void *)&NoSchedModel },
     631             :   { "atxmega192c3", (const void *)&NoSchedModel },
     632             :   { "atxmega192d3", (const void *)&NoSchedModel },
     633             :   { "atxmega256a3", (const void *)&NoSchedModel },
     634             :   { "atxmega256a3b", (const void *)&NoSchedModel },
     635             :   { "atxmega256a3bu", (const void *)&NoSchedModel },
     636             :   { "atxmega256a3u", (const void *)&NoSchedModel },
     637             :   { "atxmega256c3", (const void *)&NoSchedModel },
     638             :   { "atxmega256d3", (const void *)&NoSchedModel },
     639             :   { "atxmega32a4", (const void *)&NoSchedModel },
     640             :   { "atxmega32a4u", (const void *)&NoSchedModel },
     641             :   { "atxmega32c4", (const void *)&NoSchedModel },
     642             :   { "atxmega32d4", (const void *)&NoSchedModel },
     643             :   { "atxmega32e5", (const void *)&NoSchedModel },
     644             :   { "atxmega32x1", (const void *)&NoSchedModel },
     645             :   { "atxmega384c3", (const void *)&NoSchedModel },
     646             :   { "atxmega384d3", (const void *)&NoSchedModel },
     647             :   { "atxmega64a1", (const void *)&NoSchedModel },
     648             :   { "atxmega64a1u", (const void *)&NoSchedModel },
     649             :   { "atxmega64a3", (const void *)&NoSchedModel },
     650             :   { "atxmega64a3u", (const void *)&NoSchedModel },
     651             :   { "atxmega64a4u", (const void *)&NoSchedModel },
     652             :   { "atxmega64b1", (const void *)&NoSchedModel },
     653             :   { "atxmega64b3", (const void *)&NoSchedModel },
     654             :   { "atxmega64c3", (const void *)&NoSchedModel },
     655             :   { "atxmega64d3", (const void *)&NoSchedModel },
     656             :   { "atxmega64d4", (const void *)&NoSchedModel },
     657             :   { "atxmega8e5", (const void *)&NoSchedModel },
     658             :   { "avr1", (const void *)&NoSchedModel },
     659             :   { "avr2", (const void *)&NoSchedModel },
     660             :   { "avr25", (const void *)&NoSchedModel },
     661             :   { "avr3", (const void *)&NoSchedModel },
     662             :   { "avr31", (const void *)&NoSchedModel },
     663             :   { "avr35", (const void *)&NoSchedModel },
     664             :   { "avr4", (const void *)&NoSchedModel },
     665             :   { "avr5", (const void *)&NoSchedModel },
     666             :   { "avr51", (const void *)&NoSchedModel },
     667             :   { "avr6", (const void *)&NoSchedModel },
     668             :   { "avrtiny", (const void *)&NoSchedModel },
     669             :   { "avrxmega1", (const void *)&NoSchedModel },
     670             :   { "avrxmega2", (const void *)&NoSchedModel },
     671             :   { "avrxmega3", (const void *)&NoSchedModel },
     672             :   { "avrxmega4", (const void *)&NoSchedModel },
     673             :   { "avrxmega5", (const void *)&NoSchedModel },
     674             :   { "avrxmega6", (const void *)&NoSchedModel },
     675             :   { "avrxmega7", (const void *)&NoSchedModel },
     676             :   { "m3000", (const void *)&NoSchedModel },
     677             : };
     678             : 
     679             : #undef DBGFIELD
     680             : namespace AVR_MC {
     681           0 : unsigned resolveVariantSchedClassImpl(unsigned SchedClass,
     682             :     const MCInst *MI, unsigned CPUID) {
     683             :   // Don't know how to resolve this scheduling class.
     684           0 :   return 0;
     685             : }
     686             : } // end of namespace AVR_MC
     687             : 
     688             : struct AVRGenMCSubtargetInfo : public MCSubtargetInfo {
     689             :   AVRGenMCSubtargetInfo(const Triple &TT, 
     690             :     StringRef CPU, StringRef FS, ArrayRef<SubtargetFeatureKV> PF,
     691             :     ArrayRef<SubtargetFeatureKV> PD,
     692             :     const SubtargetInfoKV *ProcSched,
     693             :     const MCWriteProcResEntry *WPR,
     694             :     const MCWriteLatencyEntry *WL,
     695             :     const MCReadAdvanceEntry *RA, const InstrStage *IS,
     696         218 :     const unsigned *OC, const unsigned *FP) :
     697             :       MCSubtargetInfo(TT, CPU, FS, PF, PD, ProcSched,
     698         218 :                       WPR, WL, RA, IS, OC, FP) { }
     699             : 
     700           0 :   unsigned resolveVariantSchedClass(unsigned SchedClass,
     701             :       const MCInst *MI, unsigned CPUID) const override {
     702           0 :     return AVR_MC::resolveVariantSchedClassImpl(SchedClass, MI, CPUID); 
     703             :   }
     704             : };
     705             : 
     706         218 : static inline MCSubtargetInfo *createAVRMCSubtargetInfoImpl(const Triple &TT, StringRef CPU, StringRef FS) {
     707             :   return new AVRGenMCSubtargetInfo(TT, CPU, FS, AVRFeatureKV, AVRSubTypeKV, 
     708             :                       AVRProcSchedKV, AVRWriteProcResTable, AVRWriteLatencyTable, AVRReadAdvanceTable, 
     709         218 :                       nullptr, nullptr, nullptr);
     710             : }
     711             : 
     712             : } // end namespace llvm
     713             : 
     714             : #endif // GET_SUBTARGETINFO_MC_DESC
     715             : 
     716             : 
     717             : #ifdef GET_SUBTARGETINFO_TARGET_DESC
     718             : #undef GET_SUBTARGETINFO_TARGET_DESC
     719             : 
     720             : #include "llvm/Support/Debug.h"
     721             : #include "llvm/Support/raw_ostream.h"
     722             : 
     723             : // ParseSubtargetFeatures - Parses features string setting specified
     724             : // subtarget options.
     725         119 : void llvm::AVRSubtarget::ParseSubtargetFeatures(StringRef CPU, StringRef FS) {
     726             :   LLVM_DEBUG(dbgs() << "\nFeatures:" << FS);
     727             :   LLVM_DEBUG(dbgs() << "\nCPU:" << CPU << "\n\n");
     728         119 :   InitMCProcessorInfo(CPU, FS);
     729             :   const FeatureBitset& Bits = getFeatureBits();
     730         119 :   if (Bits[AVR::ELFArchAVR1] && ELFArch < ELF::EF_AVR_ARCH_AVR1) ELFArch = ELF::EF_AVR_ARCH_AVR1;
     731         119 :   if (Bits[AVR::ELFArchAVR2] && ELFArch < ELF::EF_AVR_ARCH_AVR2) ELFArch = ELF::EF_AVR_ARCH_AVR2;
     732         119 :   if (Bits[AVR::ELFArchAVR3] && ELFArch < ELF::EF_AVR_ARCH_AVR3) ELFArch = ELF::EF_AVR_ARCH_AVR3;
     733         119 :   if (Bits[AVR::ELFArchAVR4] && ELFArch < ELF::EF_AVR_ARCH_AVR4) ELFArch = ELF::EF_AVR_ARCH_AVR4;
     734         119 :   if (Bits[AVR::ELFArchAVR5] && ELFArch < ELF::EF_AVR_ARCH_AVR5) ELFArch = ELF::EF_AVR_ARCH_AVR5;
     735         119 :   if (Bits[AVR::ELFArchAVR6] && ELFArch < ELF::EF_AVR_ARCH_AVR6) ELFArch = ELF::EF_AVR_ARCH_AVR6;
     736         119 :   if (Bits[AVR::ELFArchAVR25] && ELFArch < ELF::EF_AVR_ARCH_AVR25) ELFArch = ELF::EF_AVR_ARCH_AVR25;
     737         119 :   if (Bits[AVR::ELFArchAVR31] && ELFArch < ELF::EF_AVR_ARCH_AVR31) ELFArch = ELF::EF_AVR_ARCH_AVR31;
     738         119 :   if (Bits[AVR::ELFArchAVR35] && ELFArch < ELF::EF_AVR_ARCH_AVR35) ELFArch = ELF::EF_AVR_ARCH_AVR35;
     739         119 :   if (Bits[AVR::ELFArchAVR51] && ELFArch < ELF::EF_AVR_ARCH_AVR51) ELFArch = ELF::EF_AVR_ARCH_AVR51;
     740         119 :   if (Bits[AVR::ELFArchTiny] && ELFArch < ELF::EF_AVR_ARCH_AVRTINY) ELFArch = ELF::EF_AVR_ARCH_AVRTINY;
     741         119 :   if (Bits[AVR::ELFArchXMEGA1] && ELFArch < ELF::EF_AVR_ARCH_XMEGA1) ELFArch = ELF::EF_AVR_ARCH_XMEGA1;
     742         119 :   if (Bits[AVR::ELFArchXMEGA2] && ELFArch < ELF::EF_AVR_ARCH_XMEGA2) ELFArch = ELF::EF_AVR_ARCH_XMEGA2;
     743         119 :   if (Bits[AVR::ELFArchXMEGA3] && ELFArch < ELF::EF_AVR_ARCH_XMEGA3) ELFArch = ELF::EF_AVR_ARCH_XMEGA3;
     744         119 :   if (Bits[AVR::ELFArchXMEGA4] && ELFArch < ELF::EF_AVR_ARCH_XMEGA4) ELFArch = ELF::EF_AVR_ARCH_XMEGA4;
     745         119 :   if (Bits[AVR::ELFArchXMEGA5] && ELFArch < ELF::EF_AVR_ARCH_XMEGA5) ELFArch = ELF::EF_AVR_ARCH_XMEGA5;
     746         119 :   if (Bits[AVR::ELFArchXMEGA6] && ELFArch < ELF::EF_AVR_ARCH_XMEGA6) ELFArch = ELF::EF_AVR_ARCH_XMEGA6;
     747         119 :   if (Bits[AVR::ELFArchXMEGA7] && ELFArch < ELF::EF_AVR_ARCH_XMEGA7) ELFArch = ELF::EF_AVR_ARCH_XMEGA7;
     748         119 :   if (Bits[AVR::FamilyAVR0]) m_FeatureSetDummy = true;
     749         119 :   if (Bits[AVR::FamilyAVR1]) m_FeatureSetDummy = true;
     750         119 :   if (Bits[AVR::FamilyAVR2]) m_FeatureSetDummy = true;
     751         119 :   if (Bits[AVR::FamilyAVR3]) m_FeatureSetDummy = true;
     752         119 :   if (Bits[AVR::FamilyAVR4]) m_FeatureSetDummy = true;
     753         119 :   if (Bits[AVR::FamilyAVR5]) m_FeatureSetDummy = true;
     754         119 :   if (Bits[AVR::FamilyAVR6]) m_FeatureSetDummy = true;
     755         119 :   if (Bits[AVR::FamilyAVR25]) m_FeatureSetDummy = true;
     756         119 :   if (Bits[AVR::FamilyAVR31]) m_FeatureSetDummy = true;
     757         119 :   if (Bits[AVR::FamilyAVR35]) m_FeatureSetDummy = true;
     758         119 :   if (Bits[AVR::FamilyAVR51]) m_FeatureSetDummy = true;
     759         119 :   if (Bits[AVR::FamilyTiny]) m_FeatureSetDummy = true;
     760         119 :   if (Bits[AVR::FamilyXMEGA]) m_FeatureSetDummy = true;
     761         119 :   if (Bits[AVR::FamilyXMEGAU]) m_FeatureSetDummy = true;
     762         119 :   if (Bits[AVR::FeatureADDSUBIW]) m_hasADDSUBIW = true;
     763         119 :   if (Bits[AVR::FeatureBREAK]) m_hasBREAK = true;
     764         119 :   if (Bits[AVR::FeatureDES]) m_hasDES = true;
     765         119 :   if (Bits[AVR::FeatureEIJMPCALL]) m_hasEIJMPCALL = true;
     766         119 :   if (Bits[AVR::FeatureELPM]) m_hasELPM = true;
     767         119 :   if (Bits[AVR::FeatureELPMX]) m_hasELPMX = true;
     768         119 :   if (Bits[AVR::FeatureIJMPCALL]) m_hasIJMPCALL = true;
     769         119 :   if (Bits[AVR::FeatureJMPCALL]) m_hasJMPCALL = true;
     770         119 :   if (Bits[AVR::FeatureLPM]) m_hasLPM = true;
     771         119 :   if (Bits[AVR::FeatureLPMX]) m_hasLPMX = true;
     772         119 :   if (Bits[AVR::FeatureMOVW]) m_hasMOVW = true;
     773         119 :   if (Bits[AVR::FeatureMultiplication]) m_supportsMultiplication = true;
     774         119 :   if (Bits[AVR::FeatureRMW]) m_supportsRMW = true;
     775         119 :   if (Bits[AVR::FeatureSPM]) m_hasSPM = true;
     776         119 :   if (Bits[AVR::FeatureSPMX]) m_hasSPMX = true;
     777         119 :   if (Bits[AVR::FeatureSRAM]) m_hasSRAM = true;
     778         119 :   if (Bits[AVR::FeatureSetSpecial]) m_FeatureSetDummy = true;
     779         119 :   if (Bits[AVR::FeatureSmallStack]) m_hasSmallStack = true;
     780         119 :   if (Bits[AVR::FeatureTinyEncoding]) m_hasTinyEncoding = true;
     781         119 : }
     782             : #endif // GET_SUBTARGETINFO_TARGET_DESC
     783             : 
     784             : 
     785             : #ifdef GET_SUBTARGETINFO_HEADER
     786             : #undef GET_SUBTARGETINFO_HEADER
     787             : 
     788             : namespace llvm {
     789             : class DFAPacketizer;
     790             : namespace AVR_MC {
     791             : unsigned resolveVariantSchedClassImpl(unsigned SchedClass, const MCInst *MI, unsigned CPUID);
     792             : }
     793             : 
     794             : struct AVRGenSubtargetInfo : public TargetSubtargetInfo {
     795             :   explicit AVRGenSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS);
     796             : public:
     797             :   unsigned resolveSchedClass(unsigned SchedClass,  const MachineInstr *DefMI, const TargetSchedModel *SchedModel) const override;
     798             :   unsigned resolveVariantSchedClass(unsigned SchedClass, const MCInst *MI, unsigned CPUID) const override;
     799             :   DFAPacketizer *createDFAPacketizer(const InstrItineraryData *IID) const;
     800             : };
     801             : } // end namespace llvm
     802             : 
     803             : #endif // GET_SUBTARGETINFO_HEADER
     804             : 
     805             : 
     806             : #ifdef GET_SUBTARGETINFO_CTOR
     807             : #undef GET_SUBTARGETINFO_CTOR
     808             : 
     809             : #include "llvm/CodeGen/TargetSchedule.h"
     810             : 
     811             : namespace llvm {
     812             : extern const llvm::SubtargetFeatureKV AVRFeatureKV[];
     813             : extern const llvm::SubtargetFeatureKV AVRSubTypeKV[];
     814             : extern const llvm::SubtargetInfoKV AVRProcSchedKV[];
     815             : extern const llvm::MCWriteProcResEntry AVRWriteProcResTable[];
     816             : extern const llvm::MCWriteLatencyEntry AVRWriteLatencyTable[];
     817             : extern const llvm::MCReadAdvanceEntry AVRReadAdvanceTable[];
     818         119 : AVRGenSubtargetInfo::AVRGenSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS)
     819             :   : TargetSubtargetInfo(TT, CPU, FS, makeArrayRef(AVRFeatureKV, 33), makeArrayRef(AVRSubTypeKV, 257), 
     820             :                         AVRProcSchedKV, AVRWriteProcResTable, AVRWriteLatencyTable, AVRReadAdvanceTable, 
     821         119 :                         nullptr, nullptr, nullptr) {}
     822             : 
     823           0 : unsigned AVRGenSubtargetInfo
     824             : ::resolveSchedClass(unsigned SchedClass, const MachineInstr *MI, const TargetSchedModel *SchedModel) const {
     825           0 :   report_fatal_error("Expected a variant SchedClass");
     826             : } // AVRGenSubtargetInfo::resolveSchedClass
     827             : 
     828           0 : unsigned AVRGenSubtargetInfo
     829             : ::resolveVariantSchedClass(unsigned SchedClass, const MCInst *MI, unsigned CPUID) const {
     830           0 :   return AVR_MC::resolveVariantSchedClassImpl(SchedClass, MI, CPUID);
     831             : } // AVRGenSubtargetInfo::resolveVariantSchedClass
     832             : 
     833             : } // end namespace llvm
     834             : 
     835             : #endif // GET_SUBTARGETINFO_CTOR
     836             : 
     837             : 
     838             : #ifdef GET_STIPREDICATE_DECLS_FOR_MC_ANALYSIS
     839             : #undef GET_STIPREDICATE_DECLS_FOR_MC_ANALYSIS
     840             : 
     841             : #endif // GET_STIPREDICATE_DECLS_FOR_MC_ANALYSIS
     842             : 
     843             : 
     844             : #ifdef GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS
     845             : #undef GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS
     846             : 
     847             : #endif // GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS
     848             : 

Generated by: LCOV version 1.13