1use std::fmt;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
10pub enum Arch {
11 M32,
12 Sparc,
13 I386,
14 M68K,
15 M88K,
16 I860,
17 Mips,
18 S370,
19 MipsRs3Le,
20 PaRisc,
21 Vpp500,
22 Sparc32Plus,
23 I960,
24 Ppc,
25 Ppc64,
26 S390,
27 V800,
28 Fr20,
29 Rh32,
30 Rce,
31 Arm,
32 Alpha,
33 Sh,
34 SparcV9,
35 Tricore,
36 Arc,
37 H8300,
38 H8300H,
39 H8S,
40 H8500,
41 Ia64,
42 MipsX,
43 ColdFire,
44 M68Hc12,
45 Mma,
46 Pcp,
47 Ncpu,
48 Ndr1,
49 StarCore,
50 Me16,
51 St100,
52 TinyJ,
53 X86_64,
54 Pdsp,
55 Pdp10,
56 Pdp11,
57 Fx66,
58 St9Plus,
59 St7,
60 M68Hc16,
61 M68Hc11,
62 M68Hc08,
63 M68Hc05,
64 Svx,
65 St19,
66 Vax,
67 Cris,
68 Javelin,
69 FirePath,
70 Zsp,
71 Mmix,
72 Huany,
73 Prism,
74 Avr,
75 Fr30,
76 D10V,
77 D30V,
78 V850,
79 M32R,
80 Mn10300,
81 Mn10200,
82 PicoJava,
83 OpenRisc,
84 ArcA5,
85 Xtensa,
86 VideoCore,
87 TmmGpp,
88 Ns32K,
89 Tpc,
90 Snp1K,
91 St200,
92 Blackfin,
93 Unicore,
94 AlteraNios2,
95 TIC6000,
96 Hexagon,
97 NDS32,
98 AArch64,
99 TILEPro,
100 Microblaze,
101 TILEGx,
102 ARCv2,
103 RISCV,
104 BPF,
105 CSKY,
106 LoongArch,
107 FRV,
108}
109
110impl fmt::Display for Arch {
111 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
112 let desc = match self {
113 Self::M32 => "AT&T WE 32100",
114 Self::Sparc => "SPARC",
115 Self::I386 => "Intel 80386",
116 Self::M68K => "Motorola 68000",
117 Self::M88K => "Motorola 88000",
118 Self::I860 => "Intel 80860",
119 Self::Mips => "MIPS I Architecture",
120 Self::S370 => "IBM System/370 Processor",
121 Self::MipsRs3Le => "MIPS RS3000 Little-endian",
122 Self::PaRisc => "Hewlett-Packard PA-RISC",
123 Self::Vpp500 => "Fujitsu VPP500",
124 Self::Sparc32Plus => "Enhanced instruction set SPARC",
125 Self::I960 => "Intel 80960",
126 Self::Ppc => "PowerPC",
127 Self::Ppc64 => "64-bit PowerPC",
128 Self::S390 => "IBM System/390 Processor",
129 Self::V800 => "NEC V800",
130 Self::Fr20 => "Fujitsu FR20",
131 Self::Rh32 => "TRW RH-32",
132 Self::Rce => "Motorola RCE",
133 Self::Arm => "Advanced RISC Machines ARM",
134 Self::Alpha => "Digital Alpha",
135 Self::Sh => "Hitachi SH",
136 Self::SparcV9 => "SPARC Version 9",
137 Self::Tricore => "Siemens TriCore embedded processor",
138 Self::Arc => "Argonaut RISC Core, Argonaut Technologies Inc.",
139 Self::H8300 => "Hitachi H8/300",
140 Self::H8300H => "Hitachi H8/300H",
141 Self::H8S => "Hitachi H8S",
142 Self::H8500 => "Hitachi H8/500",
143 Self::Ia64 => "Intel IA-64 processor architecture",
144 Self::MipsX => "Stanford MIPS-X",
145 Self::ColdFire => "Motorola ColdFire",
146 Self::M68Hc12 => "Motorola M68HC12",
147 Self::Mma => "Fujitsu MMA Multimedia Accelerator",
148 Self::Pcp => "Siemens PCP",
149 Self::Ncpu => "Sony nCPU embedded RISC processor",
150 Self::Ndr1 => "Denso NDR1 microprocessor",
151 Self::StarCore => "Motorola Star*Core processor",
152 Self::Me16 => "Toyota ME16 processor",
153 Self::St100 => "STMicroelectronics ST100 processor",
154 Self::TinyJ => "Advanced Logic Corp. TinyJ embedded processor family",
155 Self::X86_64 => "AMD x86-64 architecture",
156 Self::Pdsp => "Sony DSP Processor",
157 Self::Pdp10 => "Digital Equipment Corp. PDP-10",
158 Self::Pdp11 => "Digital Equipment Corp. PDP-11",
159 Self::Fx66 => "Siemens FX66 microcontroller",
160 Self::St9Plus => "STMicroelectronics ST9+ 8/16 bit microcontroller",
161 Self::St7 => "STMicroelectronics ST7 8-bit microcontroller",
162 Self::M68Hc16 => "Motorola MC68HC16 Microcontroller",
163 Self::M68Hc11 => "Motorola MC68HC11 Microcontroller",
164 Self::M68Hc08 => "Motorola MC68HC08 Microcontroller",
165 Self::M68Hc05 => "Motorola MC68HC05 Microcontroller",
166 Self::Svx => "Silicon Graphics SVx",
167 Self::St19 => "STMicroelectronics ST19 8-bit microcontroller",
168 Self::Vax => "Digital VAX",
169 Self::Cris => "Axis Communications 32-bit embedded processor",
170 Self::Javelin => "Infineon Technologies 32-bit embedded processor",
171 Self::FirePath => "Element 14 64-bit DSP Processor",
172 Self::Zsp => "LSI Logic 16-bit DSP Processor",
173 Self::Mmix => "Donald Knuth's educational 64-bit processor",
174 Self::Huany => "Harvard University machine-independent object files",
175 Self::Prism => "SiTera Prism",
176 Self::Avr => "Atmel AVR 8-bit microcontroller",
177 Self::Fr30 => "Fujitsu FR30",
178 Self::D10V => "Mitsubishi D10V",
179 Self::D30V => "Mitsubishi D30V",
180 Self::V850 => "NEC v850",
181 Self::M32R => "Mitsubishi M32R",
182 Self::Mn10300 => "Matsushita MN10300",
183 Self::Mn10200 => "Matsushita MN10200",
184 Self::PicoJava => "picoJava",
185 Self::OpenRisc => "OpenRISC 32-bit embedded processor",
186 Self::ArcA5 => "ARC Cores Tangent-A5",
187 Self::Xtensa => "Tensilica Xtensa Architecture",
188 Self::VideoCore => "Alphamosaic VideoCore processor",
189 Self::TmmGpp => "Thompson Multimedia General Purpose Processor",
190 Self::Ns32K => "National Semiconductor 32000 series",
191 Self::Tpc => "Tenor Network TPC processor",
192 Self::Snp1K => "Trebia SNP 1000 processor",
193 Self::St200 => "STMicroelectronics ST200 microcontroller",
194 Self::Blackfin => "ADI Blackfin Processor",
195 Self::Unicore => "UniCore-32",
196 Self::AlteraNios2 => "Altera Nios II soft-core processor",
197 Self::TIC6000 => "TI C6X DSPs",
198 Self::Hexagon => "QUALCOMM Hexagon",
199 Self::NDS32 => "Andes Technology compact code size embedded RISC processor family",
200 Self::AArch64 => "ARM 64 bit",
201 Self::TILEPro => "Tilera TILEPro",
202 Self::Microblaze => "Xilinx MicroBlaze",
203 Self::TILEGx => "Tilera TILE-Gx",
204 Self::ARCv2 => "ARCv2 Cores",
205 Self::RISCV => "RISC-V",
206 Self::BPF => "Linux BPF - in-kernel virtual machine",
207 Self::CSKY => "C-SKY",
208 Self::LoongArch => "LoongArch",
209 Self::FRV => "Fujitsu FR-V",
210 };
211 f.write_str(desc)
212 }
213}