diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2019-12-20 19:53:05 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2019-12-20 19:53:05 +0000 |
| commit | 0b57cec536236d46e3dba9bd041533462f33dbb7 (patch) | |
| tree | 56229dbdbbf76d18580f72f789003db17246c8d9 /contrib/llvm/lib/MC/SubtargetFeature.cpp | |
| parent | 718ef55ec7785aae63f98f8ca05dc07ed399c16d (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/lib/MC/SubtargetFeature.cpp')
| -rw-r--r-- | contrib/llvm/lib/MC/SubtargetFeature.cpp | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/contrib/llvm/lib/MC/SubtargetFeature.cpp b/contrib/llvm/lib/MC/SubtargetFeature.cpp deleted file mode 100644 index c4dd77359b24..000000000000 --- a/contrib/llvm/lib/MC/SubtargetFeature.cpp +++ /dev/null @@ -1,82 +0,0 @@ -//===- SubtargetFeature.cpp - CPU characteristics Implementation ----------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -/// \file Implements the SubtargetFeature interface. -// -//===----------------------------------------------------------------------===// - -#include "llvm/MC/SubtargetFeature.h" -#include "llvm/ADT/SmallVector.h" -#include "llvm/ADT/StringExtras.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/ADT/Triple.h" -#include "llvm/Config/llvm-config.h" -#include "llvm/Support/Compiler.h" -#include "llvm/Support/Debug.h" -#include "llvm/Support/raw_ostream.h" -#include <algorithm> -#include <cassert> -#include <cstddef> -#include <cstring> -#include <iterator> -#include <string> -#include <vector> - -using namespace llvm; - -/// Splits a string of comma separated items in to a vector of strings. -void SubtargetFeatures::Split(std::vector<std::string> &V, StringRef S) { - SmallVector<StringRef, 3> Tmp; - S.split(Tmp, ',', -1, false /* KeepEmpty */); - V.assign(Tmp.begin(), Tmp.end()); -} - -void SubtargetFeatures::AddFeature(StringRef String, bool Enable) { - // Don't add empty features. - if (!String.empty()) - // Convert to lowercase, prepend flag if we don't already have a flag. - Features.push_back(hasFlag(String) ? String.lower() - : (Enable ? "+" : "-") + String.lower()); -} - -SubtargetFeatures::SubtargetFeatures(StringRef Initial) { - // Break up string into separate features - Split(Features, Initial); -} - -std::string SubtargetFeatures::getString() const { - return join(Features.begin(), Features.end(), ","); -} - -void SubtargetFeatures::print(raw_ostream &OS) const { - for (auto &F : Features) - OS << F << " "; - OS << "\n"; -} - -#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) -LLVM_DUMP_METHOD void SubtargetFeatures::dump() const { - print(dbgs()); -} -#endif - -void SubtargetFeatures::getDefaultSubtargetFeatures(const Triple& Triple) { - // FIXME: This is an inelegant way of specifying the features of a - // subtarget. It would be better if we could encode this information - // into the IR. See <rdar://5972456>. - if (Triple.getVendor() == Triple::Apple) { - if (Triple.getArch() == Triple::ppc) { - // powerpc-apple-* - AddFeature("altivec"); - } else if (Triple.getArch() == Triple::ppc64) { - // powerpc64-apple-* - AddFeature("64bit"); - AddFeature("altivec"); - } - } -} |
