[clang] [llvm] [Hexagon] NFC: Reduce the amount of version-specific code (PR #145812)
Alexey Karyakin via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 27 10:33:42 PDT 2025
================
@@ -128,6 +128,59 @@ static cl::opt<bool> EnableHexagonCabac
static constexpr StringRef DefaultArch = "hexagonv68";
+static const FeatureBitset HexagonArchFeatures = {
+ llvm::Hexagon::ArchV5, llvm::Hexagon::ArchV55, llvm::Hexagon::ArchV60,
+ llvm::Hexagon::ArchV62, llvm::Hexagon::ArchV65, llvm::Hexagon::ArchV66,
+ llvm::Hexagon::ArchV67, llvm::Hexagon::ArchV68, llvm::Hexagon::ArchV69,
+ llvm::Hexagon::ArchV71, llvm::Hexagon::ArchV73, llvm::Hexagon::ArchV75,
+ llvm::Hexagon::ArchV79,
+};
+
+static const FeatureBitset HVXFeatures = {
+ llvm::Hexagon::ExtensionHVX,
+ llvm::Hexagon::ExtensionHVX64B,
+ llvm::Hexagon::ExtensionHVX128B,
+};
+
+static const FeatureBitset HVXVersionFeatures = {
+ llvm::Hexagon::ExtensionHVXV60, llvm::Hexagon::ExtensionHVXV62,
+ llvm::Hexagon::ExtensionHVXV65, llvm::Hexagon::ExtensionHVXV66,
+ llvm::Hexagon::ExtensionHVXV67, llvm::Hexagon::ExtensionHVXV68,
+ llvm::Hexagon::ExtensionHVXV69, llvm::Hexagon::ExtensionHVXV71,
+ llvm::Hexagon::ExtensionHVXV73, llvm::Hexagon::ExtensionHVXV75,
+ llvm::Hexagon::ExtensionHVXV79,
+
+};
+
+static const std::unordered_map<unsigned, unsigned> HexagonDefaultHVXVersion = {
+ {llvm::Hexagon::ArchV60, llvm::Hexagon::ExtensionHVXV60},
+ {llvm::Hexagon::ArchV62, llvm::Hexagon::ExtensionHVXV62},
+ {llvm::Hexagon::ArchV65, llvm::Hexagon::ExtensionHVXV65},
+ {llvm::Hexagon::ArchV66, llvm::Hexagon::ExtensionHVXV66},
+ {llvm::Hexagon::ArchV67, llvm::Hexagon::ExtensionHVXV67},
+ {llvm::Hexagon::ArchV68, llvm::Hexagon::ExtensionHVXV68},
+ {llvm::Hexagon::ArchV69, llvm::Hexagon::ExtensionHVXV69},
+ {llvm::Hexagon::ArchV71, llvm::Hexagon::ExtensionHVXV71},
+ {llvm::Hexagon::ArchV73, llvm::Hexagon::ExtensionHVXV73},
+ {llvm::Hexagon::ArchV75, llvm::Hexagon::ExtensionHVXV75},
+ {llvm::Hexagon::ArchV79, llvm::Hexagon::ExtensionHVXV79},
+
+};
+
+// An enum must be used as a command option type, therefore we need to convert
+// it. Note that no mapping exists for NoArch and Generic, the users must filter
+// these values.
+static const std::map<llvm::Hexagon::ArchEnum, unsigned>
----------------
quic-akaryaki wrote:
Absolutely.
https://github.com/llvm/llvm-project/pull/145812
More information about the llvm-commits
mailing list