//===----------------------------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONDEPARCH_H #define LLVM_LIB_TARGET_HEXAGON_HEXAGONDEPARCH_H #include "llvm/ADT/StringSwitch.h" #include namespace llvm { namespace Hexagon { enum class ArchEnum { NoArch, Generic, V5, V55, V60, V62, V65, V66, V67, V68, V69, V71, V73 }; inline std::optional getCpu(StringRef CPU) { return StringSwitch>(CPU) .Case("generic", Hexagon::ArchEnum::V5) .Case("hexagonv5", Hexagon::ArchEnum::V5) .Case("hexagonv55", Hexagon::ArchEnum::V55) .Case("hexagonv60", Hexagon::ArchEnum::V60) .Case("hexagonv62", Hexagon::ArchEnum::V62) .Case("hexagonv65", Hexagon::ArchEnum::V65) .Case("hexagonv66", Hexagon::ArchEnum::V66) .Case("hexagonv67", Hexagon::ArchEnum::V67) .Case("hexagonv67t", Hexagon::ArchEnum::V67) .Case("hexagonv68", Hexagon::ArchEnum::V68) .Case("hexagonv69", Hexagon::ArchEnum::V69) .Case("hexagonv71", Hexagon::ArchEnum::V71) .Case("hexagonv71t", Hexagon::ArchEnum::V71) .Case("hexagonv73", Hexagon::ArchEnum::V73) .Default(std::nullopt); } } // namespace Hexagon } // namespace llvm #endif // LLVM_LIB_TARGET_HEXAGON_HEXAGONDEPARCH_H