File indexing completed on 2026-05-10 08:44:20
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef LLVM_OBJECT_WINDOWSMACHINEFLAG_H
0014 #define LLVM_OBJECT_WINDOWSMACHINEFLAG_H
0015
0016 #include "llvm/BinaryFormat/COFF.h"
0017 #include "llvm/TargetParser/Triple.h"
0018
0019 namespace llvm {
0020
0021 class StringRef;
0022 namespace COFF {
0023 enum MachineTypes : unsigned;
0024 }
0025
0026
0027
0028 StringRef machineToStr(COFF::MachineTypes MT);
0029
0030
0031
0032 COFF::MachineTypes getMachineType(StringRef S);
0033
0034 template <typename T> Triple::ArchType getMachineArchType(T machine) {
0035 switch (machine) {
0036 case COFF::IMAGE_FILE_MACHINE_I386:
0037 return llvm::Triple::ArchType::x86;
0038 case COFF::IMAGE_FILE_MACHINE_AMD64:
0039 return llvm::Triple::ArchType::x86_64;
0040 case COFF::IMAGE_FILE_MACHINE_ARMNT:
0041 return llvm::Triple::ArchType::thumb;
0042 case COFF::IMAGE_FILE_MACHINE_ARM64:
0043 case COFF::IMAGE_FILE_MACHINE_ARM64EC:
0044 case COFF::IMAGE_FILE_MACHINE_ARM64X:
0045 return llvm::Triple::ArchType::aarch64;
0046 case COFF::IMAGE_FILE_MACHINE_R4000:
0047 return llvm::Triple::ArchType::mipsel;
0048 default:
0049 return llvm::Triple::ArchType::UnknownArch;
0050 }
0051 }
0052
0053 }
0054
0055 #endif