diff options
Diffstat (limited to 'clang/lib/Basic/Targets/Mips.cpp')
| -rw-r--r-- | clang/lib/Basic/Targets/Mips.cpp | 16 | 
1 files changed, 13 insertions, 3 deletions
diff --git a/clang/lib/Basic/Targets/Mips.cpp b/clang/lib/Basic/Targets/Mips.cpp index 2cafbe87a996b..ead5e91f7c8f2 100644 --- a/clang/lib/Basic/Targets/Mips.cpp +++ b/clang/lib/Basic/Targets/Mips.cpp @@ -39,6 +39,7 @@ bool MipsTargetInfo::processorSupportsGPR64() const {        .Case("mips64r5", true)        .Case("mips64r6", true)        .Case("octeon", true) +      .Case("octeon+", true)        .Default(false);    return false;  } @@ -47,7 +48,7 @@ static constexpr llvm::StringLiteral ValidCPUNames[] = {      {"mips1"},  {"mips2"},    {"mips3"},    {"mips4"},    {"mips5"},      {"mips32"}, {"mips32r2"}, {"mips32r3"}, {"mips32r5"}, {"mips32r6"},      {"mips64"}, {"mips64r2"}, {"mips64r3"}, {"mips64r5"}, {"mips64r6"}, -    {"octeon"}, {"p5600"}}; +    {"octeon"}, {"octeon+"}, {"p5600"}};  bool MipsTargetInfo::isValidCPUName(StringRef Name) const {    return llvm::find(ValidCPUNames, Name) != std::end(ValidCPUNames); @@ -61,7 +62,7 @@ void MipsTargetInfo::fillValidCPUList(  unsigned MipsTargetInfo::getISARev() const {    return llvm::StringSwitch<unsigned>(getCPU())               .Cases("mips32", "mips64", 1) -             .Cases("mips32r2", "mips64r2", 2) +             .Cases("mips32r2", "mips64r2", "octeon", "octeon+", 2)               .Cases("mips32r3", "mips64r3", 3)               .Cases("mips32r5", "mips64r5", 5)               .Cases("mips32r6", "mips64r6", 6) @@ -187,7 +188,13 @@ void MipsTargetInfo::getTargetDefines(const LangOptions &Opts,    Builder.defineMacro("_MIPS_SZLONG", Twine(getLongWidth()));    Builder.defineMacro("_MIPS_ARCH", "\"" + CPU + "\""); -  Builder.defineMacro("_MIPS_ARCH_" + StringRef(CPU).upper()); +  if (CPU == "octeon+") +    Builder.defineMacro("_MIPS_ARCH_OCTEONP"); +  else +    Builder.defineMacro("_MIPS_ARCH_" + StringRef(CPU).upper()); + +  if (StringRef(CPU).startswith("octeon")) +    Builder.defineMacro("__OCTEON__");    // These shouldn't be defined for MIPS-I but there's no need to check    // for that since MIPS-I isn't supported. @@ -206,7 +213,10 @@ void MipsTargetInfo::getTargetDefines(const LangOptions &Opts,  bool MipsTargetInfo::hasFeature(StringRef Feature) const {    return llvm::StringSwitch<bool>(Feature)        .Case("mips", true) +      .Case("dsp", DspRev >= DSP1) +      .Case("dspr2", DspRev >= DSP2)        .Case("fp64", FPMode == FP64) +      .Case("msa", HasMSA)        .Default(false);  }  | 
