1 //===----------------------------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONDEPARCH_H 10 #define LLVM_LIB_TARGET_HEXAGON_HEXAGONDEPARCH_H 11 12 #include "llvm/ADT/StringSwitch.h" 13 #include <optional> 14 15 namespace llvm { 16 namespace Hexagon { 17 enum class ArchEnum { 18 NoArch, 19 Generic, 20 V5, 21 V55, 22 V60, 23 V62, 24 V65, 25 V66, 26 V67, 27 V68, 28 V69, 29 V71, 30 V73 31 }; 32 33 inline std::optional<Hexagon::ArchEnum> getCpu(StringRef CPU) { 34 return StringSwitch<std::optional<Hexagon::ArchEnum>>(CPU) 35 .Case("generic", Hexagon::ArchEnum::V5) 36 .Case("hexagonv5", Hexagon::ArchEnum::V5) 37 .Case("hexagonv55", Hexagon::ArchEnum::V55) 38 .Case("hexagonv60", Hexagon::ArchEnum::V60) 39 .Case("hexagonv62", Hexagon::ArchEnum::V62) 40 .Case("hexagonv65", Hexagon::ArchEnum::V65) 41 .Case("hexagonv66", Hexagon::ArchEnum::V66) 42 .Case("hexagonv67", Hexagon::ArchEnum::V67) 43 .Case("hexagonv67t", Hexagon::ArchEnum::V67) 44 .Case("hexagonv68", Hexagon::ArchEnum::V68) 45 .Case("hexagonv69", Hexagon::ArchEnum::V69) 46 .Case("hexagonv71", Hexagon::ArchEnum::V71) 47 .Case("hexagonv71t", Hexagon::ArchEnum::V71) 48 .Case("hexagonv73", Hexagon::ArchEnum::V73) 49 .Default(std::nullopt); 50 } 51 } // namespace Hexagon 52 } // namespace llvm 53 54 #endif // LLVM_LIB_TARGET_HEXAGON_HEXAGONDEPARCH_H 55