diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/Basic/Targets/Hexagon.cpp')
-rw-r--r-- | contrib/llvm-project/clang/lib/Basic/Targets/Hexagon.cpp | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/Hexagon.cpp b/contrib/llvm-project/clang/lib/Basic/Targets/Hexagon.cpp index 9c37dee7e89a..ac747e371fb4 100644 --- a/contrib/llvm-project/clang/lib/Basic/Targets/Hexagon.cpp +++ b/contrib/llvm-project/clang/lib/Basic/Targets/Hexagon.cpp @@ -24,8 +24,6 @@ void HexagonTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__qdsp6__", "1"); Builder.defineMacro("__hexagon__", "1"); - Builder.defineMacro("__ELF__"); - // The macro __HVXDBL__ is deprecated. bool DefineHvxDbl = false; @@ -68,6 +66,18 @@ void HexagonTargetInfo::getTargetDefines(const LangOptions &Opts, } else if (CPU == "hexagonv68") { Builder.defineMacro("__HEXAGON_V68__"); Builder.defineMacro("__HEXAGON_ARCH__", "68"); + } else if (CPU == "hexagonv69") { + Builder.defineMacro("__HEXAGON_V69__"); + Builder.defineMacro("__HEXAGON_ARCH__", "69"); + } else if (CPU == "hexagonv71") { + Builder.defineMacro("__HEXAGON_V71__"); + Builder.defineMacro("__HEXAGON_ARCH__", "71"); + } else if (CPU == "hexagonv71t") { + Builder.defineMacro("__HEXAGON_V71T__"); + Builder.defineMacro("__HEXAGON_ARCH__", "71"); + } else if (CPU == "hexagonv73") { + Builder.defineMacro("__HEXAGON_V73__"); + Builder.defineMacro("__HEXAGON_ARCH__", "73"); } if (hasFeature("hvx-length64b")) { @@ -90,6 +100,11 @@ void HexagonTargetInfo::getTargetDefines(const LangOptions &Opts, std::string NumPhySlots = isTinyCore() ? "3" : "4"; Builder.defineMacro("__HEXAGON_PHYSICAL_SLOTS__", NumPhySlots); + + Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1"); + Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2"); + Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4"); + Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8"); } bool HexagonTargetInfo::initFeatureMap( @@ -128,6 +143,10 @@ bool HexagonTargetInfo::handleTargetFeatures(std::vector<std::string> &Features, else if (F == "+audio") HasAudio = true; } + if (CPU.compare("hexagonv68") >= 0) { + HasLegalHalfType = true; + HasFloat16 = true; + } return true; } @@ -166,7 +185,7 @@ const char *const HexagonTargetInfo::GCCRegNames[] = { }; ArrayRef<const char *> HexagonTargetInfo::getGCCRegNames() const { - return llvm::makeArrayRef(GCCRegNames); + return llvm::ArrayRef(GCCRegNames); } const TargetInfo::GCCRegAlias HexagonTargetInfo::GCCRegAliases[] = { @@ -176,16 +195,16 @@ const TargetInfo::GCCRegAlias HexagonTargetInfo::GCCRegAliases[] = { }; ArrayRef<TargetInfo::GCCRegAlias> HexagonTargetInfo::getGCCRegAliases() const { - return llvm::makeArrayRef(GCCRegAliases); + return llvm::ArrayRef(GCCRegAliases); } -const Builtin::Info HexagonTargetInfo::BuiltinInfo[] = { +static constexpr Builtin::Info BuiltinInfo[] = { #define BUILTIN(ID, TYPE, ATTRS) \ - {#ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, nullptr}, + {#ID, TYPE, ATTRS, nullptr, HeaderDesc::NO_HEADER, ALL_LANGUAGES}, #define LIBBUILTIN(ID, TYPE, ATTRS, HEADER) \ - {#ID, TYPE, ATTRS, HEADER, ALL_LANGUAGES, nullptr}, + {#ID, TYPE, ATTRS, nullptr, HEADER, ALL_LANGUAGES}, #define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) \ - {#ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, FEATURE}, + {#ID, TYPE, ATTRS, FEATURE, HeaderDesc::NO_HEADER, ALL_LANGUAGES}, #include "clang/Basic/BuiltinsHexagon.def" }; @@ -214,7 +233,9 @@ static constexpr CPUSuffix Suffixes[] = { {{"hexagonv60"}, {"60"}}, {{"hexagonv62"}, {"62"}}, {{"hexagonv65"}, {"65"}}, {{"hexagonv66"}, {"66"}}, {{"hexagonv67"}, {"67"}}, {{"hexagonv67t"}, {"67t"}}, - {{"hexagonv68"}, {"68"}}, + {{"hexagonv68"}, {"68"}}, {{"hexagonv69"}, {"69"}}, + {{"hexagonv71"}, {"71"}}, {{"hexagonv71t"}, {"71t"}}, + {{"hexagonv73"}, {"73"}}, }; const char *HexagonTargetInfo::getHexagonCPUSuffix(StringRef Name) { @@ -232,6 +253,6 @@ void HexagonTargetInfo::fillValidCPUList( } ArrayRef<Builtin::Info> HexagonTargetInfo::getTargetBuiltins() const { - return llvm::makeArrayRef(BuiltinInfo, clang::Hexagon::LastTSBuiltin - - Builtin::FirstTSBuiltin); + return llvm::ArrayRef(BuiltinInfo, clang::Hexagon::LastTSBuiltin - + Builtin::FirstTSBuiltin); } |