Lines Matching defs:Triple
24 int arm::getARMSubArchVersionNumber(const llvm::Triple &Triple) {
25 llvm::StringRef Arch = Triple.getArchName();
30 bool arm::isARMMProfile(const llvm::Triple &Triple) {
31 llvm::StringRef Arch = Triple.getArchName();
39 bool arm::isARMBigEndian(const llvm::Triple &Triple, const ArgList &Args) {
45 return Triple.getArch() == llvm::Triple::armeb ||
46 Triple.getArch() == llvm::Triple::thumbeb;
50 bool arm::isARMAProfile(const llvm::Triple &Triple) {
51 llvm::StringRef Arch = Triple.getArchName();
56 bool arm::isARMEABIBareMetal(const llvm::Triple &Triple) {
57 auto arch = Triple.getArch();
58 if (arch != llvm::Triple::arm && arch != llvm::Triple::thumb &&
59 arch != llvm::Triple::armeb && arch != llvm::Triple::thumbeb)
62 if (Triple.getVendor() != llvm::Triple::UnknownVendor)
65 if (Triple.getOS() != llvm::Triple::UnknownOS)
68 if (Triple.getEnvironment() != llvm::Triple::EABI &&
69 Triple.getEnvironment() != llvm::Triple::EABIHF)
149 const llvm::Triple &Triple,
153 std::string MArch = arm::getARMArch(ArchName, Triple);
167 const llvm::Triple &Triple,
171 std::string CPU = arm::getARMTargetCPU(CPUName, ArchName, Triple);
173 arm::getLLVMArchKindForARM(CPU, ArchName, Triple);
197 bool arm::useAAPCSForMachO(const llvm::Triple &T) {
200 return T.getEnvironment() == llvm::Triple::EABI ||
201 T.getEnvironment() == llvm::Triple::EABIHF ||
202 T.getOS() == llvm::Triple::UnknownOS || isARMMProfile(T);
208 bool arm::isHardTPSupported(const llvm::Triple &Triple) {
209 int Ver = getARMSubArchVersionNumber(Triple);
210 llvm::ARM::ArchKind AK = llvm::ARM::parseArch(Triple.getArchName());
211 return Triple.isARM() || AK == llvm::ARM::ArchKind::ARMV6T2 ||
217 const llvm::Triple &Triple, bool ForAS) {
230 !isHardTPSupported(Triple) && !ForAS) {
231 D.Diag(diag::err_target_unsupported_tp_hard) << Triple.getArchName();
246 types::ID InputType, llvm::Triple &Triple) {
253 std::string CPU = Triple.isOSBinFormatMachO()
254 ? tools::arm::getARMCPUForMArch(MArch, Triple).str()
255 : tools::arm::getARMTargetCPU(MCPU, MArch, Triple);
256 StringRef Suffix = tools::arm::getLLVMArchSuffixForARM(CPU, MArch, Triple);
258 bool IsBigEndian = Triple.getArch() == llvm::Triple::armeb ||
259 Triple.getArch() == llvm::Triple::thumbeb;
274 Triple.isOSBinFormatMachO()) ||
276 Triple.isOSWindows();
287 << tools::arm::getARMArch(MArch, Triple) << "ARM";
318 Suffix = tools::arm::getLLVMArchSuffixForARM(WaMCPU, WaMArch, Triple);
325 if (IsThumb || IsMProfile || Triple.isOSWindows()) {
331 Triple.setArchName(ArchName + Suffix.str());
335 llvm::Triple &Triple) {
336 if (Triple.isOSLiteOS()) {
337 Triple.setEnvironment(llvm::Triple::OpenHOS);
342 (arm::getARMFloatABI(D, Triple, Args) == arm::FloatABI::Hard);
344 switch (Triple.getEnvironment()) {
345 case llvm::Triple::GNUEABI:
346 case llvm::Triple::GNUEABIHF:
347 Triple.setEnvironment(isHardFloat ? llvm::Triple::GNUEABIHF
348 : llvm::Triple::GNUEABI);
350 case llvm::Triple::GNUEABIT64:
351 case llvm::Triple::GNUEABIHFT64:
352 Triple.setEnvironment(isHardFloat ? llvm::Triple::GNUEABIHFT64
353 : llvm::Triple::GNUEABIT64);
355 case llvm::Triple::EABI:
356 case llvm::Triple::EABIHF:
357 Triple.setEnvironment(isHardFloat ? llvm::Triple::EABIHF
358 : llvm::Triple::EABI);
360 case llvm::Triple::MuslEABI:
361 case llvm::Triple::MuslEABIHF:
362 Triple.setEnvironment(isHardFloat ? llvm::Triple::MuslEABIHF
363 : llvm::Triple::MuslEABI);
365 case llvm::Triple::OpenHOS:
368 arm::FloatABI DefaultABI = arm::getDefaultFloatABI(Triple);
376 << ABIArg->getAsString(Args) << Triple.getTriple();
387 arm::FloatABI arm::getDefaultFloatABI(const llvm::Triple &Triple) {
388 auto SubArch = getARMSubArchVersionNumber(Triple);
389 switch (Triple.getOS()) {
390 case llvm::Triple::Darwin:
391 case llvm::Triple::MacOSX:
392 case llvm::Triple::IOS:
393 case llvm::Triple::TvOS:
394 case llvm::Triple::DriverKit:
395 case llvm::Triple::XROS:
397 if (Triple.isWatchABI())
402 case llvm::Triple::WatchOS:
406 case llvm::Triple::Win32:
409 if (Triple.isOSBinFormatMachO() && !useAAPCSForMachO(Triple))
413 case llvm::Triple::NetBSD:
414 switch (Triple.getEnvironment()) {
415 case llvm::Triple::EABIHF:
416 case llvm::Triple::GNUEABIHF:
423 case llvm::Triple::FreeBSD:
424 switch (Triple.getEnvironment()) {
425 case llvm::Triple::GNUEABIHF:
433 case llvm::Triple::Haiku:
434 case llvm::Triple::OpenBSD:
438 if (Triple.isOHOSFamily())
440 switch (Triple.getEnvironment()) {
441 case llvm::Triple::GNUEABIHF:
442 case llvm::Triple::GNUEABIHFT64:
443 case llvm::Triple::MuslEABIHF:
444 case llvm::Triple::EABIHF:
446 case llvm::Triple::Android:
447 case llvm::Triple::GNUEABI:
448 case llvm::Triple::GNUEABIT64:
449 case llvm::Triple::MuslEABI:
450 case llvm::Triple::EABI:
462 arm::FloatABI arm::getARMFloatABI(const Driver &D, const llvm::Triple &Triple,
487 ABI = arm::getDefaultFloatABI(Triple);
491 if (Triple.isOSBinFormatMachO() &&
492 Triple.getSubArch() == llvm::Triple::ARMSubArch_v7em)
497 if (Triple.getOS() != llvm::Triple::UnknownOS ||
498 !Triple.isOSBinFormatMachO())
514 const llvm::Triple &Triple,
520 arm::FloatABI ABI = arm::getARMFloatABI(D, Triple, Args);
577 if (getReadTPMode(D, Args, Triple, ForAS) == ReadTPMode::TPIDRURW)
579 if (getReadTPMode(D, Args, Triple, ForAS) == ReadTPMode::TPIDRURO)
581 if (getReadTPMode(D, Args, Triple, ForAS) == ReadTPMode::TPIDRPRW)
609 ExtensionFeatures, Triple, ArchArgFPUKind);
615 Triple, ArchArgFPUKind);
633 Triple, CPUArgFPUKind);
649 } else if (Triple.isAndroid() && getARMSubArchVersionNumber(Triple) == 7) {
663 std::string CPU = arm::getARMTargetCPU(CPUName, ArchName, Triple);
667 arm::getLLVMArchKindForARM(CPU, ArchName, Triple);
671 if (Generic && (Triple.isOSWindows() || Triple.isOSDarwin()) &&
672 getARMSubArchVersionNumber(Triple) >= 7) {
700 if (Triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v8_4a) {
812 arm::getARMTargetCPU(CPUName, ArchName, Triple), ArchName, Triple);
878 } else if (KernelOrKext && (!Triple.isiOS() || Triple.isOSVersionLT(6)) &&
879 !Triple.isWatchOS() && !Triple.isXROS()) {
892 if (getARMSubArchVersionNumber(Triple) < 7 &&
893 llvm::ARM::parseArch(Triple.getArchName()) != llvm::ARM::ArchKind::ARMV6T2 &&
894 llvm::ARM::parseArch(Triple.getArchName()) != llvm::ARM::ArchKind::ARMV6M)
895 D.Diag(diag::err_target_unsupported_execute_only) << Triple.getArchName();
896 else if (llvm::ARM::parseArch(Triple.getArchName()) == llvm::ARM::ArchKind::ARMV6M) {
901 << A->getAsString(Args) << PIArg->getAsString(Args) << Triple.getArchName();
921 if (Triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v6m)
925 else if (Triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v8m_baseline)
942 int VersionNum = getARMSubArchVersionNumber(Triple);
943 if (Triple.isOSDarwin() || Triple.isOSNetBSD()) {
945 Triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v6m)
947 } else if (Triple.getVendor() == llvm::Triple::Apple &&
948 Triple.isOSBinFormatMachO()) {
952 Triple.getSubArch() ==
953 llvm::Triple::SubArchType::ARMSubArch_v6m ||
954 Triple.getSubArch() ==
955 llvm::Triple::SubArchType::ARMSubArch_v8m_baseline) {
1012 if (!(isARMAProfile(Triple) && getARMSubArchVersionNumber(Triple) >= 7))
1033 std::string arm::getARMArch(StringRef Arch, const llvm::Triple &Triple) {
1038 MArch = std::string(Triple.getArchName());
1046 StringRef Suffix = arm::getLLVMArchSuffixForARM(CPU, MArch, Triple);
1060 StringRef arm::getARMCPUForMArch(StringRef Arch, const llvm::Triple &Triple) {
1061 std::string MArch = getARMArch(Arch, Triple);
1069 return llvm::ARM::getARMCPUForArch(Triple, MArch);
1074 const llvm::Triple &Triple) {
1086 return std::string(getARMCPUForMArch(Arch, Triple));
1094 const llvm::Triple &Triple) {
1097 std::string ARMArch = tools::arm::getARMArch(Arch, Triple);
1101 // extract arch from default cpu of the Triple
1103 llvm::ARM::parseCPUArch(llvm::ARM::getARMCPUForArch(Triple, ARMArch));
1118 const llvm::Triple &Triple) {
1119 llvm::ARM::ArchKind ArchKind = getLLVMArchKindForARM(CPU, Arch, Triple);
1126 const llvm::Triple &Triple) {
1132 if (arm::getARMSubArchVersionNumber(Triple) >= 7 || arm::isARMMProfile(Triple))