brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.0 KiB · d6f3ef0 Raw
166 lines · plain
1//===----------------------------------------------------------------------===//2// Xtensa subtarget features.3//===----------------------------------------------------------------------===//4 5// Xtensa ISA extensions (Xtensa Options).6def FeatureDensity : SubtargetFeature<"density", "HasDensity", "true",7                                      "Enable Density instructions">;8def HasDensity : Predicate<"Subtarget->hasDensity()">,9                 AssemblerPredicate<(all_of FeatureDensity)>;10 11def FeatureSingleFloat : SubtargetFeature<"fp", "HasSingleFloat", "true",12                                          "Enable Xtensa Single FP instructions">;13def HasSingleFloat : Predicate<"Subtarget->hasSingleFloat()">,14                     AssemblerPredicate<(all_of FeatureSingleFloat)>;15 16def FeatureWindowed : SubtargetFeature<"windowed", "HasWindowed", "true",17                                       "Enable Xtensa Windowed Register option">;18def HasWindowed : Predicate<"Subtarget->hasWindowed()">,19                  AssemblerPredicate<(all_of FeatureWindowed)>;20 21def FeatureMAC16 : SubtargetFeature<"mac16", "HasMAC16", "true",22                                    "Enable Xtensa MAC16 instructions">;23def HasMAC16 : Predicate<"Subtarget->hasMAC16()">,24               AssemblerPredicate<(all_of FeatureMAC16)>;25 26def FeatureBoolean          : SubtargetFeature<"bool", "HasBoolean", "true",27                                               "Enable Xtensa Boolean extension">;28def HasBoolean              : Predicate<"Subtarget->hasBoolean()">,29                                         AssemblerPredicate<(all_of FeatureBoolean)>;30 31def FeatureLoop : SubtargetFeature<"loop", "HasLoop", "true",32                                   "Enable Xtensa Loop extension">;33def HasLoop : Predicate<"Subtarget->hasLoop()">,34              AssemblerPredicate<(all_of FeatureLoop)>;35 36def FeatureSEXT : SubtargetFeature<"sext", "HasSEXT", "true",37                                   "Enable Xtensa Sign Extend option">;38def HasSEXT : Predicate<"Subtarget->hasSEXT()">,39              AssemblerPredicate<(all_of FeatureSEXT)>;40 41def FeatureCLAMPS : SubtargetFeature<"clamps", "HasCLAMPS", "true",42                                     "Enable Xtensa CLAMPS option">;43def HasCLAMPS : Predicate<"Subtarget->hasCLAMPS()">,44                AssemblerPredicate<(all_of FeatureCLAMPS)>;45 46def FeatureNSA : SubtargetFeature<"nsa", "HasNSA", "true",47                                  "Enable Xtensa NSA option">;48def HasNSA : Predicate<"Subtarget->hasNSA()">,49             AssemblerPredicate<(all_of FeatureNSA)>;50 51def FeatureMINMAX : SubtargetFeature<"minmax", "HasMINMAX", "true",52                                     "Enable Xtensa MINMAX option">;53def HasMINMAX : Predicate<"Subtarget->hasMINMAX()">,54                AssemblerPredicate<(all_of FeatureMINMAX)>;55 56def FeatureMul16 : SubtargetFeature<"mul16", "HasMul16", "true",57                                    "Enable Xtensa Mul16 option">;58def HasMul16 : Predicate<"Subtarget->hasMul16()">,59               AssemblerPredicate<(all_of FeatureMul16)>;60 61def FeatureMul32 : SubtargetFeature<"mul32", "HasMul32", "true",62                                    "Enable Xtensa Mul32 option">;63def HasMul32 : Predicate<"Subtarget->hasMul32()">,64               AssemblerPredicate<(all_of FeatureMul32)>;65 66def FeatureMul32High : SubtargetFeature<"mul32high", "HasMul32High", "true",67                                        "Enable Xtensa Mul32High option">;68def HasMul32High : Predicate<"Subtarget->hasMul32High()">,69                   AssemblerPredicate<(all_of FeatureMul32High)>;70 71def FeatureDiv32 : SubtargetFeature<"div32", "HasDiv32", "true",72                                    "Enable Xtensa Div32 option">;73def HasDiv32 : Predicate<"Subtarget->hasDiv32()">,74               AssemblerPredicate<(all_of FeatureDiv32)>;75 76def FeatureS32C1I : SubtargetFeature<"s32c1i", "HasS32C1I", "true",77                                     "Enable Xtensa S32C1I option">;78def HasS32C1I : Predicate<"Subtarget->hasS32C1I()">,79                AssemblerPredicate<(all_of FeatureS32C1I)>;80 81// Assume that lock-free native-width atomics are available, even if the target82// and operating system combination would not usually provide them. The user83// is responsible for providing any necessary __sync implementations. Code84// built with this feature is not ABI-compatible with code built without this85// feature, if atomic variables are exposed across the ABI boundary.86def FeatureForcedAtomics    : SubtargetFeature<"forced-atomics", "HasForcedAtomics", "true",87                                               "Assume that lock-free native-width atomics are available">;88def HasForcedAtomics        : Predicate<"Subtarget->hasForcedAtomics()">,89                                         AssemblerPredicate<(all_of FeatureForcedAtomics)>;90def HasAtomicLdSt           : Predicate<"Subtarget->hasS32C1I() || Subtarget->hasForcedAtomics()">;91 92def FeatureRegionProtection : SubtargetFeature<"regprotect", "HasRegionProtection", "true",93                                               "Enable Xtensa Region Protection option">;94def HasRegionProtection : Predicate<"Subtarget->hasRegionProtection()">,95                          AssemblerPredicate<(all_of FeatureRegionProtection)>;96 97def FeatureRelocatableVector : SubtargetFeature<"rvector", "HasRelocatableVector", "true",98                                                "Enable Xtensa Relocatable Vector option">;99def HasRelocatableVector : Predicate<"Subtarget->hasRelocatableVector()">,100                           AssemblerPredicate<(all_of FeatureRelocatableVector)>;101 102def FeatureMiscSR : SubtargetFeature<"miscsr", "HasMiscSR", "true",103                                     "Enable Xtensa Miscellaneous SR option">;104def HasMiscSR : Predicate<"Subtarget->hasMiscSR()">,105                AssemblerPredicate<(all_of FeatureMiscSR)>;106 107def FeatureExtendedL32R : SubtargetFeature<"extendedl32r", "HasExtendedL32R", "true",108                                           "Enable Xtensa Extended L32R option">;109def HasExtendedL32R : Predicate<"Subtarget->hasExtendedL32R()">,110                      AssemblerPredicate<(all_of FeatureExtendedL32R)>;111 112def FeatureDataCache : SubtargetFeature<"dcache", "HasDataCache", "true",113                                        "Enable Xtensa Data Cache option">;114def HasDataCache : Predicate<"Subtarget->hasDataCache()">,115                   AssemblerPredicate<(all_of FeatureDataCache)>;116 117def FeatureTHREADPTR : SubtargetFeature<"threadptr", "HasTHREADPTR", "true",118                                        "Enable Xtensa THREADPTR option">;119def HasTHREADPTR : Predicate<"Subtarget->hasTHREADPTR()">,120                   AssemblerPredicate<(all_of FeatureTHREADPTR)>;121 122// Xtensa Interrupts Options.123def FeatureHighPriInterrupts : SubtargetFeature<"highpriinterrupts",124                                                "HasHighPriInterrupts", "true",125                                                "Enable Xtensa HighPriInterrupts option">;126def HasHighPriInterrupts : Predicate<"Subtarget->hasHighPriInterrupts()">,127                                      AssemblerPredicate<(all_of FeatureHighPriInterrupts)>;128 129foreach i = {3-7} in130    def FeatureHighPriInterruptsLevel#i : SubtargetFeature<"highpriinterrupts-level"#i,131         "HasHighPriInterruptsLevel"#i#"", "true", "Enable Xtensa HighPriInterrupts Level"#i, [FeatureHighPriInterrupts]>;132 133def FeatureInterrupt : SubtargetFeature<"interrupt", "HasInterrupt", "true",134                                        "Enable Xtensa Interrupt option">;135def HasInterrupt : Predicate<"Subtarget->hasInterrupt()">,136                              AssemblerPredicate<(all_of FeatureInterrupt)>;137 138def FeatureException : SubtargetFeature<"exception", "HasException", "true",139                                        "Enable Xtensa Exception option">;140def HasException : Predicate<"Subtarget->hasException()">,141                              AssemblerPredicate<(all_of FeatureException)>;142 143def FeatureDebug : SubtargetFeature<"debug", "HasDebug", "true",144                                    "Enable Xtensa Debug option">;145def HasDebug : Predicate<"Subtarget->hasDebug()">,146                          AssemblerPredicate<(all_of FeatureDebug)>;147 148foreach i = {1-3} in149    def FeatureTimers#i : SubtargetFeature<"timers"#i,150         "HasTimers"#i#"", "true", "Enable Xtensa Timers "#i>;151 152def FeaturePRID : SubtargetFeature<"prid", "HasPRID", "true",153                                   "Enable Xtensa Processor ID option">;154def HasPRID : Predicate<"Subtarget->hasPRID()">,155                         AssemblerPredicate<(all_of FeaturePRID)>;156 157def FeatureCoprocessor : SubtargetFeature<"coprocessor", "HasCoprocessor", "true",158                                          "Enable Xtensa Coprocessor option">;159def HasCoprocessor : Predicate<"Subtarget->hasCoprocessor()">,160                                AssemblerPredicate<(all_of FeatureCoprocessor)>;161 162def FeatureDFPAccel : SubtargetFeature<"dfpaccel", "HasDFPAccel", "true",163                                       "Enable Xtensa Double Precision FP acceleration">;164def HasDFPAccel : Predicate<"Subtarget->hasDFPAccel()">,165                  AssemblerPredicate<(all_of FeatureDFPAccel)>;166