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 :
|