61 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONDEPARCH_H10#define LLVM_LIB_TARGET_HEXAGON_HEXAGONDEPARCH_H11 12#include "llvm/ADT/StringSwitch.h"13#include <optional>14 15namespace llvm {16namespace Hexagon {17enum 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 V75,32 V79,33 V8134};35 36inline std::optional<Hexagon::ArchEnum> getCpu(StringRef CPU) {37 return StringSwitch<std::optional<Hexagon::ArchEnum>>(CPU)38 .Case("generic", Hexagon::ArchEnum::V5)39 .Case("hexagonv5", Hexagon::ArchEnum::V5)40 .Case("hexagonv55", Hexagon::ArchEnum::V55)41 .Case("hexagonv60", Hexagon::ArchEnum::V60)42 .Case("hexagonv62", Hexagon::ArchEnum::V62)43 .Case("hexagonv65", Hexagon::ArchEnum::V65)44 .Case("hexagonv66", Hexagon::ArchEnum::V66)45 .Case("hexagonv67", Hexagon::ArchEnum::V67)46 .Case("hexagonv67t", Hexagon::ArchEnum::V67)47 .Case("hexagonv68", Hexagon::ArchEnum::V68)48 .Case("hexagonv69", Hexagon::ArchEnum::V69)49 .Case("hexagonv71", Hexagon::ArchEnum::V71)50 .Case("hexagonv71t", Hexagon::ArchEnum::V71)51 .Case("hexagonv73", Hexagon::ArchEnum::V73)52 .Case("hexagonv75", Hexagon::ArchEnum::V75)53 .Case("hexagonv79", Hexagon::ArchEnum::V79)54 .Case("hexagonv81", Hexagon::ArchEnum::V81)55 .Default(std::nullopt);56}57} // namespace Hexagon58} // namespace llvm59 60#endif // LLVM_LIB_TARGET_HEXAGON_HEXAGONDEPARCH_H61