Lines Matching full:mips
1 //===--- Mips.cpp - Tools Implementations -----------------------*- C++ -*-===//
9 #include "Mips.h"
24 void mips::getMipsCPUAndABI(const ArgList &Args, const llvm::Triple &Triple,
29 // MIPS32r6 is the default for mips(el)?-img-linux-gnu and MIPS64r6 is the
46 // MIPS2 is the default for mips(el)?-unknown-freebsd.
59 // Convert a GNU style Mips ABI name to the name
60 // accepted by LLVM Mips backend.
72 case llvm::Triple::mips:
126 std::string mips::getMipsABILibSuffix(const ArgList &Args,
129 tools::mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
137 StringRef mips::getGnuCompatibleMipsABIName(StringRef ABI) {
144 // Select the MIPS float ABI as determined by -msoft-float, -mhard-float,
146 mips::FloatABI mips::getMipsFloatABI(const Driver &D, const ArgList &Args,
148 mips::FloatABI ABI = mips::FloatABI::Invalid;
153 ABI = mips::FloatABI::Soft;
155 ABI = mips::FloatABI::Hard;
157 ABI = llvm::StringSwitch<mips::FloatABI>(A->getValue())
158 .Case("soft", mips::FloatABI::Soft)
159 .Case("hard", mips::FloatABI::Hard)
160 .Default(mips::FloatABI::Invalid);
161 if (ABI == mips::FloatABI::Invalid && !StringRef(A->getValue()).empty()) {
163 ABI = mips::FloatABI::Hard;
169 if (ABI == mips::FloatABI::Invalid) {
171 // For FreeBSD, assume "soft" on all flavors of MIPS.
172 ABI = mips::FloatABI::Soft;
175 // When we start to recognize specific target MIPS processors,
177 ABI = mips::FloatABI::Hard;
181 assert(ABI != mips::FloatABI::Invalid && "must select an ABI");
185 void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple,
193 // Historically, PIC code for MIPS was associated with -mabicalls, a.k.a
278 mips::FloatABI FloatABI = mips::getMipsFloatABI(D, Args, Triple);
279 if (FloatABI == mips::FloatABI::Soft) {
289 if (mips::getIEEE754Standard(CPUName) & mips::Std2008) {
297 if (mips::getIEEE754Standard(CPUName) & mips::Legacy)
311 if (mips::getIEEE754Standard(CPUName) & mips::Std2008) {
318 if (mips::getIEEE754Standard(CPUName) & mips::Legacy) {
366 } else if (mips::shouldUseFPXX(Args, Triple, CPUName, ABIName, FloatABI)) {
369 } else if (mips::isFP64ADefault(Triple, CPUName)) {
402 else if (mips::supportsIndirectJumpHazardBarrier(CPUName))
412 mips::IEEE754Standard mips::getIEEE754Standard(StringRef &CPU) {
436 bool mips::hasCompactBranches(StringRef &CPU) {
444 bool mips::hasMipsAbiArg(const ArgList &Args, const char *Value) {
449 bool mips::isUCLibc(const ArgList &Args) {
454 bool mips::isNaN2008(const Driver &D, const ArgList &Args,
468 bool mips::isFP64ADefault(const llvm::Triple &Triple, StringRef CPUName) {
478 bool mips::isFPXXDefault(const llvm::Triple &Triple, StringRef CPUName,
479 StringRef ABIName, mips::FloatABI FloatABI) {
485 if (FloatABI == mips::FloatABI::Soft)
495 bool mips::shouldUseFPXX(const ArgList &Args, const llvm::Triple &Triple,
497 mips::FloatABI FloatABI) {
516 bool mips::supportsIndirectJumpHazardBarrier(StringRef &CPU) {