brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 9bf4034 Raw
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