363 lines · plain
1class Architecture<string fname, string aname, list<SubtargetFeature> features>2 : SubtargetFeature<fname, "ARMArch", aname,3 !strconcat(aname, " architecture"), features>;4 5//===----------------------------------------------------------------------===//6// ARM architectures7//8 9def ARMv4 : Architecture<"armv4", "ARMv4", []>;10 11def ARMv4t : Architecture<"armv4t", "ARMv4t", [HasV4TOps]>;12 13def ARMv5t : Architecture<"armv5t", "ARMv5t", [HasV5TOps]>;14 15def ARMv5te : Architecture<"armv5te", "ARMv5te", [HasV5TEOps]>;16 17def ARMv5tej : Architecture<"armv5tej", "ARMv5tej", [HasV5TEOps]>;18 19def ARMv6 : Architecture<"armv6", "ARMv6", [HasV6Ops,20 FeatureDSP]>;21 22def ARMv6t2 : Architecture<"armv6t2", "ARMv6t2", [HasV6T2Ops,23 FeatureDSP]>;24 25def ARMv6k : Architecture<"armv6k", "ARMv6k", [HasV6KOps]>;26 27def ARMv6kz : Architecture<"armv6kz", "ARMv6kz", [HasV6KOps,28 FeatureTrustZone]>;29 30def ARMv6m : Architecture<"armv6-m", "ARMv6m", [HasV6MOps,31 FeatureNoARM,32 ModeThumb,33 FeatureDB,34 FeatureMClass,35 FeatureStrictAlign]>;36 37def ARMv6sm : Architecture<"armv6s-m", "ARMv6sm", [HasV6MOps,38 FeatureNoARM,39 ModeThumb,40 FeatureDB,41 FeatureMClass,42 FeatureStrictAlign]>;43 44def ARMv7a : Architecture<"armv7-a", "ARMv7a", [HasV7Ops,45 FeatureNEON,46 FeatureDB,47 FeatureDSP,48 FeatureAClass,49 FeaturePerfMon]>;50 51def ARMv7ve : Architecture<"armv7ve", "ARMv7ve", [HasV7Ops,52 FeatureNEON,53 FeatureDB,54 FeatureDSP,55 FeatureTrustZone,56 FeatureMP,57 FeatureVirtualization,58 FeatureAClass,59 FeaturePerfMon]>;60 61def ARMv7r : Architecture<"armv7-r", "ARMv7r", [HasV7Ops,62 FeatureDB,63 FeatureDSP,64 FeatureHWDivThumb,65 FeatureRClass,66 FeaturePerfMon]>;67 68def ARMv7m : Architecture<"armv7-m", "ARMv7m", [HasV7Ops,69 FeatureThumb2,70 FeatureNoARM,71 ModeThumb,72 FeatureDB,73 FeatureHWDivThumb,74 FeatureMClass]>;75 76def ARMv7em : Architecture<"armv7e-m", "ARMv7em", [HasV7Ops,77 FeatureThumb2,78 FeatureNoARM,79 ModeThumb,80 FeatureDB,81 FeatureHWDivThumb,82 FeatureMClass,83 FeatureDSP]>;84 85def ARMv8a : Architecture<"armv8-a", "ARMv8a", [HasV8Ops,86 FeatureAClass,87 FeatureDB,88 FeatureFPARMv8,89 FeatureNEON,90 FeatureDSP,91 FeatureTrustZone,92 FeatureMP,93 FeatureVirtualization,94 FeatureCrypto,95 FeatureCRC]>;96 97def ARMv81a : Architecture<"armv8.1-a", "ARMv81a", [HasV8_1aOps,98 FeatureAClass,99 FeatureDB,100 FeatureFPARMv8,101 FeatureNEON,102 FeatureDSP,103 FeatureTrustZone,104 FeatureMP,105 FeatureVirtualization,106 FeatureCrypto,107 FeatureCRC]>;108 109def ARMv82a : Architecture<"armv8.2-a", "ARMv82a", [HasV8_2aOps,110 FeatureAClass,111 FeatureDB,112 FeatureFPARMv8,113 FeatureNEON,114 FeatureDSP,115 FeatureTrustZone,116 FeatureMP,117 FeatureVirtualization,118 FeatureCrypto,119 FeatureCRC,120 FeatureRAS]>;121 122def ARMv83a : Architecture<"armv8.3-a", "ARMv83a", [HasV8_3aOps,123 FeatureAClass,124 FeatureDB,125 FeatureFPARMv8,126 FeatureNEON,127 FeatureDSP,128 FeatureTrustZone,129 FeatureMP,130 FeatureVirtualization,131 FeatureCrypto,132 FeatureCRC,133 FeatureRAS]>;134 135def ARMv84a : Architecture<"armv8.4-a", "ARMv84a", [HasV8_4aOps,136 FeatureAClass,137 FeatureDB,138 FeatureFPARMv8,139 FeatureNEON,140 FeatureDSP,141 FeatureTrustZone,142 FeatureMP,143 FeatureVirtualization,144 FeatureCrypto,145 FeatureCRC,146 FeatureRAS,147 FeatureDotProd]>;148 149def ARMv85a : Architecture<"armv8.5-a", "ARMv85a", [HasV8_5aOps,150 FeatureAClass,151 FeatureDB,152 FeatureFPARMv8,153 FeatureNEON,154 FeatureDSP,155 FeatureTrustZone,156 FeatureMP,157 FeatureVirtualization,158 FeatureCrypto,159 FeatureCRC,160 FeatureRAS,161 FeatureDotProd]>;162def ARMv86a : Architecture<"armv8.6-a", "ARMv86a", [HasV8_6aOps,163 FeatureAClass,164 FeatureDB,165 FeatureFPARMv8,166 FeatureNEON,167 FeatureDSP,168 FeatureTrustZone,169 FeatureMP,170 FeatureVirtualization,171 FeatureCrypto,172 FeatureCRC,173 FeatureRAS,174 FeatureDotProd]>;175def ARMv87a : Architecture<"armv8.7-a", "ARMv87a", [HasV8_7aOps,176 FeatureAClass,177 FeatureDB,178 FeatureFPARMv8,179 FeatureNEON,180 FeatureDSP,181 FeatureTrustZone,182 FeatureMP,183 FeatureVirtualization,184 FeatureCrypto,185 FeatureCRC,186 FeatureRAS,187 FeatureDotProd]>;188def ARMv88a : Architecture<"armv8.8-a", "ARMv88a", [HasV8_8aOps,189 FeatureAClass,190 FeatureDB,191 FeatureFPARMv8,192 FeatureNEON,193 FeatureDSP,194 FeatureTrustZone,195 FeatureMP,196 FeatureVirtualization,197 FeatureCrypto,198 FeatureCRC,199 FeatureRAS,200 FeatureDotProd]>;201def ARMv89a : Architecture<"armv8.9-a", "ARMv89a", [HasV8_9aOps,202 FeatureAClass,203 FeatureDB,204 FeatureFPARMv8,205 FeatureNEON,206 FeatureDSP,207 FeatureTrustZone,208 FeatureMP,209 FeatureVirtualization,210 FeatureCrypto,211 FeatureCRC,212 FeatureRAS,213 FeatureDotProd]>;214 215def ARMv9a : Architecture<"armv9-a", "ARMv9a", [HasV9_0aOps,216 FeatureAClass,217 FeatureDB,218 FeatureFPARMv8,219 FeatureNEON,220 FeatureDSP,221 FeatureTrustZone,222 FeatureMP,223 FeatureVirtualization,224 FeatureCRC,225 FeatureRAS,226 FeatureDotProd]>;227def ARMv91a : Architecture<"armv9.1-a", "ARMv91a", [HasV9_1aOps,228 FeatureAClass,229 FeatureDB,230 FeatureFPARMv8,231 FeatureNEON,232 FeatureDSP,233 FeatureTrustZone,234 FeatureMP,235 FeatureVirtualization,236 FeatureCRC,237 FeatureRAS,238 FeatureDotProd]>;239def ARMv92a : Architecture<"armv9.2-a", "ARMv92a", [HasV9_2aOps,240 FeatureAClass,241 FeatureDB,242 FeatureFPARMv8,243 FeatureNEON,244 FeatureDSP,245 FeatureTrustZone,246 FeatureMP,247 FeatureVirtualization,248 FeatureCRC,249 FeatureRAS,250 FeatureDotProd]>;251def ARMv93a : Architecture<"armv9.3-a", "ARMv93a", [HasV9_3aOps,252 FeatureAClass,253 FeatureDB,254 FeatureFPARMv8,255 FeatureNEON,256 FeatureDSP,257 FeatureTrustZone,258 FeatureMP,259 FeatureVirtualization,260 FeatureCrypto,261 FeatureCRC,262 FeatureRAS,263 FeatureDotProd]>;264def ARMv94a : Architecture<"armv9.4-a", "ARMv94a", [HasV9_4aOps,265 FeatureAClass,266 FeatureDB,267 FeatureFPARMv8,268 FeatureNEON,269 FeatureDSP,270 FeatureTrustZone,271 FeatureMP,272 FeatureVirtualization,273 FeatureCRC,274 FeatureRAS,275 FeatureDotProd]>;276def ARMv95a : Architecture<"armv9.5-a", "ARMv95a", [HasV9_5aOps,277 FeatureAClass,278 FeatureDB,279 FeatureFPARMv8,280 FeatureNEON,281 FeatureDSP,282 FeatureTrustZone,283 FeatureMP,284 FeatureVirtualization,285 FeatureCRC,286 FeatureRAS,287 FeatureDotProd]>;288def ARMv96a : Architecture<"armv9.6-a", "ARMv96a", [HasV9_6aOps,289 FeatureAClass,290 FeatureDB,291 FeatureFPARMv8,292 FeatureNEON,293 FeatureDSP,294 FeatureTrustZone,295 FeatureMP,296 FeatureVirtualization,297 FeatureCRC,298 FeatureRAS,299 FeatureDotProd]>;300def ARMv97a : Architecture<"armv9.7-a", "ARMv97a", [HasV9_7aOps,301 FeatureAClass,302 FeatureDB,303 FeatureFPARMv8,304 FeatureNEON,305 FeatureDSP,306 FeatureTrustZone,307 FeatureMP,308 FeatureVirtualization,309 FeatureCRC,310 FeatureRAS,311 FeatureDotProd]>;312def ARMv8r : Architecture<"armv8-r", "ARMv8r", [HasV8Ops,313 FeatureRClass,314 FeatureDB,315 FeatureDFB,316 FeatureDSP,317 FeatureCRC,318 FeatureMP,319 FeatureFPARMv8_D16_SP,320 FeatureVirtualization]>;321 322def ARMv8mBaseline : Architecture<"armv8-m.base", "ARMv8mBaseline",323 [HasV8MBaselineOps,324 FeatureNoARM,325 ModeThumb,326 FeatureDB,327 FeatureHWDivThumb,328 FeatureV7Clrex,329 Feature8MSecExt,330 FeatureAcquireRelease,331 FeatureMClass,332 FeatureStrictAlign]>;333 334def ARMv8mMainline : Architecture<"armv8-m.main", "ARMv8mMainline",335 [HasV8MMainlineOps,336 FeatureNoARM,337 ModeThumb,338 FeatureDB,339 FeatureHWDivThumb,340 Feature8MSecExt,341 FeatureAcquireRelease,342 FeatureMClass]>;343 344def ARMv81mMainline : Architecture<"armv8.1-m.main", "ARMv81mMainline",345 [HasV8_1MMainlineOps,346 FeatureNoARM,347 ModeThumb,348 FeatureDB,349 FeatureHWDivThumb,350 Feature8MSecExt,351 FeatureAcquireRelease,352 FeatureMClass,353 FeatureRAS,354 FeatureLOB]>;355 356// Aliases357def IWMMXT : Architecture<"iwmmxt", "ARMv5te", [ARMv5te]>;358def IWMMXT2 : Architecture<"iwmmxt2", "ARMv5te", [ARMv5te]>;359def XScale : Architecture<"xscale", "ARMv5te", [ARMv5te]>;360def ARMv6j : Architecture<"armv6j", "ARMv7a", [ARMv6]>;361def ARMv7k : Architecture<"armv7k", "ARMv7a", [ARMv7a]>;362def ARMv7s : Architecture<"armv7s", "ARMv7a", [ARMv7a]>;363