Architecture.h revision 360784
1//===- llvm/TextAPI/MachO/Architecture.h - Architecture ---------*- C++ -*-===// 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// Defines the architecture enum and helper methods. 10// 11//===----------------------------------------------------------------------===// 12 13#ifndef LLVM_TEXTAPI_MACHO_ARCHITECTURE_H 14#define LLVM_TEXTAPI_MACHO_ARCHITECTURE_H 15 16#include "llvm/ADT/StringRef.h" 17#include "llvm/ADT/Triple.h" 18#include "llvm/Support/raw_ostream.h" 19 20namespace llvm { 21namespace MachO { 22 23/// Defines the architecture slices that are supported by Text-based Stub files. 24enum Architecture : uint8_t { 25#define ARCHINFO(Arch, Type, SubType) AK_##Arch, 26#include "llvm/TextAPI/MachO/Architecture.def" 27#undef ARCHINFO 28 AK_unknown, // this has to go last. 29}; 30 31/// Convert a CPU Type and Subtype pair to an architecture slice. 32Architecture getArchitectureFromCpuType(uint32_t CPUType, uint32_t CPUSubType); 33 34/// Convert a name to an architecture slice. 35Architecture getArchitectureFromName(StringRef Name); 36 37/// Convert an architecture slice to a string. 38StringRef getArchitectureName(Architecture Arch); 39 40/// Convert an architecture slice to a CPU Type and Subtype pair. 41std::pair<uint32_t, uint32_t> getCPUTypeFromArchitecture(Architecture Arch); 42 43/// Convert a target to an architecture slice. 44Architecture mapToArchitecture(const llvm::Triple &Target); 45 46raw_ostream &operator<<(raw_ostream &OS, Architecture Arch); 47 48} // end namespace MachO. 49} // end namespace llvm. 50 51#endif // LLVM_TEXTAPI_MACHO_ARCHITECTURE_H 52