Lines Matching full:hexagon
1 //===-- HexagonMCTargetDesc.cpp - Hexagon Target Descriptions -------------===//
9 // This file provides Hexagon specific target descriptions.
61 cl::desc("Disable looking for compound instructions for Hexagon"));
65 cl::desc("Disable looking for duplex instructions for Hexagon"));
68 cl::opt<bool> MV5("mv5", cl::Hidden, cl::desc("Build for Hexagon V5"),
70 cl::opt<bool> MV55("mv55", cl::Hidden, cl::desc("Build for Hexagon V55"),
72 cl::opt<bool> MV60("mv60", cl::Hidden, cl::desc("Build for Hexagon V60"),
74 cl::opt<bool> MV62("mv62", cl::Hidden, cl::desc("Build for Hexagon V62"),
76 cl::opt<bool> MV65("mv65", cl::Hidden, cl::desc("Build for Hexagon V65"),
78 cl::opt<bool> MV66("mv66", cl::Hidden, cl::desc("Build for Hexagon V66"),
80 cl::opt<bool> MV67("mv67", cl::Hidden, cl::desc("Build for Hexagon V67"),
82 cl::opt<bool> MV67T("mv67t", cl::Hidden, cl::desc("Build for Hexagon V67T"),
84 cl::opt<bool> MV68("mv68", cl::Hidden, cl::desc("Build for Hexagon V68"),
86 cl::opt<bool> MV69("mv69", cl::Hidden, cl::desc("Build for Hexagon V69"),
88 cl::opt<bool> MV71("mv71", cl::Hidden, cl::desc("Build for Hexagon V71"),
90 cl::opt<bool> MV71T("mv71t", cl::Hidden, cl::desc("Build for Hexagon V71T"),
92 cl::opt<bool> MV73("mv73", cl::Hidden, cl::desc("Build for Hexagon V73"),
96 cl::opt<Hexagon::ArchEnum> EnableHVX(
97 "mhvx", cl::desc("Enable Hexagon Vector eXtensions"),
98 cl::values(clEnumValN(Hexagon::ArchEnum::V60, "v60", "Build for HVX v60"),
99 clEnumValN(Hexagon::ArchEnum::V62, "v62", "Build for HVX v62"),
100 clEnumValN(Hexagon::ArchEnum::V65, "v65", "Build for HVX v65"),
101 clEnumValN(Hexagon::ArchEnum::V66, "v66", "Build for HVX v66"),
102 clEnumValN(Hexagon::ArchEnum::V67, "v67", "Build for HVX v67"),
103 clEnumValN(Hexagon::ArchEnum::V68, "v68", "Build for HVX v68"),
104 clEnumValN(Hexagon::ArchEnum::V69, "v69", "Build for HVX v69"),
105 clEnumValN(Hexagon::ArchEnum::V71, "v71", "Build for HVX v71"),
106 clEnumValN(Hexagon::ArchEnum::V73, "v73", "Build for HVX v73"),
108 clEnumValN(Hexagon::ArchEnum::Generic, "", "")),
110 cl::init(Hexagon::ArchEnum::NoArch), cl::ValueOptional);
114 cl::desc("Disable Hexagon Vector eXtensions"));
327 S.emitAttributesSection("hexagon", ".hexagon.attributes", in finishAttributeSection()
347 InitHexagonMCRegisterInfo(X, Hexagon::R31, /*DwarfFlavour=*/0, in createHexagonMCRegisterInfo()
348 /*EHFlavour=*/0, /*PC=*/Hexagon::PC); in createHexagonMCRegisterInfo()
359 nullptr, MRI.getDwarfRegNum(Hexagon::R30, true), 0); in createHexagonMCAsmInfo()
416 case Hexagon::ArchEnum::V5: in selectHexagonFS()
417 case Hexagon::ArchEnum::V55: in selectHexagonFS()
419 case Hexagon::ArchEnum::V60: in selectHexagonFS()
422 case Hexagon::ArchEnum::V62: in selectHexagonFS()
425 case Hexagon::ArchEnum::V65: in selectHexagonFS()
428 case Hexagon::ArchEnum::V66: in selectHexagonFS()
431 case Hexagon::ArchEnum::V67: in selectHexagonFS()
434 case Hexagon::ArchEnum::V68: in selectHexagonFS()
437 case Hexagon::ArchEnum::V69: in selectHexagonFS()
440 case Hexagon::ArchEnum::V71: in selectHexagonFS()
443 case Hexagon::ArchEnum::V73: in selectHexagonFS()
446 case Hexagon::ArchEnum::Generic:{ in selectHexagonFS()
461 case Hexagon::ArchEnum::NoArch: in selectHexagonFS()
475 return Hexagon::getCpu(CPU).has_value(); in isCPUValid()
501 using namespace Hexagon; in completeHVXFeatures()
590 if (checkFeature(X, Hexagon::ExtensionHVXV68) && in createHexagonMCSubtargetInfo()
593 X->setFeatureBits(Features.set(Hexagon::ExtensionHVXQFloat)); in createHexagonMCSubtargetInfo()
598 X->setFeatureBits(Features.reset(Hexagon::FeatureDuplex)); in createHexagonMCSubtargetInfo()
610 X->setFeatureBits(Features.set(Hexagon::ExtensionZReg)); in createHexagonMCSubtargetInfo()
630 for (auto Arch : {Hexagon::ExtensionHVXV73, Hexagon::ExtensionHVXV71, in getHVXVersion()
631 Hexagon::ExtensionHVXV69, Hexagon::ExtensionHVXV68, in getHVXVersion()
632 Hexagon::ExtensionHVXV67, Hexagon::ExtensionHVXV66, in getHVXVersion()
633 Hexagon::ExtensionHVXV65, Hexagon::ExtensionHVXV62, in getHVXVersion()
634 Hexagon::ExtensionHVXV60}) in getHVXVersion()
642 {Hexagon::ArchV73, Hexagon::ArchV71, Hexagon::ArchV69, Hexagon::ArchV68, in getArchVersion()
643 Hexagon::ArchV67, Hexagon::ArchV66, Hexagon::ArchV65, Hexagon::ArchV62, in getArchVersion()
644 Hexagon::ArchV60, Hexagon::ArchV55, Hexagon::ArchV5}) in getArchVersion()