diff options
Diffstat (limited to 'clang/lib/Basic/Targets')
| -rw-r--r-- | clang/lib/Basic/Targets/AMDGPU.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Basic/Targets/PPC.h | 45 | ||||
| -rw-r--r-- | clang/lib/Basic/Targets/X86.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Basic/Targets/X86.h | 1 | 
4 files changed, 28 insertions, 30 deletions
| diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp index d4de704..d4d696b 100644 --- a/clang/lib/Basic/Targets/AMDGPU.cpp +++ b/clang/lib/Basic/Targets/AMDGPU.cpp @@ -356,12 +356,6 @@ void AMDGPUTargetInfo::getTargetDefines(const LangOptions &Opts,    if (hasFastFMA())      Builder.defineMacro("FP_FAST_FMA"); -  Builder.defineMacro("__AMDGCN_WAVEFRONT_SIZE__", Twine(WavefrontSize), -                      "compile-time-constant access to the wavefront size will " -                      "be removed in a future release"); -  Builder.defineMacro("__AMDGCN_WAVEFRONT_SIZE", Twine(WavefrontSize), -                      "compile-time-constant access to the wavefront size will " -                      "be removed in a future release");    Builder.defineMacro("__AMDGCN_CUMODE__", Twine(CUMode));  } diff --git a/clang/lib/Basic/Targets/PPC.h b/clang/lib/Basic/Targets/PPC.h index 846b240..d2eb9c5 100644 --- a/clang/lib/Basic/Targets/PPC.h +++ b/clang/lib/Basic/Targets/PPC.h @@ -445,27 +445,17 @@ public:      LongWidth = LongAlign = PointerWidth = PointerAlign = 64;      IntMaxType = SignedLong;      Int64Type = SignedLong; -    std::string DataLayout;      if (Triple.isOSAIX()) {        // TODO: Set appropriate ABI for AIX platform. -      DataLayout = "E-m:a-Fi64-i64:64-i128:128-n32:64";        LongDoubleWidth = 64;        LongDoubleAlign = DoubleAlign = 32;        LongDoubleFormat = &llvm::APFloat::IEEEdouble(); -    } else if ((Triple.getArch() == llvm::Triple::ppc64le)) { -      DataLayout = "e-m:e-Fn32-i64:64-i128:128-n32:64"; +    } else if ((Triple.getArch() == llvm::Triple::ppc64le) || +               Triple.isPPC64ELFv2ABI()) {        ABI = "elfv2";      } else { -      DataLayout = "E-m:e"; -      if (Triple.isPPC64ELFv2ABI()) { -        ABI = "elfv2"; -        DataLayout += "-Fn32"; -      } else { -        ABI = "elfv1"; -        DataLayout += "-Fi64"; -      } -      DataLayout += "-i64:64-i128:128-n32:64"; +      ABI = "elfv1";      }      if (Triple.isOSFreeBSD() || Triple.isOSOpenBSD() || Triple.isMusl()) { @@ -473,14 +463,12 @@ public:        LongDoubleFormat = &llvm::APFloat::IEEEdouble();      } -    if (Triple.isOSAIX() || Triple.isOSLinux()) -      DataLayout += "-S128-v256:256:256-v512:512:512"; -    resetDataLayout(DataLayout); -      // Newer PPC64 instruction sets support atomics up to 16 bytes.      MaxAtomicPromoteWidth = 128;      // Baseline PPC64 supports inlining atomics up to 8 bytes.      MaxAtomicInlineWidth = 64; + +    calculateDataLayout();    }    void setMaxAtomicWidth() override { @@ -495,10 +483,33 @@ public:      return TargetInfo::CharPtrBuiltinVaList;    } +  void calculateDataLayout() { +    std::string DataLayout; + +    if (getTriple().isOSAIX()) { +      DataLayout = "E-m:a-Fi64-i64:64-i128:128-n32:64"; +    } else if ((getTriple().getArch() == llvm::Triple::ppc64le)) { +      DataLayout = "e-m:e-Fn32-i64:64-i128:128-n32:64"; +    } else { +      DataLayout = "E-m:e"; +      if (ABI == "elfv2") { +        DataLayout += "-Fn32"; +      } else { +        DataLayout += "-Fi64"; +      } +      DataLayout += "-i64:64-i128:128-n32:64"; +    } + +    if (getTriple().isOSAIX() || getTriple().isOSLinux()) +      DataLayout += "-S128-v256:256:256-v512:512:512"; +    resetDataLayout(DataLayout); +  } +    // PPC64 Linux-specific ABI options.    bool setABI(const std::string &Name) override {      if (Name == "elfv1" || Name == "elfv2") {        ABI = Name; +      calculateDataLayout();        return true;      }      return false; diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp index e71f10c..7a90c89 100644 --- a/clang/lib/Basic/Targets/X86.cpp +++ b/clang/lib/Basic/Targets/X86.cpp @@ -396,8 +396,6 @@ bool X86TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,        HasAMXFP8 = true;      } else if (Feature == "+amx-movrs") {        HasAMXMOVRS = true; -    } else if (Feature == "+amx-transpose") { -      HasAMXTRANSPOSE = true;      } else if (Feature == "+amx-avx512") {        HasAMXAVX512 = true;      } else if (Feature == "+amx-tf32") { @@ -925,8 +923,6 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,      Builder.defineMacro("__AMX_FP8__");    if (HasAMXMOVRS)      Builder.defineMacro("__AMX_MOVRS__"); -  if (HasAMXTRANSPOSE) -    Builder.defineMacro("__AMX_TRANSPOSE__");    if (HasAMXAVX512)      Builder.defineMacro("__AMX_AVX512__");    if (HasAMXTF32) @@ -1068,7 +1064,6 @@ bool X86TargetInfo::isValidFeatureName(StringRef Name) const {        .Case("amx-movrs", true)        .Case("amx-tf32", true)        .Case("amx-tile", true) -      .Case("amx-transpose", true)        .Case("avx", true)        .Case("avx10.1", true)        .Case("avx10.2", true) @@ -1189,7 +1184,6 @@ bool X86TargetInfo::hasFeature(StringRef Feature) const {        .Case("amx-movrs", HasAMXMOVRS)        .Case("amx-tf32", HasAMXTF32)        .Case("amx-tile", HasAMXTILE) -      .Case("amx-transpose", HasAMXTRANSPOSE)        .Case("avx", SSELevel >= AVX)        .Case("avx10.1", HasAVX10_1)        .Case("avx10.2", HasAVX10_2) diff --git a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h index be3a473..e7da262 100644 --- a/clang/lib/Basic/Targets/X86.h +++ b/clang/lib/Basic/Targets/X86.h @@ -160,7 +160,6 @@ class LLVM_LIBRARY_VISIBILITY X86TargetInfo : public TargetInfo {    bool HasAMXCOMPLEX = false;    bool HasAMXFP8 = false;    bool HasAMXMOVRS = false; -  bool HasAMXTRANSPOSE = false;    bool HasAMXAVX512 = false;    bool HasAMXTF32 = false;    bool HasSERIALIZE = false; | 
