diff options
| author | Layne Gustafson <lgustaf1@binghamton.edu> | 2020-01-08 20:27:05 -0500 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-01-19 20:53:19 -0500 |
| commit | 79a2747de490ca2bb1603fd1ce55637fb5278671 (patch) | |
| tree | d8b642345aeebec49fd08ceee5ada1bb1730e477 /lib | |
| parent | e4ecdefa9a668d34c830816eea242b110c30c475 (diff) | |
| download | zig-79a2747de490ca2bb1603fd1ce55637fb5278671.tar.gz zig-79a2747de490ca2bb1603fd1ce55637fb5278671.zip | |
Add llvm_name to feature defs
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/std/target/aarch64.zig | 537 | ||||
| -rw-r--r-- | lib/std/target/amdgpu.zig | 1037 | ||||
| -rw-r--r-- | lib/std/target/arm.zig | 687 | ||||
| -rw-r--r-- | lib/std/target/avr.zig | 2806 | ||||
| -rw-r--r-- | lib/std/target/bpf.zig | 3 | ||||
| -rw-r--r-- | lib/std/target/hexagon.zig | 10 | ||||
| -rw-r--r-- | lib/std/target/mips.zig | 242 | ||||
| -rw-r--r-- | lib/std/target/msp430.zig | 4 | ||||
| -rw-r--r-- | lib/std/target/nvptx.zig | 25 | ||||
| -rw-r--r-- | lib/std/target/powerpc.zig | 55 | ||||
| -rw-r--r-- | lib/std/target/riscv.zig | 9 | ||||
| -rw-r--r-- | lib/std/target/sparc.zig | 12 | ||||
| -rw-r--r-- | lib/std/target/systemz.zig | 35 | ||||
| -rw-r--r-- | lib/std/target/wasm.zig | 10 | ||||
| -rw-r--r-- | lib/std/target/x86.zig | 126 |
15 files changed, 3135 insertions, 2463 deletions
diff --git a/lib/std/target/aarch64.zig b/lib/std/target/aarch64.zig index 85ef813dea..404a55e7a5 100644 --- a/lib/std/target/aarch64.zig +++ b/lib/std/target/aarch64.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_aes = Feature{ .name = "aes", + .llvm_name = "aes", .description = "Enable AES support", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -11,6 +12,7 @@ pub const feature_aes = Feature{ pub const feature_am = Feature{ .name = "am", + .llvm_name = "am", .description = "Enable v8.4-A Activity Monitors extension", .dependencies = &[_]*const Feature { }, @@ -18,6 +20,7 @@ pub const feature_am = Feature{ pub const feature_aggressiveFma = Feature{ .name = "aggressive-fma", + .llvm_name = "aggressive-fma", .description = "Enable Aggressive FMA for floating-point.", .dependencies = &[_]*const Feature { }, @@ -25,6 +28,7 @@ pub const feature_aggressiveFma = Feature{ pub const feature_altnzcv = Feature{ .name = "altnzcv", + .llvm_name = "altnzcv", .description = "Enable alternative NZCV format for floating point comparisons", .dependencies = &[_]*const Feature { }, @@ -32,6 +36,7 @@ pub const feature_altnzcv = Feature{ pub const feature_alternateSextloadCvtF32Pattern = Feature{ .name = "alternate-sextload-cvt-f32-pattern", + .llvm_name = "alternate-sextload-cvt-f32-pattern", .description = "Use alternative pattern for sextload convert to f32", .dependencies = &[_]*const Feature { }, @@ -39,6 +44,7 @@ pub const feature_alternateSextloadCvtF32Pattern = Feature{ pub const feature_arithBccFusion = Feature{ .name = "arith-bcc-fusion", + .llvm_name = "arith-bcc-fusion", .description = "CPU fuses arithmetic+bcc operations", .dependencies = &[_]*const Feature { }, @@ -46,6 +52,7 @@ pub const feature_arithBccFusion = Feature{ pub const feature_arithCbzFusion = Feature{ .name = "arith-cbz-fusion", + .llvm_name = "arith-cbz-fusion", .description = "CPU fuses arithmetic + cbz/cbnz operations", .dependencies = &[_]*const Feature { }, @@ -53,6 +60,7 @@ pub const feature_arithCbzFusion = Feature{ pub const feature_balanceFpOps = Feature{ .name = "balance-fp-ops", + .llvm_name = "balance-fp-ops", .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops", .dependencies = &[_]*const Feature { }, @@ -60,6 +68,7 @@ pub const feature_balanceFpOps = Feature{ pub const feature_bti = Feature{ .name = "bti", + .llvm_name = "bti", .description = "Enable Branch Target Identification", .dependencies = &[_]*const Feature { }, @@ -67,6 +76,7 @@ pub const feature_bti = Feature{ pub const feature_ccidx = Feature{ .name = "ccidx", + .llvm_name = "ccidx", .description = "Enable v8.3-A Extend of the CCSIDR number of sets", .dependencies = &[_]*const Feature { }, @@ -74,6 +84,7 @@ pub const feature_ccidx = Feature{ pub const feature_ccpp = Feature{ .name = "ccpp", + .llvm_name = "ccpp", .description = "Enable v8.2 data Cache Clean to Point of Persistence", .dependencies = &[_]*const Feature { }, @@ -81,6 +92,7 @@ pub const feature_ccpp = Feature{ pub const feature_crc = Feature{ .name = "crc", + .llvm_name = "crc", .description = "Enable ARMv8 CRC-32 checksum instructions", .dependencies = &[_]*const Feature { }, @@ -88,6 +100,7 @@ pub const feature_crc = Feature{ pub const feature_ccdp = Feature{ .name = "ccdp", + .llvm_name = "ccdp", .description = "Enable v8.5 Cache Clean to Point of Deep Persistence", .dependencies = &[_]*const Feature { }, @@ -95,6 +108,7 @@ pub const feature_ccdp = Feature{ pub const feature_callSavedX8 = Feature{ .name = "call-saved-x8", + .llvm_name = "call-saved-x8", .description = "Make X8 callee saved.", .dependencies = &[_]*const Feature { }, @@ -102,6 +116,7 @@ pub const feature_callSavedX8 = Feature{ pub const feature_callSavedX9 = Feature{ .name = "call-saved-x9", + .llvm_name = "call-saved-x9", .description = "Make X9 callee saved.", .dependencies = &[_]*const Feature { }, @@ -109,6 +124,7 @@ pub const feature_callSavedX9 = Feature{ pub const feature_callSavedX10 = Feature{ .name = "call-saved-x10", + .llvm_name = "call-saved-x10", .description = "Make X10 callee saved.", .dependencies = &[_]*const Feature { }, @@ -116,6 +132,7 @@ pub const feature_callSavedX10 = Feature{ pub const feature_callSavedX11 = Feature{ .name = "call-saved-x11", + .llvm_name = "call-saved-x11", .description = "Make X11 callee saved.", .dependencies = &[_]*const Feature { }, @@ -123,6 +140,7 @@ pub const feature_callSavedX11 = Feature{ pub const feature_callSavedX12 = Feature{ .name = "call-saved-x12", + .llvm_name = "call-saved-x12", .description = "Make X12 callee saved.", .dependencies = &[_]*const Feature { }, @@ -130,6 +148,7 @@ pub const feature_callSavedX12 = Feature{ pub const feature_callSavedX13 = Feature{ .name = "call-saved-x13", + .llvm_name = "call-saved-x13", .description = "Make X13 callee saved.", .dependencies = &[_]*const Feature { }, @@ -137,6 +156,7 @@ pub const feature_callSavedX13 = Feature{ pub const feature_callSavedX14 = Feature{ .name = "call-saved-x14", + .llvm_name = "call-saved-x14", .description = "Make X14 callee saved.", .dependencies = &[_]*const Feature { }, @@ -144,6 +164,7 @@ pub const feature_callSavedX14 = Feature{ pub const feature_callSavedX15 = Feature{ .name = "call-saved-x15", + .llvm_name = "call-saved-x15", .description = "Make X15 callee saved.", .dependencies = &[_]*const Feature { }, @@ -151,6 +172,7 @@ pub const feature_callSavedX15 = Feature{ pub const feature_callSavedX18 = Feature{ .name = "call-saved-x18", + .llvm_name = "call-saved-x18", .description = "Make X18 callee saved.", .dependencies = &[_]*const Feature { }, @@ -158,6 +180,7 @@ pub const feature_callSavedX18 = Feature{ pub const feature_complxnum = Feature{ .name = "complxnum", + .llvm_name = "complxnum", .description = "Enable v8.3-A Floating-point complex number support", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -166,6 +189,7 @@ pub const feature_complxnum = Feature{ pub const feature_crypto = Feature{ .name = "crypto", + .llvm_name = "crypto", .description = "Enable cryptographic instructions", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -174,6 +198,7 @@ pub const feature_crypto = Feature{ pub const feature_customCheapAsMove = Feature{ .name = "custom-cheap-as-move", + .llvm_name = "custom-cheap-as-move", .description = "Use custom handling of cheap instructions", .dependencies = &[_]*const Feature { }, @@ -181,6 +206,7 @@ pub const feature_customCheapAsMove = Feature{ pub const feature_dit = Feature{ .name = "dit", + .llvm_name = "dit", .description = "Enable v8.4-A Data Independent Timing instructions", .dependencies = &[_]*const Feature { }, @@ -188,6 +214,7 @@ pub const feature_dit = Feature{ pub const feature_disableLatencySchedHeuristic = Feature{ .name = "disable-latency-sched-heuristic", + .llvm_name = "disable-latency-sched-heuristic", .description = "Disable latency scheduling heuristic", .dependencies = &[_]*const Feature { }, @@ -195,6 +222,7 @@ pub const feature_disableLatencySchedHeuristic = Feature{ pub const feature_dotprod = Feature{ .name = "dotprod", + .llvm_name = "dotprod", .description = "Enable dot product support", .dependencies = &[_]*const Feature { }, @@ -202,6 +230,7 @@ pub const feature_dotprod = Feature{ pub const feature_ete = Feature{ .name = "ete", + .llvm_name = "ete", .description = "Enable Embedded Trace Extension", .dependencies = &[_]*const Feature { &feature_trbe, @@ -210,6 +239,7 @@ pub const feature_ete = Feature{ pub const feature_exynosCheapAsMove = Feature{ .name = "exynos-cheap-as-move", + .llvm_name = "exynos-cheap-as-move", .description = "Use Exynos specific handling of cheap instructions", .dependencies = &[_]*const Feature { &feature_customCheapAsMove, @@ -218,6 +248,7 @@ pub const feature_exynosCheapAsMove = Feature{ pub const feature_fmi = Feature{ .name = "fmi", + .llvm_name = "fmi", .description = "Enable v8.4-A Flag Manipulation Instructions", .dependencies = &[_]*const Feature { }, @@ -225,6 +256,7 @@ pub const feature_fmi = Feature{ pub const feature_fp16fml = Feature{ .name = "fp16fml", + .llvm_name = "fp16fml", .description = "Enable FP16 FML instructions", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -233,6 +265,7 @@ pub const feature_fp16fml = Feature{ pub const feature_fpArmv8 = Feature{ .name = "fp-armv8", + .llvm_name = "fp-armv8", .description = "Enable ARMv8 FP", .dependencies = &[_]*const Feature { }, @@ -240,6 +273,7 @@ pub const feature_fpArmv8 = Feature{ pub const feature_fptoint = Feature{ .name = "fptoint", + .llvm_name = "fptoint", .description = "Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int", .dependencies = &[_]*const Feature { }, @@ -247,6 +281,7 @@ pub const feature_fptoint = Feature{ pub const feature_force32bitJumpTables = Feature{ .name = "force-32bit-jump-tables", + .llvm_name = "force-32bit-jump-tables", .description = "Force jump table entries to be 32-bits wide except at MinSize", .dependencies = &[_]*const Feature { }, @@ -254,6 +289,7 @@ pub const feature_force32bitJumpTables = Feature{ pub const feature_fullfp16 = Feature{ .name = "fullfp16", + .llvm_name = "fullfp16", .description = "Full FP16", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -262,6 +298,7 @@ pub const feature_fullfp16 = Feature{ pub const feature_fuseAes = Feature{ .name = "fuse-aes", + .llvm_name = "fuse-aes", .description = "CPU fuses AES crypto operations", .dependencies = &[_]*const Feature { }, @@ -269,6 +306,7 @@ pub const feature_fuseAes = Feature{ pub const feature_fuseAddress = Feature{ .name = "fuse-address", + .llvm_name = "fuse-address", .description = "CPU fuses address generation and memory operations", .dependencies = &[_]*const Feature { }, @@ -276,6 +314,7 @@ pub const feature_fuseAddress = Feature{ pub const feature_fuseArithLogic = Feature{ .name = "fuse-arith-logic", + .llvm_name = "fuse-arith-logic", .description = "CPU fuses arithmetic and logic operations", .dependencies = &[_]*const Feature { }, @@ -283,6 +322,7 @@ pub const feature_fuseArithLogic = Feature{ pub const feature_fuseCsel = Feature{ .name = "fuse-csel", + .llvm_name = "fuse-csel", .description = "CPU fuses conditional select operations", .dependencies = &[_]*const Feature { }, @@ -290,6 +330,7 @@ pub const feature_fuseCsel = Feature{ pub const feature_fuseCryptoEor = Feature{ .name = "fuse-crypto-eor", + .llvm_name = "fuse-crypto-eor", .description = "CPU fuses AES/PMULL and EOR operations", .dependencies = &[_]*const Feature { }, @@ -297,6 +338,7 @@ pub const feature_fuseCryptoEor = Feature{ pub const feature_fuseLiterals = Feature{ .name = "fuse-literals", + .llvm_name = "fuse-literals", .description = "CPU fuses literal generation operations", .dependencies = &[_]*const Feature { }, @@ -304,6 +346,7 @@ pub const feature_fuseLiterals = Feature{ pub const feature_jsconv = Feature{ .name = "jsconv", + .llvm_name = "jsconv", .description = "Enable v8.3-A JavaScript FP conversion enchancement", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -312,6 +355,7 @@ pub const feature_jsconv = Feature{ pub const feature_lor = Feature{ .name = "lor", + .llvm_name = "lor", .description = "Enables ARM v8.1 Limited Ordering Regions extension", .dependencies = &[_]*const Feature { }, @@ -319,6 +363,7 @@ pub const feature_lor = Feature{ pub const feature_lse = Feature{ .name = "lse", + .llvm_name = "lse", .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions", .dependencies = &[_]*const Feature { }, @@ -326,6 +371,7 @@ pub const feature_lse = Feature{ pub const feature_lslFast = Feature{ .name = "lsl-fast", + .llvm_name = "lsl-fast", .description = "CPU has a fastpath logical shift of up to 3 places", .dependencies = &[_]*const Feature { }, @@ -333,6 +379,7 @@ pub const feature_lslFast = Feature{ pub const feature_mpam = Feature{ .name = "mpam", + .llvm_name = "mpam", .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension", .dependencies = &[_]*const Feature { }, @@ -340,6 +387,7 @@ pub const feature_mpam = Feature{ pub const feature_mte = Feature{ .name = "mte", + .llvm_name = "mte", .description = "Enable Memory Tagging Extension", .dependencies = &[_]*const Feature { }, @@ -347,6 +395,7 @@ pub const feature_mte = Feature{ pub const feature_neon = Feature{ .name = "neon", + .llvm_name = "neon", .description = "Enable Advanced SIMD instructions", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -355,6 +404,7 @@ pub const feature_neon = Feature{ pub const feature_nv = Feature{ .name = "nv", + .llvm_name = "nv", .description = "Enable v8.4-A Nested Virtualization Enchancement", .dependencies = &[_]*const Feature { }, @@ -362,6 +412,7 @@ pub const feature_nv = Feature{ pub const feature_noNegImmediates = Feature{ .name = "no-neg-immediates", + .llvm_name = "no-neg-immediates", .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.", .dependencies = &[_]*const Feature { }, @@ -369,6 +420,7 @@ pub const feature_noNegImmediates = Feature{ pub const feature_pa = Feature{ .name = "pa", + .llvm_name = "pa", .description = "Enable v8.3-A Pointer Authentication enchancement", .dependencies = &[_]*const Feature { }, @@ -376,6 +428,7 @@ pub const feature_pa = Feature{ pub const feature_pan = Feature{ .name = "pan", + .llvm_name = "pan", .description = "Enables ARM v8.1 Privileged Access-Never extension", .dependencies = &[_]*const Feature { }, @@ -383,6 +436,7 @@ pub const feature_pan = Feature{ pub const feature_panRwv = Feature{ .name = "pan-rwv", + .llvm_name = "pan-rwv", .description = "Enable v8.2 PAN s1e1R and s1e1W Variants", .dependencies = &[_]*const Feature { &feature_pan, @@ -391,6 +445,7 @@ pub const feature_panRwv = Feature{ pub const feature_perfmon = Feature{ .name = "perfmon", + .llvm_name = "perfmon", .description = "Enable ARMv8 PMUv3 Performance Monitors extension", .dependencies = &[_]*const Feature { }, @@ -398,6 +453,7 @@ pub const feature_perfmon = Feature{ pub const feature_usePostraScheduler = Feature{ .name = "use-postra-scheduler", + .llvm_name = "use-postra-scheduler", .description = "Schedule again after register allocation", .dependencies = &[_]*const Feature { }, @@ -405,6 +461,7 @@ pub const feature_usePostraScheduler = Feature{ pub const feature_predres = Feature{ .name = "predres", + .llvm_name = "predres", .description = "Enable v8.5a execution and data prediction invalidation instructions", .dependencies = &[_]*const Feature { }, @@ -412,6 +469,7 @@ pub const feature_predres = Feature{ pub const feature_predictableSelectExpensive = Feature{ .name = "predictable-select-expensive", + .llvm_name = "predictable-select-expensive", .description = "Prefer likely predicted branches over selects", .dependencies = &[_]*const Feature { }, @@ -419,6 +477,7 @@ pub const feature_predictableSelectExpensive = Feature{ pub const feature_uaops = Feature{ .name = "uaops", + .llvm_name = "uaops", .description = "Enable v8.2 UAO PState", .dependencies = &[_]*const Feature { }, @@ -426,6 +485,7 @@ pub const feature_uaops = Feature{ pub const feature_ras = Feature{ .name = "ras", + .llvm_name = "ras", .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions", .dependencies = &[_]*const Feature { }, @@ -433,6 +493,7 @@ pub const feature_ras = Feature{ pub const feature_rasv8_4 = Feature{ .name = "rasv8_4", + .llvm_name = "rasv8_4", .description = "Enable v8.4-A Reliability, Availability and Serviceability extension", .dependencies = &[_]*const Feature { &feature_ras, @@ -441,6 +502,7 @@ pub const feature_rasv8_4 = Feature{ pub const feature_rcpc = Feature{ .name = "rcpc", + .llvm_name = "rcpc", .description = "Enable support for RCPC extension", .dependencies = &[_]*const Feature { }, @@ -448,6 +510,7 @@ pub const feature_rcpc = Feature{ pub const feature_rcpcImmo = Feature{ .name = "rcpc-immo", + .llvm_name = "rcpc-immo", .description = "Enable v8.4-A RCPC instructions with Immediate Offsets", .dependencies = &[_]*const Feature { &feature_rcpc, @@ -456,6 +519,7 @@ pub const feature_rcpcImmo = Feature{ pub const feature_rdm = Feature{ .name = "rdm", + .llvm_name = "rdm", .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions", .dependencies = &[_]*const Feature { }, @@ -463,6 +527,7 @@ pub const feature_rdm = Feature{ pub const feature_rand = Feature{ .name = "rand", + .llvm_name = "rand", .description = "Enable Random Number generation instructions", .dependencies = &[_]*const Feature { }, @@ -470,6 +535,7 @@ pub const feature_rand = Feature{ pub const feature_reserveX1 = Feature{ .name = "reserve-x1", + .llvm_name = "reserve-x1", .description = "Reserve X1, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -477,6 +543,7 @@ pub const feature_reserveX1 = Feature{ pub const feature_reserveX2 = Feature{ .name = "reserve-x2", + .llvm_name = "reserve-x2", .description = "Reserve X2, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -484,6 +551,7 @@ pub const feature_reserveX2 = Feature{ pub const feature_reserveX3 = Feature{ .name = "reserve-x3", + .llvm_name = "reserve-x3", .description = "Reserve X3, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -491,6 +559,7 @@ pub const feature_reserveX3 = Feature{ pub const feature_reserveX4 = Feature{ .name = "reserve-x4", + .llvm_name = "reserve-x4", .description = "Reserve X4, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -498,6 +567,7 @@ pub const feature_reserveX4 = Feature{ pub const feature_reserveX5 = Feature{ .name = "reserve-x5", + .llvm_name = "reserve-x5", .description = "Reserve X5, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -505,6 +575,7 @@ pub const feature_reserveX5 = Feature{ pub const feature_reserveX6 = Feature{ .name = "reserve-x6", + .llvm_name = "reserve-x6", .description = "Reserve X6, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -512,6 +583,7 @@ pub const feature_reserveX6 = Feature{ pub const feature_reserveX7 = Feature{ .name = "reserve-x7", + .llvm_name = "reserve-x7", .description = "Reserve X7, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -519,6 +591,7 @@ pub const feature_reserveX7 = Feature{ pub const feature_reserveX9 = Feature{ .name = "reserve-x9", + .llvm_name = "reserve-x9", .description = "Reserve X9, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -526,6 +599,7 @@ pub const feature_reserveX9 = Feature{ pub const feature_reserveX10 = Feature{ .name = "reserve-x10", + .llvm_name = "reserve-x10", .description = "Reserve X10, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -533,6 +607,7 @@ pub const feature_reserveX10 = Feature{ pub const feature_reserveX11 = Feature{ .name = "reserve-x11", + .llvm_name = "reserve-x11", .description = "Reserve X11, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -540,6 +615,7 @@ pub const feature_reserveX11 = Feature{ pub const feature_reserveX12 = Feature{ .name = "reserve-x12", + .llvm_name = "reserve-x12", .description = "Reserve X12, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -547,6 +623,7 @@ pub const feature_reserveX12 = Feature{ pub const feature_reserveX13 = Feature{ .name = "reserve-x13", + .llvm_name = "reserve-x13", .description = "Reserve X13, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -554,6 +631,7 @@ pub const feature_reserveX13 = Feature{ pub const feature_reserveX14 = Feature{ .name = "reserve-x14", + .llvm_name = "reserve-x14", .description = "Reserve X14, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -561,6 +639,7 @@ pub const feature_reserveX14 = Feature{ pub const feature_reserveX15 = Feature{ .name = "reserve-x15", + .llvm_name = "reserve-x15", .description = "Reserve X15, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -568,6 +647,7 @@ pub const feature_reserveX15 = Feature{ pub const feature_reserveX18 = Feature{ .name = "reserve-x18", + .llvm_name = "reserve-x18", .description = "Reserve X18, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -575,6 +655,7 @@ pub const feature_reserveX18 = Feature{ pub const feature_reserveX20 = Feature{ .name = "reserve-x20", + .llvm_name = "reserve-x20", .description = "Reserve X20, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -582,6 +663,7 @@ pub const feature_reserveX20 = Feature{ pub const feature_reserveX21 = Feature{ .name = "reserve-x21", + .llvm_name = "reserve-x21", .description = "Reserve X21, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -589,6 +671,7 @@ pub const feature_reserveX21 = Feature{ pub const feature_reserveX22 = Feature{ .name = "reserve-x22", + .llvm_name = "reserve-x22", .description = "Reserve X22, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -596,6 +679,7 @@ pub const feature_reserveX22 = Feature{ pub const feature_reserveX23 = Feature{ .name = "reserve-x23", + .llvm_name = "reserve-x23", .description = "Reserve X23, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -603,6 +687,7 @@ pub const feature_reserveX23 = Feature{ pub const feature_reserveX24 = Feature{ .name = "reserve-x24", + .llvm_name = "reserve-x24", .description = "Reserve X24, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -610,6 +695,7 @@ pub const feature_reserveX24 = Feature{ pub const feature_reserveX25 = Feature{ .name = "reserve-x25", + .llvm_name = "reserve-x25", .description = "Reserve X25, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -617,6 +703,7 @@ pub const feature_reserveX25 = Feature{ pub const feature_reserveX26 = Feature{ .name = "reserve-x26", + .llvm_name = "reserve-x26", .description = "Reserve X26, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -624,6 +711,7 @@ pub const feature_reserveX26 = Feature{ pub const feature_reserveX27 = Feature{ .name = "reserve-x27", + .llvm_name = "reserve-x27", .description = "Reserve X27, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -631,6 +719,7 @@ pub const feature_reserveX27 = Feature{ pub const feature_reserveX28 = Feature{ .name = "reserve-x28", + .llvm_name = "reserve-x28", .description = "Reserve X28, making it unavailable as a GPR", .dependencies = &[_]*const Feature { }, @@ -638,6 +727,7 @@ pub const feature_reserveX28 = Feature{ pub const feature_sb = Feature{ .name = "sb", + .llvm_name = "sb", .description = "Enable v8.5 Speculation Barrier", .dependencies = &[_]*const Feature { }, @@ -645,6 +735,7 @@ pub const feature_sb = Feature{ pub const feature_sel2 = Feature{ .name = "sel2", + .llvm_name = "sel2", .description = "Enable v8.4-A Secure Exception Level 2 extension", .dependencies = &[_]*const Feature { }, @@ -652,6 +743,7 @@ pub const feature_sel2 = Feature{ pub const feature_sha2 = Feature{ .name = "sha2", + .llvm_name = "sha2", .description = "Enable SHA1 and SHA256 support", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -660,6 +752,7 @@ pub const feature_sha2 = Feature{ pub const feature_sha3 = Feature{ .name = "sha3", + .llvm_name = "sha3", .description = "Enable SHA512 and SHA3 support", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -668,6 +761,7 @@ pub const feature_sha3 = Feature{ pub const feature_sm4 = Feature{ .name = "sm4", + .llvm_name = "sm4", .description = "Enable SM3 and SM4 support", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -676,6 +770,7 @@ pub const feature_sm4 = Feature{ pub const feature_spe = Feature{ .name = "spe", + .llvm_name = "spe", .description = "Enable Statistical Profiling extension", .dependencies = &[_]*const Feature { }, @@ -683,6 +778,7 @@ pub const feature_spe = Feature{ pub const feature_ssbs = Feature{ .name = "ssbs", + .llvm_name = "ssbs", .description = "Enable Speculative Store Bypass Safe bit", .dependencies = &[_]*const Feature { }, @@ -690,6 +786,7 @@ pub const feature_ssbs = Feature{ pub const feature_sve = Feature{ .name = "sve", + .llvm_name = "sve", .description = "Enable Scalable Vector Extension (SVE) instructions", .dependencies = &[_]*const Feature { }, @@ -697,6 +794,7 @@ pub const feature_sve = Feature{ pub const feature_sve2 = Feature{ .name = "sve2", + .llvm_name = "sve2", .description = "Enable Scalable Vector Extension 2 (SVE2) instructions", .dependencies = &[_]*const Feature { &feature_sve, @@ -705,6 +803,7 @@ pub const feature_sve2 = Feature{ pub const feature_sve2Aes = Feature{ .name = "sve2-aes", + .llvm_name = "sve2-aes", .description = "Enable AES SVE2 instructions", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -714,6 +813,7 @@ pub const feature_sve2Aes = Feature{ pub const feature_sve2Bitperm = Feature{ .name = "sve2-bitperm", + .llvm_name = "sve2-bitperm", .description = "Enable bit permutation SVE2 instructions", .dependencies = &[_]*const Feature { &feature_sve, @@ -722,6 +822,7 @@ pub const feature_sve2Bitperm = Feature{ pub const feature_sve2Sha3 = Feature{ .name = "sve2-sha3", + .llvm_name = "sve2-sha3", .description = "Enable SHA3 SVE2 instructions", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -731,6 +832,7 @@ pub const feature_sve2Sha3 = Feature{ pub const feature_sve2Sm4 = Feature{ .name = "sve2-sm4", + .llvm_name = "sve2-sm4", .description = "Enable SM4 SVE2 instructions", .dependencies = &[_]*const Feature { &feature_fpArmv8, @@ -740,6 +842,7 @@ pub const feature_sve2Sm4 = Feature{ pub const feature_slowMisaligned128store = Feature{ .name = "slow-misaligned-128store", + .llvm_name = "slow-misaligned-128store", .description = "Misaligned 128 bit stores are slow", .dependencies = &[_]*const Feature { }, @@ -747,6 +850,7 @@ pub const feature_slowMisaligned128store = Feature{ pub const feature_slowPaired128 = Feature{ .name = "slow-paired-128", + .llvm_name = "slow-paired-128", .description = "Paired 128 bit loads and stores are slow", .dependencies = &[_]*const Feature { }, @@ -754,6 +858,7 @@ pub const feature_slowPaired128 = Feature{ pub const feature_slowStrqroStore = Feature{ .name = "slow-strqro-store", + .llvm_name = "slow-strqro-store", .description = "STR of Q register with register offset is slow", .dependencies = &[_]*const Feature { }, @@ -761,6 +866,7 @@ pub const feature_slowStrqroStore = Feature{ pub const feature_specrestrict = Feature{ .name = "specrestrict", + .llvm_name = "specrestrict", .description = "Enable architectural speculation restriction", .dependencies = &[_]*const Feature { }, @@ -768,6 +874,7 @@ pub const feature_specrestrict = Feature{ pub const feature_strictAlign = Feature{ .name = "strict-align", + .llvm_name = "strict-align", .description = "Disallow all unaligned memory access", .dependencies = &[_]*const Feature { }, @@ -775,6 +882,7 @@ pub const feature_strictAlign = Feature{ pub const feature_tlbRmi = Feature{ .name = "tlb-rmi", + .llvm_name = "tlb-rmi", .description = "Enable v8.4-A TLB Range and Maintenance Instructions", .dependencies = &[_]*const Feature { }, @@ -782,6 +890,7 @@ pub const feature_tlbRmi = Feature{ pub const feature_tme = Feature{ .name = "tme", + .llvm_name = "tme", .description = "Enable Transactional Memory Extension", .dependencies = &[_]*const Feature { }, @@ -789,6 +898,7 @@ pub const feature_tme = Feature{ pub const feature_tracev84 = Feature{ .name = "tracev8.4", + .llvm_name = "tracev8.4", .description = "Enable v8.4-A Trace extension", .dependencies = &[_]*const Feature { }, @@ -796,6 +906,7 @@ pub const feature_tracev84 = Feature{ pub const feature_trbe = Feature{ .name = "trbe", + .llvm_name = "trbe", .description = "Enable Trace Buffer Extension", .dependencies = &[_]*const Feature { }, @@ -803,6 +914,7 @@ pub const feature_trbe = Feature{ pub const feature_taggedGlobals = Feature{ .name = "tagged-globals", + .llvm_name = "tagged-globals", .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits", .dependencies = &[_]*const Feature { }, @@ -810,6 +922,7 @@ pub const feature_taggedGlobals = Feature{ pub const feature_useAa = Feature{ .name = "use-aa", + .llvm_name = "use-aa", .description = "Use alias analysis during codegen", .dependencies = &[_]*const Feature { }, @@ -817,6 +930,7 @@ pub const feature_useAa = Feature{ pub const feature_tpidrEl1 = Feature{ .name = "tpidr-el1", + .llvm_name = "tpidr-el1", .description = "Permit use of TPIDR_EL1 for the TLS base", .dependencies = &[_]*const Feature { }, @@ -824,6 +938,7 @@ pub const feature_tpidrEl1 = Feature{ pub const feature_tpidrEl2 = Feature{ .name = "tpidr-el2", + .llvm_name = "tpidr-el2", .description = "Permit use of TPIDR_EL2 for the TLS base", .dependencies = &[_]*const Feature { }, @@ -831,6 +946,7 @@ pub const feature_tpidrEl2 = Feature{ pub const feature_tpidrEl3 = Feature{ .name = "tpidr-el3", + .llvm_name = "tpidr-el3", .description = "Permit use of TPIDR_EL3 for the TLS base", .dependencies = &[_]*const Feature { }, @@ -838,6 +954,7 @@ pub const feature_tpidrEl3 = Feature{ pub const feature_useReciprocalSquareRoot = Feature{ .name = "use-reciprocal-square-root", + .llvm_name = "use-reciprocal-square-root", .description = "Use the reciprocal square root approximation", .dependencies = &[_]*const Feature { }, @@ -845,6 +962,7 @@ pub const feature_useReciprocalSquareRoot = Feature{ pub const feature_vh = Feature{ .name = "vh", + .llvm_name = "vh", .description = "Enables ARM v8.1 Virtual Host extension", .dependencies = &[_]*const Feature { }, @@ -852,6 +970,7 @@ pub const feature_vh = Feature{ pub const feature_zcm = Feature{ .name = "zcm", + .llvm_name = "zcm", .description = "Has zero-cycle register moves", .dependencies = &[_]*const Feature { }, @@ -859,6 +978,7 @@ pub const feature_zcm = Feature{ pub const feature_zcz = Feature{ .name = "zcz", + .llvm_name = "zcz", .description = "Has zero-cycle zeroing instructions", .dependencies = &[_]*const Feature { &feature_zczGp, @@ -868,6 +988,7 @@ pub const feature_zcz = Feature{ pub const feature_zczFp = Feature{ .name = "zcz-fp", + .llvm_name = "zcz-fp", .description = "Has zero-cycle zeroing instructions for FP registers", .dependencies = &[_]*const Feature { }, @@ -875,6 +996,7 @@ pub const feature_zczFp = Feature{ pub const feature_zczFpWorkaround = Feature{ .name = "zcz-fp-workaround", + .llvm_name = "zcz-fp-workaround", .description = "The zero-cycle floating-point zeroing instruction has a bug", .dependencies = &[_]*const Feature { }, @@ -882,6 +1004,7 @@ pub const feature_zczFpWorkaround = Feature{ pub const feature_zczGp = Feature{ .name = "zcz-gp", + .llvm_name = "zcz-gp", .description = "Has zero-cycle zeroing instructions for generic registers", .dependencies = &[_]*const Feature { }, @@ -1017,18 +1140,18 @@ pub const cpu_appleLatest = Cpu{ .name = "apple-latest", .llvm_name = "apple-latest", .dependencies = &[_]*const Feature { - &feature_alternateSextloadCvtF32Pattern, - &feature_fuseCryptoEor, &feature_fuseAes, - &feature_zczGp, &feature_zczFpWorkaround, - &feature_disableLatencySchedHeuristic, &feature_perfmon, - &feature_fpArmv8, - &feature_arithBccFusion, &feature_arithCbzFusion, - &feature_zczFp, + &feature_alternateSextloadCvtF32Pattern, + &feature_fuseCryptoEor, + &feature_disableLatencySchedHeuristic, &feature_zcm, + &feature_zczFp, + &feature_zczGp, + &feature_fpArmv8, + &feature_arithBccFusion, }, }; @@ -1036,9 +1159,9 @@ pub const cpu_cortexA35 = Cpu{ .name = "cortex-a35", .llvm_name = "cortex-a35", .dependencies = &[_]*const Feature { - &feature_crc, &feature_fpArmv8, &feature_perfmon, + &feature_crc, }, }; @@ -1046,13 +1169,13 @@ pub const cpu_cortexA53 = Cpu{ .name = "cortex-a53", .llvm_name = "cortex-a53", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, &feature_fuseAes, - &feature_usePostraScheduler, + &feature_balanceFpOps, &feature_perfmon, - &feature_fpArmv8, &feature_crc, - &feature_balanceFpOps, + &feature_customCheapAsMove, + &feature_fpArmv8, + &feature_usePostraScheduler, &feature_useAa, }, }; @@ -1061,20 +1184,20 @@ pub const cpu_cortexA55 = Cpu{ .name = "cortex-a55", .llvm_name = "cortex-a55", .dependencies = &[_]*const Feature { - &feature_rdm, - &feature_ccpp, &feature_fuseAes, - &feature_lse, - &feature_perfmon, &feature_fpArmv8, - &feature_lor, &feature_ras, - &feature_vh, - &feature_rcpc, &feature_dotprod, - &feature_uaops, + &feature_vh, &feature_crc, &feature_pan, + &feature_ccpp, + &feature_rdm, + &feature_rcpc, + &feature_uaops, + &feature_perfmon, + &feature_lse, + &feature_lor, }, }; @@ -1082,15 +1205,15 @@ pub const cpu_cortexA57 = Cpu{ .name = "cortex-a57", .llvm_name = "cortex-a57", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, &feature_fuseAes, - &feature_usePostraScheduler, + &feature_balanceFpOps, &feature_perfmon, - &feature_fpArmv8, &feature_crc, - &feature_balanceFpOps, &feature_fuseLiterals, &feature_predictableSelectExpensive, + &feature_customCheapAsMove, + &feature_fpArmv8, + &feature_usePostraScheduler, }, }; @@ -1098,19 +1221,19 @@ pub const cpu_cortexA65 = Cpu{ .name = "cortex-a65", .llvm_name = "cortex-a65", .dependencies = &[_]*const Feature { - &feature_rdm, - &feature_ccpp, - &feature_lse, - &feature_fpArmv8, &feature_ras, - &feature_lor, - &feature_vh, - &feature_rcpc, &feature_dotprod, - &feature_ssbs, - &feature_uaops, + &feature_vh, &feature_crc, &feature_pan, + &feature_ccpp, + &feature_rdm, + &feature_rcpc, + &feature_uaops, + &feature_ssbs, + &feature_fpArmv8, + &feature_lse, + &feature_lor, }, }; @@ -1118,19 +1241,19 @@ pub const cpu_cortexA65ae = Cpu{ .name = "cortex-a65ae", .llvm_name = "cortex-a65ae", .dependencies = &[_]*const Feature { - &feature_rdm, - &feature_ccpp, - &feature_lse, - &feature_fpArmv8, &feature_ras, - &feature_lor, - &feature_vh, - &feature_rcpc, &feature_dotprod, - &feature_ssbs, - &feature_uaops, + &feature_vh, &feature_crc, &feature_pan, + &feature_ccpp, + &feature_rdm, + &feature_rcpc, + &feature_uaops, + &feature_ssbs, + &feature_fpArmv8, + &feature_lse, + &feature_lor, }, }; @@ -1138,10 +1261,10 @@ pub const cpu_cortexA72 = Cpu{ .name = "cortex-a72", .llvm_name = "cortex-a72", .dependencies = &[_]*const Feature { - &feature_crc, - &feature_fuseAes, &feature_fpArmv8, + &feature_fuseAes, &feature_perfmon, + &feature_crc, }, }; @@ -1149,10 +1272,10 @@ pub const cpu_cortexA73 = Cpu{ .name = "cortex-a73", .llvm_name = "cortex-a73", .dependencies = &[_]*const Feature { - &feature_crc, - &feature_fuseAes, &feature_fpArmv8, + &feature_fuseAes, &feature_perfmon, + &feature_crc, }, }; @@ -1160,20 +1283,20 @@ pub const cpu_cortexA75 = Cpu{ .name = "cortex-a75", .llvm_name = "cortex-a75", .dependencies = &[_]*const Feature { - &feature_rdm, - &feature_ccpp, &feature_fuseAes, - &feature_lse, - &feature_perfmon, &feature_fpArmv8, - &feature_lor, &feature_ras, - &feature_vh, - &feature_rcpc, &feature_dotprod, - &feature_uaops, + &feature_vh, &feature_crc, &feature_pan, + &feature_ccpp, + &feature_rdm, + &feature_rcpc, + &feature_uaops, + &feature_perfmon, + &feature_lse, + &feature_lor, }, }; @@ -1181,19 +1304,19 @@ pub const cpu_cortexA76 = Cpu{ .name = "cortex-a76", .llvm_name = "cortex-a76", .dependencies = &[_]*const Feature { - &feature_rdm, - &feature_ccpp, - &feature_lse, - &feature_fpArmv8, - &feature_lor, &feature_ras, - &feature_vh, - &feature_rcpc, &feature_dotprod, - &feature_ssbs, - &feature_uaops, + &feature_vh, &feature_crc, &feature_pan, + &feature_ccpp, + &feature_rdm, + &feature_rcpc, + &feature_uaops, + &feature_ssbs, + &feature_fpArmv8, + &feature_lse, + &feature_lor, }, }; @@ -1201,19 +1324,19 @@ pub const cpu_cortexA76ae = Cpu{ .name = "cortex-a76ae", .llvm_name = "cortex-a76ae", .dependencies = &[_]*const Feature { - &feature_rdm, - &feature_ccpp, - &feature_lse, - &feature_fpArmv8, - &feature_lor, &feature_ras, - &feature_vh, - &feature_rcpc, &feature_dotprod, - &feature_ssbs, - &feature_uaops, + &feature_vh, &feature_crc, &feature_pan, + &feature_ccpp, + &feature_rdm, + &feature_rcpc, + &feature_uaops, + &feature_ssbs, + &feature_fpArmv8, + &feature_lse, + &feature_lor, }, }; @@ -1221,18 +1344,18 @@ pub const cpu_cyclone = Cpu{ .name = "cyclone", .llvm_name = "cyclone", .dependencies = &[_]*const Feature { - &feature_alternateSextloadCvtF32Pattern, - &feature_fuseCryptoEor, &feature_fuseAes, - &feature_zczGp, &feature_zczFpWorkaround, - &feature_disableLatencySchedHeuristic, &feature_perfmon, - &feature_fpArmv8, - &feature_arithBccFusion, &feature_arithCbzFusion, - &feature_zczFp, + &feature_alternateSextloadCvtF32Pattern, + &feature_fuseCryptoEor, + &feature_disableLatencySchedHeuristic, &feature_zcm, + &feature_zczFp, + &feature_zczGp, + &feature_fpArmv8, + &feature_arithBccFusion, }, }; @@ -1240,17 +1363,17 @@ pub const cpu_exynosM1 = Cpu{ .name = "exynos-m1", .llvm_name = "exynos-m1", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, &feature_fuseAes, &feature_force32bitJumpTables, - &feature_usePostraScheduler, &feature_perfmon, - &feature_fpArmv8, - &feature_slowMisaligned128store, - &feature_useReciprocalSquareRoot, &feature_crc, + &feature_useReciprocalSquareRoot, &feature_slowPaired128, &feature_zczFp, + &feature_slowMisaligned128store, + &feature_customCheapAsMove, + &feature_fpArmv8, + &feature_usePostraScheduler, }, }; @@ -1258,16 +1381,16 @@ pub const cpu_exynosM2 = Cpu{ .name = "exynos-m2", .llvm_name = "exynos-m2", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, &feature_fuseAes, &feature_force32bitJumpTables, - &feature_usePostraScheduler, &feature_perfmon, - &feature_fpArmv8, - &feature_slowMisaligned128store, &feature_crc, &feature_slowPaired128, &feature_zczFp, + &feature_slowMisaligned128store, + &feature_customCheapAsMove, + &feature_fpArmv8, + &feature_usePostraScheduler, }, }; @@ -1275,19 +1398,19 @@ pub const cpu_exynosM3 = Cpu{ .name = "exynos-m3", .llvm_name = "exynos-m3", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, &feature_fuseAes, + &feature_lslFast, &feature_force32bitJumpTables, - &feature_usePostraScheduler, &feature_perfmon, - &feature_fpArmv8, - &feature_fuseAddress, - &feature_fuseCsel, - &feature_lslFast, - &feature_zczFp, &feature_crc, &feature_fuseLiterals, + &feature_fuseCsel, + &feature_zczFp, &feature_predictableSelectExpensive, + &feature_customCheapAsMove, + &feature_fpArmv8, + &feature_usePostraScheduler, + &feature_fuseAddress, }, }; @@ -1295,31 +1418,31 @@ pub const cpu_exynosM4 = Cpu{ .name = "exynos-m4", .llvm_name = "exynos-m4", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, - &feature_lse, - &feature_perfmon, - &feature_fuseAddress, - &feature_dotprod, - &feature_arithCbzFusion, - &feature_zczFp, - &feature_fuseArithLogic, - &feature_ccpp, &feature_fuseAes, - &feature_fuseCsel, - &feature_rdm, - &feature_zczGp, - &feature_force32bitJumpTables, - &feature_usePostraScheduler, &feature_lslFast, + &feature_force32bitJumpTables, &feature_crc, - &feature_fuseLiterals, - &feature_pan, + &feature_rdm, &feature_fpArmv8, - &feature_lor, - &feature_ras, + &feature_lse, &feature_vh, + &feature_arithCbzFusion, + &feature_fuseLiterals, + &feature_ccpp, + &feature_lor, &feature_arithBccFusion, + &feature_ras, + &feature_dotprod, + &feature_fuseCsel, + &feature_zczFp, &feature_uaops, + &feature_zczGp, + &feature_perfmon, + &feature_usePostraScheduler, + &feature_fuseAddress, + &feature_fuseArithLogic, + &feature_customCheapAsMove, + &feature_pan, }, }; @@ -1327,31 +1450,31 @@ pub const cpu_exynosM5 = Cpu{ .name = "exynos-m5", .llvm_name = "exynos-m5", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, - &feature_lse, - &feature_perfmon, - &feature_fuseAddress, - &feature_dotprod, - &feature_arithCbzFusion, - &feature_zczFp, - &feature_fuseArithLogic, - &feature_ccpp, &feature_fuseAes, - &feature_fuseCsel, - &feature_rdm, - &feature_zczGp, - &feature_force32bitJumpTables, - &feature_usePostraScheduler, &feature_lslFast, + &feature_force32bitJumpTables, &feature_crc, - &feature_fuseLiterals, - &feature_pan, + &feature_rdm, &feature_fpArmv8, - &feature_lor, - &feature_ras, + &feature_lse, &feature_vh, + &feature_arithCbzFusion, + &feature_fuseLiterals, + &feature_ccpp, + &feature_lor, &feature_arithBccFusion, + &feature_ras, + &feature_dotprod, + &feature_fuseCsel, + &feature_zczFp, &feature_uaops, + &feature_zczGp, + &feature_perfmon, + &feature_usePostraScheduler, + &feature_fuseAddress, + &feature_fuseArithLogic, + &feature_customCheapAsMove, + &feature_pan, }, }; @@ -1359,17 +1482,17 @@ pub const cpu_falkor = Cpu{ .name = "falkor", .llvm_name = "falkor", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, - &feature_rdm, - &feature_zczGp, - &feature_usePostraScheduler, - &feature_perfmon, - &feature_fpArmv8, &feature_lslFast, - &feature_zczFp, + &feature_perfmon, &feature_crc, &feature_slowStrqroStore, + &feature_rdm, + &feature_zczFp, &feature_predictableSelectExpensive, + &feature_customCheapAsMove, + &feature_zczGp, + &feature_fpArmv8, + &feature_usePostraScheduler, }, }; @@ -1391,15 +1514,15 @@ pub const cpu_kryo = Cpu{ .name = "kryo", .llvm_name = "kryo", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, - &feature_zczGp, - &feature_usePostraScheduler, - &feature_perfmon, - &feature_fpArmv8, &feature_lslFast, - &feature_zczFp, + &feature_perfmon, &feature_crc, + &feature_zczFp, &feature_predictableSelectExpensive, + &feature_customCheapAsMove, + &feature_zczGp, + &feature_fpArmv8, + &feature_usePostraScheduler, }, }; @@ -1407,19 +1530,19 @@ pub const cpu_neoverseE1 = Cpu{ .name = "neoverse-e1", .llvm_name = "neoverse-e1", .dependencies = &[_]*const Feature { - &feature_rdm, - &feature_ccpp, - &feature_lse, - &feature_fpArmv8, - &feature_lor, &feature_ras, - &feature_vh, - &feature_rcpc, &feature_dotprod, - &feature_ssbs, - &feature_uaops, + &feature_vh, &feature_crc, &feature_pan, + &feature_ccpp, + &feature_rdm, + &feature_rcpc, + &feature_uaops, + &feature_ssbs, + &feature_fpArmv8, + &feature_lse, + &feature_lor, }, }; @@ -1427,20 +1550,20 @@ pub const cpu_neoverseN1 = Cpu{ .name = "neoverse-n1", .llvm_name = "neoverse-n1", .dependencies = &[_]*const Feature { - &feature_rdm, - &feature_ccpp, - &feature_lse, - &feature_fpArmv8, - &feature_lor, &feature_ras, - &feature_vh, - &feature_rcpc, &feature_dotprod, - &feature_ssbs, - &feature_uaops, + &feature_vh, &feature_crc, &feature_pan, + &feature_ccpp, + &feature_rdm, &feature_spe, + &feature_rcpc, + &feature_uaops, + &feature_ssbs, + &feature_fpArmv8, + &feature_lse, + &feature_lor, }, }; @@ -1448,36 +1571,36 @@ pub const cpu_saphira = Cpu{ .name = "saphira", .llvm_name = "saphira", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, - &feature_lse, - &feature_fmi, - &feature_perfmon, - &feature_sel2, - &feature_dotprod, + &feature_lslFast, + &feature_crc, + &feature_rdm, &feature_am, - &feature_zczFp, &feature_mpam, - &feature_ccpp, + &feature_fmi, + &feature_fpArmv8, + &feature_lse, &feature_dit, - &feature_tracev84, - &feature_spe, - &feature_rdm, - &feature_zczGp, - &feature_usePostraScheduler, + &feature_vh, + &feature_ccpp, + &feature_sel2, + &feature_lor, &feature_nv, - &feature_tlbRmi, - &feature_lslFast, - &feature_crc, - &feature_pan, - &feature_ccidx, - &feature_fpArmv8, &feature_ras, - &feature_lor, - &feature_vh, + &feature_tlbRmi, + &feature_dotprod, + &feature_zczFp, + &feature_spe, &feature_rcpc, + &feature_predictableSelectExpensive, &feature_uaops, + &feature_zczGp, + &feature_perfmon, + &feature_usePostraScheduler, &feature_pa, - &feature_predictableSelectExpensive, + &feature_ccidx, + &feature_customCheapAsMove, + &feature_pan, + &feature_tracev84, }, }; @@ -1485,11 +1608,11 @@ pub const cpu_thunderx = Cpu{ .name = "thunderx", .llvm_name = "thunderx", .dependencies = &[_]*const Feature { - &feature_usePostraScheduler, &feature_perfmon, - &feature_fpArmv8, &feature_crc, &feature_predictableSelectExpensive, + &feature_fpArmv8, + &feature_usePostraScheduler, }, }; @@ -1497,17 +1620,17 @@ pub const cpu_thunderx2t99 = Cpu{ .name = "thunderx2t99", .llvm_name = "thunderx2t99", .dependencies = &[_]*const Feature { - &feature_rdm, - &feature_lse, - &feature_usePostraScheduler, &feature_aggressiveFma, - &feature_fpArmv8, - &feature_lor, &feature_vh, - &feature_arithBccFusion, &feature_crc, &feature_pan, + &feature_rdm, &feature_predictableSelectExpensive, + &feature_fpArmv8, + &feature_lse, + &feature_lor, + &feature_usePostraScheduler, + &feature_arithBccFusion, }, }; @@ -1515,11 +1638,11 @@ pub const cpu_thunderxt81 = Cpu{ .name = "thunderxt81", .llvm_name = "thunderxt81", .dependencies = &[_]*const Feature { - &feature_usePostraScheduler, &feature_perfmon, - &feature_fpArmv8, &feature_crc, &feature_predictableSelectExpensive, + &feature_fpArmv8, + &feature_usePostraScheduler, }, }; @@ -1527,11 +1650,11 @@ pub const cpu_thunderxt83 = Cpu{ .name = "thunderxt83", .llvm_name = "thunderxt83", .dependencies = &[_]*const Feature { - &feature_usePostraScheduler, &feature_perfmon, - &feature_fpArmv8, &feature_crc, &feature_predictableSelectExpensive, + &feature_fpArmv8, + &feature_usePostraScheduler, }, }; @@ -1539,11 +1662,11 @@ pub const cpu_thunderxt88 = Cpu{ .name = "thunderxt88", .llvm_name = "thunderxt88", .dependencies = &[_]*const Feature { - &feature_usePostraScheduler, &feature_perfmon, - &feature_fpArmv8, &feature_crc, &feature_predictableSelectExpensive, + &feature_fpArmv8, + &feature_usePostraScheduler, }, }; @@ -1551,22 +1674,22 @@ pub const cpu_tsv110 = Cpu{ .name = "tsv110", .llvm_name = "tsv110", .dependencies = &[_]*const Feature { - &feature_customCheapAsMove, - &feature_rdm, - &feature_ccpp, &feature_fuseAes, - &feature_lse, - &feature_usePostraScheduler, - &feature_perfmon, &feature_fpArmv8, - &feature_lor, &feature_ras, - &feature_vh, &feature_dotprod, - &feature_uaops, + &feature_vh, &feature_crc, &feature_pan, + &feature_ccpp, + &feature_rdm, &feature_spe, + &feature_uaops, + &feature_customCheapAsMove, + &feature_perfmon, + &feature_lse, + &feature_lor, + &feature_usePostraScheduler, }, }; diff --git a/lib/std/target/amdgpu.zig b/lib/std/target/amdgpu.zig index b428615124..3d4b4950ca 100644 --- a/lib/std/target/amdgpu.zig +++ b/lib/std/target/amdgpu.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_BitInsts16 = Feature{ .name = "16-bit-insts", + .llvm_name = "16-bit-insts", .description = "Has i16/f16 instructions", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_BitInsts16 = Feature{ pub const feature_addNoCarryInsts = Feature{ .name = "add-no-carry-insts", + .llvm_name = "add-no-carry-insts", .description = "Have VALU add/sub instructions without carry out", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_addNoCarryInsts = Feature{ pub const feature_apertureRegs = Feature{ .name = "aperture-regs", + .llvm_name = "aperture-regs", .description = "Has Memory Aperture Base and Size Registers", .dependencies = &[_]*const Feature { }, @@ -24,6 +27,7 @@ pub const feature_apertureRegs = Feature{ pub const feature_atomicFaddInsts = Feature{ .name = "atomic-fadd-insts", + .llvm_name = "atomic-fadd-insts", .description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions", .dependencies = &[_]*const Feature { }, @@ -31,6 +35,7 @@ pub const feature_atomicFaddInsts = Feature{ pub const feature_autoWaitcntBeforeBarrier = Feature{ .name = "auto-waitcnt-before-barrier", + .llvm_name = "auto-waitcnt-before-barrier", .description = "Hardware automatically inserts waitcnt before barrier", .dependencies = &[_]*const Feature { }, @@ -38,6 +43,7 @@ pub const feature_autoWaitcntBeforeBarrier = Feature{ pub const feature_ciInsts = Feature{ .name = "ci-insts", + .llvm_name = "ci-insts", .description = "Additional instructions for CI+", .dependencies = &[_]*const Feature { }, @@ -45,6 +51,7 @@ pub const feature_ciInsts = Feature{ pub const feature_codeObjectV3 = Feature{ .name = "code-object-v3", + .llvm_name = "code-object-v3", .description = "Generate code object version 3", .dependencies = &[_]*const Feature { }, @@ -52,6 +59,7 @@ pub const feature_codeObjectV3 = Feature{ pub const feature_cumode = Feature{ .name = "cumode", + .llvm_name = "cumode", .description = "Enable CU wavefront execution mode", .dependencies = &[_]*const Feature { }, @@ -59,6 +67,7 @@ pub const feature_cumode = Feature{ pub const feature_dlInsts = Feature{ .name = "dl-insts", + .llvm_name = "dl-insts", .description = "Has v_fmac_f32 and v_xnor_b32 instructions", .dependencies = &[_]*const Feature { }, @@ -66,6 +75,7 @@ pub const feature_dlInsts = Feature{ pub const feature_dpp = Feature{ .name = "dpp", + .llvm_name = "dpp", .description = "Support DPP (Data Parallel Primitives) extension", .dependencies = &[_]*const Feature { }, @@ -73,6 +83,7 @@ pub const feature_dpp = Feature{ pub const feature_dpp8 = Feature{ .name = "dpp8", + .llvm_name = "dpp8", .description = "Support DPP8 (Data Parallel Primitives) extension", .dependencies = &[_]*const Feature { }, @@ -80,6 +91,7 @@ pub const feature_dpp8 = Feature{ pub const feature_noSramEccSupport = Feature{ .name = "no-sram-ecc-support", + .llvm_name = "no-sram-ecc-support", .description = "Hardware does not support SRAM ECC", .dependencies = &[_]*const Feature { }, @@ -87,6 +99,7 @@ pub const feature_noSramEccSupport = Feature{ pub const feature_noXnackSupport = Feature{ .name = "no-xnack-support", + .llvm_name = "no-xnack-support", .description = "Hardware does not support XNACK", .dependencies = &[_]*const Feature { }, @@ -94,6 +107,7 @@ pub const feature_noXnackSupport = Feature{ pub const feature_dot1Insts = Feature{ .name = "dot1-insts", + .llvm_name = "dot1-insts", .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions", .dependencies = &[_]*const Feature { }, @@ -101,6 +115,7 @@ pub const feature_dot1Insts = Feature{ pub const feature_dot2Insts = Feature{ .name = "dot2-insts", + .llvm_name = "dot2-insts", .description = "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions", .dependencies = &[_]*const Feature { }, @@ -108,6 +123,7 @@ pub const feature_dot2Insts = Feature{ pub const feature_dot3Insts = Feature{ .name = "dot3-insts", + .llvm_name = "dot3-insts", .description = "Has v_dot8c_i32_i4 instruction", .dependencies = &[_]*const Feature { }, @@ -115,6 +131,7 @@ pub const feature_dot3Insts = Feature{ pub const feature_dot4Insts = Feature{ .name = "dot4-insts", + .llvm_name = "dot4-insts", .description = "Has v_dot2c_i32_i16 instruction", .dependencies = &[_]*const Feature { }, @@ -122,6 +139,7 @@ pub const feature_dot4Insts = Feature{ pub const feature_dot5Insts = Feature{ .name = "dot5-insts", + .llvm_name = "dot5-insts", .description = "Has v_dot2c_f32_f16 instruction", .dependencies = &[_]*const Feature { }, @@ -129,6 +147,7 @@ pub const feature_dot5Insts = Feature{ pub const feature_dot6Insts = Feature{ .name = "dot6-insts", + .llvm_name = "dot6-insts", .description = "Has v_dot4c_i32_i8 instruction", .dependencies = &[_]*const Feature { }, @@ -136,6 +155,7 @@ pub const feature_dot6Insts = Feature{ pub const feature_DumpCode = Feature{ .name = "DumpCode", + .llvm_name = "DumpCode", .description = "Dump MachineInstrs in the CodeEmitter", .dependencies = &[_]*const Feature { }, @@ -143,6 +163,7 @@ pub const feature_DumpCode = Feature{ pub const feature_dumpcode = Feature{ .name = "dumpcode", + .llvm_name = "dumpcode", .description = "Dump MachineInstrs in the CodeEmitter", .dependencies = &[_]*const Feature { }, @@ -150,6 +171,7 @@ pub const feature_dumpcode = Feature{ pub const feature_enableDs128 = Feature{ .name = "enable-ds128", + .llvm_name = "enable-ds128", .description = "Use ds_{read|write}_b128", .dependencies = &[_]*const Feature { }, @@ -157,6 +179,7 @@ pub const feature_enableDs128 = Feature{ pub const feature_loadStoreOpt = Feature{ .name = "load-store-opt", + .llvm_name = "load-store-opt", .description = "Enable SI load/store optimizer pass", .dependencies = &[_]*const Feature { }, @@ -164,6 +187,7 @@ pub const feature_loadStoreOpt = Feature{ pub const feature_enablePrtStrictNull = Feature{ .name = "enable-prt-strict-null", + .llvm_name = "enable-prt-strict-null", .description = "Enable zeroing of result registers for sparse texture fetches", .dependencies = &[_]*const Feature { }, @@ -171,6 +195,7 @@ pub const feature_enablePrtStrictNull = Feature{ pub const feature_siScheduler = Feature{ .name = "si-scheduler", + .llvm_name = "si-scheduler", .description = "Enable SI Machine Scheduler", .dependencies = &[_]*const Feature { }, @@ -178,6 +203,7 @@ pub const feature_siScheduler = Feature{ pub const feature_unsafeDsOffsetFolding = Feature{ .name = "unsafe-ds-offset-folding", + .llvm_name = "unsafe-ds-offset-folding", .description = "Force using DS instruction immediate offsets on SI", .dependencies = &[_]*const Feature { }, @@ -185,6 +211,7 @@ pub const feature_unsafeDsOffsetFolding = Feature{ pub const feature_fmaf = Feature{ .name = "fmaf", + .llvm_name = "fmaf", .description = "Enable single precision FMA (not as fast as mul+add, but fused)", .dependencies = &[_]*const Feature { }, @@ -192,6 +219,7 @@ pub const feature_fmaf = Feature{ pub const feature_fp16Denormals = Feature{ .name = "fp16-denormals", + .llvm_name = "fp16-denormals", .description = "Enable half precision denormal handling", .dependencies = &[_]*const Feature { &feature_fp64, @@ -200,6 +228,7 @@ pub const feature_fp16Denormals = Feature{ pub const feature_fp32Denormals = Feature{ .name = "fp32-denormals", + .llvm_name = "fp32-denormals", .description = "Enable single precision denormal handling", .dependencies = &[_]*const Feature { }, @@ -207,6 +236,7 @@ pub const feature_fp32Denormals = Feature{ pub const feature_fp64 = Feature{ .name = "fp64", + .llvm_name = "fp64", .description = "Enable double precision operations", .dependencies = &[_]*const Feature { }, @@ -214,6 +244,7 @@ pub const feature_fp64 = Feature{ pub const feature_fp64Denormals = Feature{ .name = "fp64-denormals", + .llvm_name = "fp64-denormals", .description = "Enable double and half precision denormal handling", .dependencies = &[_]*const Feature { &feature_fp64, @@ -222,6 +253,7 @@ pub const feature_fp64Denormals = Feature{ pub const feature_fp64Fp16Denormals = Feature{ .name = "fp64-fp16-denormals", + .llvm_name = "fp64-fp16-denormals", .description = "Enable double and half precision denormal handling", .dependencies = &[_]*const Feature { &feature_fp64, @@ -230,6 +262,7 @@ pub const feature_fp64Fp16Denormals = Feature{ pub const feature_fpExceptions = Feature{ .name = "fp-exceptions", + .llvm_name = "fp-exceptions", .description = "Enable floating point exceptions", .dependencies = &[_]*const Feature { }, @@ -237,6 +270,7 @@ pub const feature_fpExceptions = Feature{ pub const feature_fastFmaf = Feature{ .name = "fast-fmaf", + .llvm_name = "fast-fmaf", .description = "Assuming f32 fma is at least as fast as mul + add", .dependencies = &[_]*const Feature { }, @@ -244,6 +278,7 @@ pub const feature_fastFmaf = Feature{ pub const feature_flatAddressSpace = Feature{ .name = "flat-address-space", + .llvm_name = "flat-address-space", .description = "Support flat address space", .dependencies = &[_]*const Feature { }, @@ -251,6 +286,7 @@ pub const feature_flatAddressSpace = Feature{ pub const feature_flatForGlobal = Feature{ .name = "flat-for-global", + .llvm_name = "flat-for-global", .description = "Force to generate flat instruction for global", .dependencies = &[_]*const Feature { }, @@ -258,6 +294,7 @@ pub const feature_flatForGlobal = Feature{ pub const feature_flatGlobalInsts = Feature{ .name = "flat-global-insts", + .llvm_name = "flat-global-insts", .description = "Have global_* flat memory instructions", .dependencies = &[_]*const Feature { }, @@ -265,6 +302,7 @@ pub const feature_flatGlobalInsts = Feature{ pub const feature_flatInstOffsets = Feature{ .name = "flat-inst-offsets", + .llvm_name = "flat-inst-offsets", .description = "Flat instructions have immediate offset addressing mode", .dependencies = &[_]*const Feature { }, @@ -272,6 +310,7 @@ pub const feature_flatInstOffsets = Feature{ pub const feature_flatScratchInsts = Feature{ .name = "flat-scratch-insts", + .llvm_name = "flat-scratch-insts", .description = "Have scratch_* flat memory instructions", .dependencies = &[_]*const Feature { }, @@ -279,6 +318,7 @@ pub const feature_flatScratchInsts = Feature{ pub const feature_flatSegmentOffsetBug = Feature{ .name = "flat-segment-offset-bug", + .llvm_name = "flat-segment-offset-bug", .description = "GFX10 bug, inst_offset ignored in flat segment", .dependencies = &[_]*const Feature { }, @@ -286,6 +326,7 @@ pub const feature_flatSegmentOffsetBug = Feature{ pub const feature_fmaMixInsts = Feature{ .name = "fma-mix-insts", + .llvm_name = "fma-mix-insts", .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions", .dependencies = &[_]*const Feature { }, @@ -293,6 +334,7 @@ pub const feature_fmaMixInsts = Feature{ pub const feature_gcn3Encoding = Feature{ .name = "gcn3-encoding", + .llvm_name = "gcn3-encoding", .description = "Encoding format for VI", .dependencies = &[_]*const Feature { }, @@ -300,6 +342,7 @@ pub const feature_gcn3Encoding = Feature{ pub const feature_gfx7Gfx8Gfx9Insts = Feature{ .name = "gfx7-gfx8-gfx9-insts", + .llvm_name = "gfx7-gfx8-gfx9-insts", .description = "Instructions shared in GFX7, GFX8, GFX9", .dependencies = &[_]*const Feature { }, @@ -307,6 +350,7 @@ pub const feature_gfx7Gfx8Gfx9Insts = Feature{ pub const feature_gfx8Insts = Feature{ .name = "gfx8-insts", + .llvm_name = "gfx8-insts", .description = "Additional instructions for GFX8+", .dependencies = &[_]*const Feature { }, @@ -314,6 +358,7 @@ pub const feature_gfx8Insts = Feature{ pub const feature_gfx9Insts = Feature{ .name = "gfx9-insts", + .llvm_name = "gfx9-insts", .description = "Additional instructions for GFX9+", .dependencies = &[_]*const Feature { }, @@ -321,6 +366,7 @@ pub const feature_gfx9Insts = Feature{ pub const feature_gfx10Insts = Feature{ .name = "gfx10-insts", + .llvm_name = "gfx10-insts", .description = "Additional instructions for GFX10+", .dependencies = &[_]*const Feature { }, @@ -328,6 +374,7 @@ pub const feature_gfx10Insts = Feature{ pub const feature_instFwdPrefetchBug = Feature{ .name = "inst-fwd-prefetch-bug", + .llvm_name = "inst-fwd-prefetch-bug", .description = "S_INST_PREFETCH instruction causes shader to hang", .dependencies = &[_]*const Feature { }, @@ -335,6 +382,7 @@ pub const feature_instFwdPrefetchBug = Feature{ pub const feature_intClampInsts = Feature{ .name = "int-clamp-insts", + .llvm_name = "int-clamp-insts", .description = "Support clamp for integer destination", .dependencies = &[_]*const Feature { }, @@ -342,6 +390,7 @@ pub const feature_intClampInsts = Feature{ pub const feature_inv2piInlineImm = Feature{ .name = "inv-2pi-inline-imm", + .llvm_name = "inv-2pi-inline-imm", .description = "Has 1 / (2 * pi) as inline immediate", .dependencies = &[_]*const Feature { }, @@ -349,6 +398,7 @@ pub const feature_inv2piInlineImm = Feature{ pub const feature_ldsbankcount16 = Feature{ .name = "ldsbankcount16", + .llvm_name = "ldsbankcount16", .description = "The number of LDS banks per compute unit.", .dependencies = &[_]*const Feature { }, @@ -356,6 +406,7 @@ pub const feature_ldsbankcount16 = Feature{ pub const feature_ldsbankcount32 = Feature{ .name = "ldsbankcount32", + .llvm_name = "ldsbankcount32", .description = "The number of LDS banks per compute unit.", .dependencies = &[_]*const Feature { }, @@ -363,6 +414,7 @@ pub const feature_ldsbankcount32 = Feature{ pub const feature_ldsBranchVmemWarHazard = Feature{ .name = "lds-branch-vmem-war-hazard", + .llvm_name = "lds-branch-vmem-war-hazard", .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0", .dependencies = &[_]*const Feature { }, @@ -370,6 +422,7 @@ pub const feature_ldsBranchVmemWarHazard = Feature{ pub const feature_ldsMisalignedBug = Feature{ .name = "lds-misaligned-bug", + .llvm_name = "lds-misaligned-bug", .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode", .dependencies = &[_]*const Feature { }, @@ -377,6 +430,7 @@ pub const feature_ldsMisalignedBug = Feature{ pub const feature_localmemorysize0 = Feature{ .name = "localmemorysize0", + .llvm_name = "localmemorysize0", .description = "The size of local memory in bytes", .dependencies = &[_]*const Feature { }, @@ -384,6 +438,7 @@ pub const feature_localmemorysize0 = Feature{ pub const feature_localmemorysize32768 = Feature{ .name = "localmemorysize32768", + .llvm_name = "localmemorysize32768", .description = "The size of local memory in bytes", .dependencies = &[_]*const Feature { }, @@ -391,6 +446,7 @@ pub const feature_localmemorysize32768 = Feature{ pub const feature_localmemorysize65536 = Feature{ .name = "localmemorysize65536", + .llvm_name = "localmemorysize65536", .description = "The size of local memory in bytes", .dependencies = &[_]*const Feature { }, @@ -398,6 +454,7 @@ pub const feature_localmemorysize65536 = Feature{ pub const feature_maiInsts = Feature{ .name = "mai-insts", + .llvm_name = "mai-insts", .description = "Has mAI instructions", .dependencies = &[_]*const Feature { }, @@ -405,6 +462,7 @@ pub const feature_maiInsts = Feature{ pub const feature_mfmaInlineLiteralBug = Feature{ .name = "mfma-inline-literal-bug", + .llvm_name = "mfma-inline-literal-bug", .description = "MFMA cannot use inline literal as SrcC", .dependencies = &[_]*const Feature { }, @@ -412,6 +470,7 @@ pub const feature_mfmaInlineLiteralBug = Feature{ pub const feature_mimgR128 = Feature{ .name = "mimg-r128", + .llvm_name = "mimg-r128", .description = "Support 128-bit texture resources", .dependencies = &[_]*const Feature { }, @@ -419,6 +478,7 @@ pub const feature_mimgR128 = Feature{ pub const feature_madMixInsts = Feature{ .name = "mad-mix-insts", + .llvm_name = "mad-mix-insts", .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions", .dependencies = &[_]*const Feature { }, @@ -426,6 +486,7 @@ pub const feature_madMixInsts = Feature{ pub const feature_maxPrivateElementSize4 = Feature{ .name = "max-private-element-size-4", + .llvm_name = "max-private-element-size-4", .description = "Maximum private access size may be 4", .dependencies = &[_]*const Feature { }, @@ -433,6 +494,7 @@ pub const feature_maxPrivateElementSize4 = Feature{ pub const feature_maxPrivateElementSize8 = Feature{ .name = "max-private-element-size-8", + .llvm_name = "max-private-element-size-8", .description = "Maximum private access size may be 8", .dependencies = &[_]*const Feature { }, @@ -440,6 +502,7 @@ pub const feature_maxPrivateElementSize8 = Feature{ pub const feature_maxPrivateElementSize16 = Feature{ .name = "max-private-element-size-16", + .llvm_name = "max-private-element-size-16", .description = "Maximum private access size may be 16", .dependencies = &[_]*const Feature { }, @@ -447,6 +510,7 @@ pub const feature_maxPrivateElementSize16 = Feature{ pub const feature_movrel = Feature{ .name = "movrel", + .llvm_name = "movrel", .description = "Has v_movrel*_b32 instructions", .dependencies = &[_]*const Feature { }, @@ -454,6 +518,7 @@ pub const feature_movrel = Feature{ pub const feature_nsaEncoding = Feature{ .name = "nsa-encoding", + .llvm_name = "nsa-encoding", .description = "Support NSA encoding for image instructions", .dependencies = &[_]*const Feature { }, @@ -461,6 +526,7 @@ pub const feature_nsaEncoding = Feature{ pub const feature_nsaToVmemBug = Feature{ .name = "nsa-to-vmem-bug", + .llvm_name = "nsa-to-vmem-bug", .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero", .dependencies = &[_]*const Feature { }, @@ -468,6 +534,7 @@ pub const feature_nsaToVmemBug = Feature{ pub const feature_noDataDepHazard = Feature{ .name = "no-data-dep-hazard", + .llvm_name = "no-data-dep-hazard", .description = "Does not need SW waitstates", .dependencies = &[_]*const Feature { }, @@ -475,6 +542,7 @@ pub const feature_noDataDepHazard = Feature{ pub const feature_noSdstCmpx = Feature{ .name = "no-sdst-cmpx", + .llvm_name = "no-sdst-cmpx", .description = "V_CMPX does not write VCC/SGPR in addition to EXEC", .dependencies = &[_]*const Feature { }, @@ -482,6 +550,7 @@ pub const feature_noSdstCmpx = Feature{ pub const feature_offset3fBug = Feature{ .name = "offset-3f-bug", + .llvm_name = "offset-3f-bug", .description = "Branch offset of 3f hardware bug", .dependencies = &[_]*const Feature { }, @@ -489,6 +558,7 @@ pub const feature_offset3fBug = Feature{ pub const feature_pkFmacF16Inst = Feature{ .name = "pk-fmac-f16-inst", + .llvm_name = "pk-fmac-f16-inst", .description = "Has v_pk_fmac_f16 instruction", .dependencies = &[_]*const Feature { }, @@ -496,6 +566,7 @@ pub const feature_pkFmacF16Inst = Feature{ pub const feature_promoteAlloca = Feature{ .name = "promote-alloca", + .llvm_name = "promote-alloca", .description = "Enable promote alloca pass", .dependencies = &[_]*const Feature { }, @@ -503,6 +574,7 @@ pub const feature_promoteAlloca = Feature{ pub const feature_r128A16 = Feature{ .name = "r128-a16", + .llvm_name = "r128-a16", .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9", .dependencies = &[_]*const Feature { }, @@ -510,6 +582,7 @@ pub const feature_r128A16 = Feature{ pub const feature_registerBanking = Feature{ .name = "register-banking", + .llvm_name = "register-banking", .description = "Has register banking", .dependencies = &[_]*const Feature { }, @@ -517,6 +590,7 @@ pub const feature_registerBanking = Feature{ pub const feature_sdwa = Feature{ .name = "sdwa", + .llvm_name = "sdwa", .description = "Support SDWA (Sub-DWORD Addressing) extension", .dependencies = &[_]*const Feature { }, @@ -524,6 +598,7 @@ pub const feature_sdwa = Feature{ pub const feature_sdwaMav = Feature{ .name = "sdwa-mav", + .llvm_name = "sdwa-mav", .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension", .dependencies = &[_]*const Feature { }, @@ -531,6 +606,7 @@ pub const feature_sdwaMav = Feature{ pub const feature_sdwaOmod = Feature{ .name = "sdwa-omod", + .llvm_name = "sdwa-omod", .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension", .dependencies = &[_]*const Feature { }, @@ -538,6 +614,7 @@ pub const feature_sdwaOmod = Feature{ pub const feature_sdwaOutModsVopc = Feature{ .name = "sdwa-out-mods-vopc", + .llvm_name = "sdwa-out-mods-vopc", .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension", .dependencies = &[_]*const Feature { }, @@ -545,6 +622,7 @@ pub const feature_sdwaOutModsVopc = Feature{ pub const feature_sdwaScalar = Feature{ .name = "sdwa-scalar", + .llvm_name = "sdwa-scalar", .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension", .dependencies = &[_]*const Feature { }, @@ -552,6 +630,7 @@ pub const feature_sdwaScalar = Feature{ pub const feature_sdwaSdst = Feature{ .name = "sdwa-sdst", + .llvm_name = "sdwa-sdst", .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension", .dependencies = &[_]*const Feature { }, @@ -559,6 +638,7 @@ pub const feature_sdwaSdst = Feature{ pub const feature_sgprInitBug = Feature{ .name = "sgpr-init-bug", + .llvm_name = "sgpr-init-bug", .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size", .dependencies = &[_]*const Feature { }, @@ -566,6 +646,7 @@ pub const feature_sgprInitBug = Feature{ pub const feature_smemToVectorWriteHazard = Feature{ .name = "smem-to-vector-write-hazard", + .llvm_name = "smem-to-vector-write-hazard", .description = "s_load_dword followed by v_cmp page faults", .dependencies = &[_]*const Feature { }, @@ -573,6 +654,7 @@ pub const feature_smemToVectorWriteHazard = Feature{ pub const feature_sMemrealtime = Feature{ .name = "s-memrealtime", + .llvm_name = "s-memrealtime", .description = "Has s_memrealtime instruction", .dependencies = &[_]*const Feature { }, @@ -580,6 +662,7 @@ pub const feature_sMemrealtime = Feature{ pub const feature_sramEcc = Feature{ .name = "sram-ecc", + .llvm_name = "sram-ecc", .description = "Enable SRAM ECC", .dependencies = &[_]*const Feature { }, @@ -587,6 +670,7 @@ pub const feature_sramEcc = Feature{ pub const feature_scalarAtomics = Feature{ .name = "scalar-atomics", + .llvm_name = "scalar-atomics", .description = "Has atomic scalar memory instructions", .dependencies = &[_]*const Feature { }, @@ -594,6 +678,7 @@ pub const feature_scalarAtomics = Feature{ pub const feature_scalarFlatScratchInsts = Feature{ .name = "scalar-flat-scratch-insts", + .llvm_name = "scalar-flat-scratch-insts", .description = "Have s_scratch_* flat memory instructions", .dependencies = &[_]*const Feature { }, @@ -601,6 +686,7 @@ pub const feature_scalarFlatScratchInsts = Feature{ pub const feature_scalarStores = Feature{ .name = "scalar-stores", + .llvm_name = "scalar-stores", .description = "Has store scalar memory instructions", .dependencies = &[_]*const Feature { }, @@ -608,6 +694,7 @@ pub const feature_scalarStores = Feature{ pub const feature_trapHandler = Feature{ .name = "trap-handler", + .llvm_name = "trap-handler", .description = "Trap handler support", .dependencies = &[_]*const Feature { }, @@ -615,6 +702,7 @@ pub const feature_trapHandler = Feature{ pub const feature_trigReducedRange = Feature{ .name = "trig-reduced-range", + .llvm_name = "trig-reduced-range", .description = "Requires use of fract on arguments to trig instructions", .dependencies = &[_]*const Feature { }, @@ -622,6 +710,7 @@ pub const feature_trigReducedRange = Feature{ pub const feature_unalignedBufferAccess = Feature{ .name = "unaligned-buffer-access", + .llvm_name = "unaligned-buffer-access", .description = "Support unaligned global loads and stores", .dependencies = &[_]*const Feature { }, @@ -629,6 +718,7 @@ pub const feature_unalignedBufferAccess = Feature{ pub const feature_unalignedScratchAccess = Feature{ .name = "unaligned-scratch-access", + .llvm_name = "unaligned-scratch-access", .description = "Support unaligned scratch loads and stores", .dependencies = &[_]*const Feature { }, @@ -636,6 +726,7 @@ pub const feature_unalignedScratchAccess = Feature{ pub const feature_unpackedD16Vmem = Feature{ .name = "unpacked-d16-vmem", + .llvm_name = "unpacked-d16-vmem", .description = "Has unpacked d16 vmem instructions", .dependencies = &[_]*const Feature { }, @@ -643,6 +734,7 @@ pub const feature_unpackedD16Vmem = Feature{ pub const feature_vgprIndexMode = Feature{ .name = "vgpr-index-mode", + .llvm_name = "vgpr-index-mode", .description = "Has VGPR mode register indexing", .dependencies = &[_]*const Feature { }, @@ -650,6 +742,7 @@ pub const feature_vgprIndexMode = Feature{ pub const feature_vmemToScalarWriteHazard = Feature{ .name = "vmem-to-scalar-write-hazard", + .llvm_name = "vmem-to-scalar-write-hazard", .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.", .dependencies = &[_]*const Feature { }, @@ -657,6 +750,7 @@ pub const feature_vmemToScalarWriteHazard = Feature{ pub const feature_vop3Literal = Feature{ .name = "vop3-literal", + .llvm_name = "vop3-literal", .description = "Can use one literal in VOP3", .dependencies = &[_]*const Feature { }, @@ -664,6 +758,7 @@ pub const feature_vop3Literal = Feature{ pub const feature_vop3p = Feature{ .name = "vop3p", + .llvm_name = "vop3p", .description = "Has VOP3P packed instructions", .dependencies = &[_]*const Feature { }, @@ -671,6 +766,7 @@ pub const feature_vop3p = Feature{ pub const feature_vcmpxExecWarHazard = Feature{ .name = "vcmpx-exec-war-hazard", + .llvm_name = "vcmpx-exec-war-hazard", .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)", .dependencies = &[_]*const Feature { }, @@ -678,6 +774,7 @@ pub const feature_vcmpxExecWarHazard = Feature{ pub const feature_vcmpxPermlaneHazard = Feature{ .name = "vcmpx-permlane-hazard", + .llvm_name = "vcmpx-permlane-hazard", .description = "TODO: describe me", .dependencies = &[_]*const Feature { }, @@ -685,6 +782,7 @@ pub const feature_vcmpxPermlaneHazard = Feature{ pub const feature_vscnt = Feature{ .name = "vscnt", + .llvm_name = "vscnt", .description = "Has separate store vscnt counter", .dependencies = &[_]*const Feature { }, @@ -692,6 +790,7 @@ pub const feature_vscnt = Feature{ pub const feature_wavefrontsize16 = Feature{ .name = "wavefrontsize16", + .llvm_name = "wavefrontsize16", .description = "The number of threads per wavefront", .dependencies = &[_]*const Feature { }, @@ -699,6 +798,7 @@ pub const feature_wavefrontsize16 = Feature{ pub const feature_wavefrontsize32 = Feature{ .name = "wavefrontsize32", + .llvm_name = "wavefrontsize32", .description = "The number of threads per wavefront", .dependencies = &[_]*const Feature { }, @@ -706,6 +806,7 @@ pub const feature_wavefrontsize32 = Feature{ pub const feature_wavefrontsize64 = Feature{ .name = "wavefrontsize64", + .llvm_name = "wavefrontsize64", .description = "The number of threads per wavefront", .dependencies = &[_]*const Feature { }, @@ -713,6 +814,7 @@ pub const feature_wavefrontsize64 = Feature{ pub const feature_xnack = Feature{ .name = "xnack", + .llvm_name = "xnack", .description = "Enable XNACK support", .dependencies = &[_]*const Feature { }, @@ -720,6 +822,7 @@ pub const feature_xnack = Feature{ pub const feature_halfRate64Ops = Feature{ .name = "half-rate-64-ops", + .llvm_name = "half-rate-64-ops", .description = "Most fp64 instructions are half rate instead of quarter", .dependencies = &[_]*const Feature { }, @@ -838,16 +941,16 @@ pub const cpu_bonaire = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount32, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, }, }; @@ -859,28 +962,28 @@ pub const cpu_carrizo = Cpu{ &feature_fastFmaf, &feature_ldsbankcount32, &feature_unpackedD16Vmem, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, &feature_xnack, &feature_halfRate64Ops, }, @@ -894,28 +997,28 @@ pub const cpu_fiji = Cpu{ &feature_noXnackSupport, &feature_ldsbankcount32, &feature_unpackedD16Vmem, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, }, }; @@ -944,40 +1047,40 @@ pub const cpu_gfx1010 = Cpu{ &feature_dlInsts, &feature_noXnackSupport, &feature_flatSegmentOffsetBug, - &feature_noSdstCmpx, - &feature_flatScratchInsts, - &feature_fp64, + &feature_sdwaOmod, &feature_sMemrealtime, - &feature_addNoCarryInsts, - &feature_vop3p, - &feature_fastFmaf, - &feature_BitInsts16, - &feature_sdwa, - &feature_gfx9Insts, &feature_flatAddressSpace, - &feature_vop3Literal, - &feature_apertureRegs, + &feature_gfx9Insts, + &feature_fastFmaf, + &feature_flatScratchInsts, &feature_mimgR128, - &feature_sdwaScalar, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, - &feature_gfx8Insts, + &feature_noSdstCmpx, + &feature_sdwaSdst, + &feature_vop3p, &feature_intClampInsts, - &feature_vscnt, + &feature_dpp, + &feature_registerBanking, &feature_movrel, - &feature_localmemorysize65536, - &feature_gfx10Insts, + &feature_gfx8Insts, + &feature_sdwa, + &feature_noDataDepHazard, &feature_flatGlobalInsts, - &feature_sdwaOmod, - &feature_dpp8, + &feature_gfx10Insts, + &feature_localmemorysize65536, + &feature_BitInsts16, + &feature_addNoCarryInsts, &feature_pkFmacF16Inst, - &feature_dpp, - &feature_sdwaSdst, &feature_flatInstOffsets, &feature_fmaMixInsts, - &feature_registerBanking, - &feature_noDataDepHazard, + &feature_sdwaScalar, + &feature_inv2piInlineImm, + &feature_vscnt, + &feature_apertureRegs, + &feature_dpp8, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, + &feature_vop3Literal, &feature_instFwdPrefetchBug, &feature_ldsbankcount32, &feature_ldsBranchVmemWarHazard, @@ -1008,40 +1111,40 @@ pub const cpu_gfx1011 = Cpu{ &feature_dot5Insts, &feature_dot6Insts, &feature_flatSegmentOffsetBug, - &feature_noSdstCmpx, - &feature_flatScratchInsts, - &feature_fp64, + &feature_sdwaOmod, &feature_sMemrealtime, - &feature_addNoCarryInsts, - &feature_vop3p, - &feature_fastFmaf, - &feature_BitInsts16, - &feature_sdwa, - &feature_gfx9Insts, &feature_flatAddressSpace, - &feature_vop3Literal, - &feature_apertureRegs, + &feature_gfx9Insts, + &feature_fastFmaf, + &feature_flatScratchInsts, &feature_mimgR128, - &feature_sdwaScalar, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, - &feature_gfx8Insts, + &feature_noSdstCmpx, + &feature_sdwaSdst, + &feature_vop3p, &feature_intClampInsts, - &feature_vscnt, + &feature_dpp, + &feature_registerBanking, &feature_movrel, - &feature_localmemorysize65536, - &feature_gfx10Insts, + &feature_gfx8Insts, + &feature_sdwa, + &feature_noDataDepHazard, &feature_flatGlobalInsts, - &feature_sdwaOmod, - &feature_dpp8, + &feature_gfx10Insts, + &feature_localmemorysize65536, + &feature_BitInsts16, + &feature_addNoCarryInsts, &feature_pkFmacF16Inst, - &feature_dpp, - &feature_sdwaSdst, &feature_flatInstOffsets, &feature_fmaMixInsts, - &feature_registerBanking, - &feature_noDataDepHazard, + &feature_sdwaScalar, + &feature_inv2piInlineImm, + &feature_vscnt, + &feature_apertureRegs, + &feature_dpp8, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, + &feature_vop3Literal, &feature_instFwdPrefetchBug, &feature_ldsbankcount32, &feature_ldsBranchVmemWarHazard, @@ -1071,40 +1174,40 @@ pub const cpu_gfx1012 = Cpu{ &feature_dot5Insts, &feature_dot6Insts, &feature_flatSegmentOffsetBug, - &feature_noSdstCmpx, - &feature_flatScratchInsts, - &feature_fp64, + &feature_sdwaOmod, &feature_sMemrealtime, - &feature_addNoCarryInsts, - &feature_vop3p, - &feature_fastFmaf, - &feature_BitInsts16, - &feature_sdwa, - &feature_gfx9Insts, &feature_flatAddressSpace, - &feature_vop3Literal, - &feature_apertureRegs, + &feature_gfx9Insts, + &feature_fastFmaf, + &feature_flatScratchInsts, &feature_mimgR128, - &feature_sdwaScalar, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, - &feature_gfx8Insts, + &feature_noSdstCmpx, + &feature_sdwaSdst, + &feature_vop3p, &feature_intClampInsts, - &feature_vscnt, + &feature_dpp, + &feature_registerBanking, &feature_movrel, - &feature_localmemorysize65536, - &feature_gfx10Insts, + &feature_gfx8Insts, + &feature_sdwa, + &feature_noDataDepHazard, &feature_flatGlobalInsts, - &feature_sdwaOmod, - &feature_dpp8, + &feature_gfx10Insts, + &feature_localmemorysize65536, + &feature_BitInsts16, + &feature_addNoCarryInsts, &feature_pkFmacF16Inst, - &feature_dpp, - &feature_sdwaSdst, &feature_flatInstOffsets, &feature_fmaMixInsts, - &feature_registerBanking, - &feature_noDataDepHazard, + &feature_sdwaScalar, + &feature_inv2piInlineImm, + &feature_vscnt, + &feature_apertureRegs, + &feature_dpp8, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, + &feature_vop3Literal, &feature_instFwdPrefetchBug, &feature_ldsbankcount32, &feature_ldsBranchVmemWarHazard, @@ -1131,13 +1234,13 @@ pub const cpu_gfx600 = Cpu{ &feature_noXnackSupport, &feature_fastFmaf, &feature_ldsbankcount32, - &feature_localmemorysize32768, - &feature_fp64, - &feature_mimgR128, &feature_movrel, - &feature_noSramEccSupport, - &feature_wavefrontsize64, &feature_trigReducedRange, + &feature_mimgR128, + &feature_localmemorysize32768, + &feature_wavefrontsize64, + &feature_noSramEccSupport, + &feature_fp64, &feature_halfRate64Ops, }, }; @@ -1149,13 +1252,13 @@ pub const cpu_gfx601 = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount32, - &feature_localmemorysize32768, - &feature_fp64, - &feature_mimgR128, &feature_movrel, - &feature_noSramEccSupport, - &feature_wavefrontsize64, &feature_trigReducedRange, + &feature_mimgR128, + &feature_localmemorysize32768, + &feature_wavefrontsize64, + &feature_noSramEccSupport, + &feature_fp64, }, }; @@ -1166,16 +1269,16 @@ pub const cpu_gfx700 = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount32, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, }, }; @@ -1187,16 +1290,16 @@ pub const cpu_gfx701 = Cpu{ &feature_noXnackSupport, &feature_fastFmaf, &feature_ldsbankcount32, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, &feature_halfRate64Ops, }, }; @@ -1209,16 +1312,16 @@ pub const cpu_gfx702 = Cpu{ &feature_noXnackSupport, &feature_fastFmaf, &feature_ldsbankcount16, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, }, }; @@ -1229,16 +1332,16 @@ pub const cpu_gfx703 = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount16, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, }, }; @@ -1249,16 +1352,16 @@ pub const cpu_gfx704 = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount32, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, }, }; @@ -1270,28 +1373,28 @@ pub const cpu_gfx801 = Cpu{ &feature_fastFmaf, &feature_ldsbankcount32, &feature_unpackedD16Vmem, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, &feature_xnack, &feature_halfRate64Ops, }, @@ -1306,28 +1409,28 @@ pub const cpu_gfx802 = Cpu{ &feature_ldsbankcount32, &feature_sgprInitBug, &feature_unpackedD16Vmem, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, }, }; @@ -1339,28 +1442,28 @@ pub const cpu_gfx803 = Cpu{ &feature_noXnackSupport, &feature_ldsbankcount32, &feature_unpackedD16Vmem, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, }, }; @@ -1370,28 +1473,28 @@ pub const cpu_gfx810 = Cpu{ .dependencies = &[_]*const Feature { &feature_codeObjectV3, &feature_ldsbankcount16, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, &feature_xnack, }, }; @@ -1403,36 +1506,36 @@ pub const cpu_gfx900 = Cpu{ &feature_codeObjectV3, &feature_noSramEccSupport, &feature_noXnackSupport, - &feature_flatScratchInsts, - &feature_fp64, - &feature_r128A16, + &feature_sdwaOmod, &feature_sMemrealtime, - &feature_addNoCarryInsts, - &feature_vop3p, + &feature_scalarStores, + &feature_flatAddressSpace, + &feature_vgprIndexMode, + &feature_gfx9Insts, + &feature_r128A16, &feature_fastFmaf, - &feature_BitInsts16, &feature_wavefrontsize64, - &feature_sdwa, - &feature_gfx9Insts, - &feature_flatAddressSpace, - &feature_apertureRegs, - &feature_sdwaScalar, - &feature_ciInsts, + &feature_flatScratchInsts, + &feature_sdwaSdst, + &feature_vop3p, + &feature_intClampInsts, + &feature_dpp, &feature_scalarAtomics, - &feature_scalarFlatScratchInsts, - &feature_inv2piInlineImm, - &feature_vgprIndexMode, &feature_gcn3Encoding, &feature_gfx8Insts, - &feature_scalarStores, - &feature_intClampInsts, - &feature_localmemorysize65536, - &feature_flatGlobalInsts, - &feature_sdwaOmod, - &feature_dpp, &feature_gfx7Gfx8Gfx9Insts, - &feature_sdwaSdst, + &feature_sdwa, + &feature_flatGlobalInsts, + &feature_localmemorysize65536, + &feature_BitInsts16, + &feature_addNoCarryInsts, &feature_flatInstOffsets, + &feature_sdwaScalar, + &feature_inv2piInlineImm, + &feature_apertureRegs, + &feature_fp64, + &feature_ciInsts, + &feature_scalarFlatScratchInsts, &feature_ldsbankcount32, &feature_madMixInsts, }, @@ -1444,36 +1547,36 @@ pub const cpu_gfx902 = Cpu{ .dependencies = &[_]*const Feature { &feature_codeObjectV3, &feature_noSramEccSupport, - &feature_flatScratchInsts, - &feature_fp64, - &feature_r128A16, + &feature_sdwaOmod, &feature_sMemrealtime, - &feature_addNoCarryInsts, - &feature_vop3p, + &feature_scalarStores, + &feature_flatAddressSpace, + &feature_vgprIndexMode, + &feature_gfx9Insts, + &feature_r128A16, &feature_fastFmaf, - &feature_BitInsts16, &feature_wavefrontsize64, - &feature_sdwa, - &feature_gfx9Insts, - &feature_flatAddressSpace, - &feature_apertureRegs, - &feature_sdwaScalar, - &feature_ciInsts, + &feature_flatScratchInsts, + &feature_sdwaSdst, + &feature_vop3p, + &feature_intClampInsts, + &feature_dpp, &feature_scalarAtomics, - &feature_scalarFlatScratchInsts, - &feature_inv2piInlineImm, - &feature_vgprIndexMode, &feature_gcn3Encoding, &feature_gfx8Insts, - &feature_scalarStores, - &feature_intClampInsts, - &feature_localmemorysize65536, - &feature_flatGlobalInsts, - &feature_sdwaOmod, - &feature_dpp, &feature_gfx7Gfx8Gfx9Insts, - &feature_sdwaSdst, + &feature_sdwa, + &feature_flatGlobalInsts, + &feature_localmemorysize65536, + &feature_BitInsts16, + &feature_addNoCarryInsts, &feature_flatInstOffsets, + &feature_sdwaScalar, + &feature_inv2piInlineImm, + &feature_apertureRegs, + &feature_fp64, + &feature_ciInsts, + &feature_scalarFlatScratchInsts, &feature_ldsbankcount32, &feature_madMixInsts, &feature_xnack, @@ -1488,36 +1591,36 @@ pub const cpu_gfx904 = Cpu{ &feature_noSramEccSupport, &feature_noXnackSupport, &feature_fmaMixInsts, - &feature_flatScratchInsts, - &feature_fp64, - &feature_r128A16, + &feature_sdwaOmod, &feature_sMemrealtime, - &feature_addNoCarryInsts, - &feature_vop3p, + &feature_scalarStores, + &feature_flatAddressSpace, + &feature_vgprIndexMode, + &feature_gfx9Insts, + &feature_r128A16, &feature_fastFmaf, - &feature_BitInsts16, &feature_wavefrontsize64, - &feature_sdwa, - &feature_gfx9Insts, - &feature_flatAddressSpace, - &feature_apertureRegs, - &feature_sdwaScalar, - &feature_ciInsts, + &feature_flatScratchInsts, + &feature_sdwaSdst, + &feature_vop3p, + &feature_intClampInsts, + &feature_dpp, &feature_scalarAtomics, - &feature_scalarFlatScratchInsts, - &feature_inv2piInlineImm, - &feature_vgprIndexMode, &feature_gcn3Encoding, &feature_gfx8Insts, - &feature_scalarStores, - &feature_intClampInsts, - &feature_localmemorysize65536, - &feature_flatGlobalInsts, - &feature_sdwaOmod, - &feature_dpp, &feature_gfx7Gfx8Gfx9Insts, - &feature_sdwaSdst, + &feature_sdwa, + &feature_flatGlobalInsts, + &feature_localmemorysize65536, + &feature_BitInsts16, + &feature_addNoCarryInsts, &feature_flatInstOffsets, + &feature_sdwaScalar, + &feature_inv2piInlineImm, + &feature_apertureRegs, + &feature_fp64, + &feature_ciInsts, + &feature_scalarFlatScratchInsts, &feature_ldsbankcount32, }, }; @@ -1532,36 +1635,36 @@ pub const cpu_gfx906 = Cpu{ &feature_dot1Insts, &feature_dot2Insts, &feature_fmaMixInsts, - &feature_flatScratchInsts, - &feature_fp64, - &feature_r128A16, + &feature_sdwaOmod, &feature_sMemrealtime, - &feature_addNoCarryInsts, - &feature_vop3p, + &feature_scalarStores, + &feature_flatAddressSpace, + &feature_vgprIndexMode, + &feature_gfx9Insts, + &feature_r128A16, &feature_fastFmaf, - &feature_BitInsts16, &feature_wavefrontsize64, - &feature_sdwa, - &feature_gfx9Insts, - &feature_flatAddressSpace, - &feature_apertureRegs, - &feature_sdwaScalar, - &feature_ciInsts, + &feature_flatScratchInsts, + &feature_sdwaSdst, + &feature_vop3p, + &feature_intClampInsts, + &feature_dpp, &feature_scalarAtomics, - &feature_scalarFlatScratchInsts, - &feature_inv2piInlineImm, - &feature_vgprIndexMode, &feature_gcn3Encoding, &feature_gfx8Insts, - &feature_scalarStores, - &feature_intClampInsts, - &feature_localmemorysize65536, - &feature_flatGlobalInsts, - &feature_sdwaOmod, - &feature_dpp, &feature_gfx7Gfx8Gfx9Insts, - &feature_sdwaSdst, + &feature_sdwa, + &feature_flatGlobalInsts, + &feature_localmemorysize65536, + &feature_BitInsts16, + &feature_addNoCarryInsts, &feature_flatInstOffsets, + &feature_sdwaScalar, + &feature_inv2piInlineImm, + &feature_apertureRegs, + &feature_fp64, + &feature_ciInsts, + &feature_scalarFlatScratchInsts, &feature_ldsbankcount32, &feature_halfRate64Ops, }, @@ -1581,36 +1684,36 @@ pub const cpu_gfx908 = Cpu{ &feature_dot5Insts, &feature_dot6Insts, &feature_fmaMixInsts, - &feature_flatScratchInsts, - &feature_fp64, - &feature_r128A16, + &feature_sdwaOmod, &feature_sMemrealtime, - &feature_addNoCarryInsts, - &feature_vop3p, + &feature_scalarStores, + &feature_flatAddressSpace, + &feature_vgprIndexMode, + &feature_gfx9Insts, + &feature_r128A16, &feature_fastFmaf, - &feature_BitInsts16, &feature_wavefrontsize64, - &feature_sdwa, - &feature_gfx9Insts, - &feature_flatAddressSpace, - &feature_apertureRegs, - &feature_sdwaScalar, - &feature_ciInsts, + &feature_flatScratchInsts, + &feature_sdwaSdst, + &feature_vop3p, + &feature_intClampInsts, + &feature_dpp, &feature_scalarAtomics, - &feature_scalarFlatScratchInsts, - &feature_inv2piInlineImm, - &feature_vgprIndexMode, &feature_gcn3Encoding, &feature_gfx8Insts, - &feature_scalarStores, - &feature_intClampInsts, - &feature_localmemorysize65536, - &feature_flatGlobalInsts, - &feature_sdwaOmod, - &feature_dpp, &feature_gfx7Gfx8Gfx9Insts, - &feature_sdwaSdst, + &feature_sdwa, + &feature_flatGlobalInsts, + &feature_localmemorysize65536, + &feature_BitInsts16, + &feature_addNoCarryInsts, &feature_flatInstOffsets, + &feature_sdwaScalar, + &feature_inv2piInlineImm, + &feature_apertureRegs, + &feature_fp64, + &feature_ciInsts, + &feature_scalarFlatScratchInsts, &feature_ldsbankcount32, &feature_maiInsts, &feature_mfmaInlineLiteralBug, @@ -1625,36 +1728,36 @@ pub const cpu_gfx909 = Cpu{ .llvm_name = "gfx909", .dependencies = &[_]*const Feature { &feature_codeObjectV3, - &feature_flatScratchInsts, - &feature_fp64, - &feature_r128A16, + &feature_sdwaOmod, &feature_sMemrealtime, - &feature_addNoCarryInsts, - &feature_vop3p, + &feature_scalarStores, + &feature_flatAddressSpace, + &feature_vgprIndexMode, + &feature_gfx9Insts, + &feature_r128A16, &feature_fastFmaf, - &feature_BitInsts16, &feature_wavefrontsize64, - &feature_sdwa, - &feature_gfx9Insts, - &feature_flatAddressSpace, - &feature_apertureRegs, - &feature_sdwaScalar, - &feature_ciInsts, + &feature_flatScratchInsts, + &feature_sdwaSdst, + &feature_vop3p, + &feature_intClampInsts, + &feature_dpp, &feature_scalarAtomics, - &feature_scalarFlatScratchInsts, - &feature_inv2piInlineImm, - &feature_vgprIndexMode, &feature_gcn3Encoding, &feature_gfx8Insts, - &feature_scalarStores, - &feature_intClampInsts, - &feature_localmemorysize65536, - &feature_flatGlobalInsts, - &feature_sdwaOmod, - &feature_dpp, &feature_gfx7Gfx8Gfx9Insts, - &feature_sdwaSdst, + &feature_sdwa, + &feature_flatGlobalInsts, + &feature_localmemorysize65536, + &feature_BitInsts16, + &feature_addNoCarryInsts, &feature_flatInstOffsets, + &feature_sdwaScalar, + &feature_inv2piInlineImm, + &feature_apertureRegs, + &feature_fp64, + &feature_ciInsts, + &feature_scalarFlatScratchInsts, &feature_ldsbankcount32, &feature_madMixInsts, &feature_xnack, @@ -1668,13 +1771,13 @@ pub const cpu_hainan = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount32, - &feature_localmemorysize32768, - &feature_fp64, - &feature_mimgR128, &feature_movrel, - &feature_noSramEccSupport, - &feature_wavefrontsize64, &feature_trigReducedRange, + &feature_mimgR128, + &feature_localmemorysize32768, + &feature_wavefrontsize64, + &feature_noSramEccSupport, + &feature_fp64, }, }; @@ -1686,16 +1789,16 @@ pub const cpu_hawaii = Cpu{ &feature_noXnackSupport, &feature_fastFmaf, &feature_ldsbankcount32, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, &feature_halfRate64Ops, }, }; @@ -1709,28 +1812,28 @@ pub const cpu_iceland = Cpu{ &feature_ldsbankcount32, &feature_sgprInitBug, &feature_unpackedD16Vmem, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, }, }; @@ -1741,16 +1844,16 @@ pub const cpu_kabini = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount16, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, }, }; @@ -1761,16 +1864,16 @@ pub const cpu_kaveri = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount32, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, }, }; @@ -1781,16 +1884,16 @@ pub const cpu_mullins = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount16, + &feature_movrel, &feature_flatAddressSpace, - &feature_fp64, - &feature_mimgR128, + &feature_trigReducedRange, &feature_gfx7Gfx8Gfx9Insts, - &feature_movrel, + &feature_wavefrontsize64, + &feature_mimgR128, + &feature_noSramEccSupport, &feature_localmemorysize65536, + &feature_fp64, &feature_ciInsts, - &feature_noSramEccSupport, - &feature_wavefrontsize64, - &feature_trigReducedRange, }, }; @@ -1801,13 +1904,13 @@ pub const cpu_oland = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount32, - &feature_localmemorysize32768, - &feature_fp64, - &feature_mimgR128, &feature_movrel, - &feature_noSramEccSupport, - &feature_wavefrontsize64, &feature_trigReducedRange, + &feature_mimgR128, + &feature_localmemorysize32768, + &feature_wavefrontsize64, + &feature_noSramEccSupport, + &feature_fp64, }, }; @@ -1818,13 +1921,13 @@ pub const cpu_pitcairn = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount32, - &feature_localmemorysize32768, - &feature_fp64, - &feature_mimgR128, &feature_movrel, - &feature_noSramEccSupport, - &feature_wavefrontsize64, &feature_trigReducedRange, + &feature_mimgR128, + &feature_localmemorysize32768, + &feature_wavefrontsize64, + &feature_noSramEccSupport, + &feature_fp64, }, }; @@ -1836,28 +1939,28 @@ pub const cpu_polaris10 = Cpu{ &feature_noXnackSupport, &feature_ldsbankcount32, &feature_unpackedD16Vmem, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, }, }; @@ -1869,28 +1972,28 @@ pub const cpu_polaris11 = Cpu{ &feature_noXnackSupport, &feature_ldsbankcount32, &feature_unpackedD16Vmem, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, }, }; @@ -1900,28 +2003,28 @@ pub const cpu_stoney = Cpu{ .dependencies = &[_]*const Feature { &feature_codeObjectV3, &feature_ldsbankcount16, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, &feature_xnack, }, }; @@ -1934,13 +2037,13 @@ pub const cpu_tahiti = Cpu{ &feature_noXnackSupport, &feature_fastFmaf, &feature_ldsbankcount32, - &feature_localmemorysize32768, - &feature_fp64, - &feature_mimgR128, &feature_movrel, - &feature_noSramEccSupport, - &feature_wavefrontsize64, &feature_trigReducedRange, + &feature_mimgR128, + &feature_localmemorysize32768, + &feature_wavefrontsize64, + &feature_noSramEccSupport, + &feature_fp64, &feature_halfRate64Ops, }, }; @@ -1954,28 +2057,28 @@ pub const cpu_tonga = Cpu{ &feature_ldsbankcount32, &feature_sgprInitBug, &feature_unpackedD16Vmem, - &feature_fp64, &feature_sMemrealtime, - &feature_BitInsts16, - &feature_wavefrontsize64, - &feature_sdwa, + &feature_scalarStores, &feature_flatAddressSpace, - &feature_sdwaMav, - &feature_mimgR128, - &feature_ciInsts, - &feature_noSramEccSupport, - &feature_inv2piInlineImm, &feature_vgprIndexMode, - &feature_gcn3Encoding, - &feature_gfx8Insts, - &feature_scalarStores, + &feature_wavefrontsize64, + &feature_mimgR128, &feature_intClampInsts, + &feature_dpp, &feature_movrel, + &feature_gcn3Encoding, + &feature_gfx8Insts, + &feature_trigReducedRange, + &feature_gfx7Gfx8Gfx9Insts, + &feature_sdwaMav, + &feature_sdwa, &feature_localmemorysize65536, + &feature_BitInsts16, &feature_sdwaOutModsVopc, - &feature_dpp, - &feature_gfx7Gfx8Gfx9Insts, - &feature_trigReducedRange, + &feature_inv2piInlineImm, + &feature_noSramEccSupport, + &feature_fp64, + &feature_ciInsts, }, }; @@ -1986,13 +2089,13 @@ pub const cpu_verde = Cpu{ &feature_codeObjectV3, &feature_noXnackSupport, &feature_ldsbankcount32, - &feature_localmemorysize32768, - &feature_fp64, - &feature_mimgR128, &feature_movrel, - &feature_noSramEccSupport, - &feature_wavefrontsize64, &feature_trigReducedRange, + &feature_mimgR128, + &feature_localmemorysize32768, + &feature_wavefrontsize64, + &feature_noSramEccSupport, + &feature_fp64, }, }; diff --git a/lib/std/target/arm.zig b/lib/std/target/arm.zig index 964b2882af..6152346468 100644 --- a/lib/std/target/arm.zig +++ b/lib/std/target/arm.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_msecext8 = Feature{ .name = "8msecext", + .llvm_name = "8msecext", .description = "Enable support for ARMv8-M Security Extensions", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_msecext8 = Feature{ pub const feature_aclass = Feature{ .name = "aclass", + .llvm_name = "aclass", .description = "Is application profile ('A' series)", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_aclass = Feature{ pub const feature_aes = Feature{ .name = "aes", + .llvm_name = "aes", .description = "Enable AES support", .dependencies = &[_]*const Feature { &feature_d32, @@ -26,6 +29,7 @@ pub const feature_aes = Feature{ pub const feature_acquireRelease = Feature{ .name = "acquire-release", + .llvm_name = "acquire-release", .description = "Has v8 acquire/release (lda/ldaex etc) instructions", .dependencies = &[_]*const Feature { }, @@ -33,6 +37,7 @@ pub const feature_acquireRelease = Feature{ pub const feature_avoidMovsShop = Feature{ .name = "avoid-movs-shop", + .llvm_name = "avoid-movs-shop", .description = "Avoid movs instructions with shifter operand", .dependencies = &[_]*const Feature { }, @@ -40,6 +45,7 @@ pub const feature_avoidMovsShop = Feature{ pub const feature_avoidPartialCpsr = Feature{ .name = "avoid-partial-cpsr", + .llvm_name = "avoid-partial-cpsr", .description = "Avoid CPSR partial update for OOO execution", .dependencies = &[_]*const Feature { }, @@ -47,6 +53,7 @@ pub const feature_avoidPartialCpsr = Feature{ pub const feature_crc = Feature{ .name = "crc", + .llvm_name = "crc", .description = "Enable support for CRC instructions", .dependencies = &[_]*const Feature { }, @@ -54,6 +61,7 @@ pub const feature_crc = Feature{ pub const feature_cheapPredicableCpsr = Feature{ .name = "cheap-predicable-cpsr", + .llvm_name = "cheap-predicable-cpsr", .description = "Disable +1 predication cost for instructions updating CPSR", .dependencies = &[_]*const Feature { }, @@ -61,6 +69,7 @@ pub const feature_cheapPredicableCpsr = Feature{ pub const feature_vldnAlign = Feature{ .name = "vldn-align", + .llvm_name = "vldn-align", .description = "Check for VLDn unaligned access", .dependencies = &[_]*const Feature { }, @@ -68,6 +77,7 @@ pub const feature_vldnAlign = Feature{ pub const feature_crypto = Feature{ .name = "crypto", + .llvm_name = "crypto", .description = "Enable support for Cryptography extensions", .dependencies = &[_]*const Feature { &feature_d32, @@ -77,6 +87,7 @@ pub const feature_crypto = Feature{ pub const feature_d32 = Feature{ .name = "d32", + .llvm_name = "d32", .description = "Extend FP to 32 double registers", .dependencies = &[_]*const Feature { }, @@ -84,6 +95,7 @@ pub const feature_d32 = Feature{ pub const feature_db = Feature{ .name = "db", + .llvm_name = "db", .description = "Has data barrier (dmb/dsb) instructions", .dependencies = &[_]*const Feature { }, @@ -91,6 +103,7 @@ pub const feature_db = Feature{ pub const feature_dfb = Feature{ .name = "dfb", + .llvm_name = "dfb", .description = "Has full data barrier (dfb) instruction", .dependencies = &[_]*const Feature { }, @@ -98,6 +111,7 @@ pub const feature_dfb = Feature{ pub const feature_dsp = Feature{ .name = "dsp", + .llvm_name = "dsp", .description = "Supports DSP instructions in ARM and/or Thumb2", .dependencies = &[_]*const Feature { }, @@ -105,6 +119,7 @@ pub const feature_dsp = Feature{ pub const feature_dontWidenVmovs = Feature{ .name = "dont-widen-vmovs", + .llvm_name = "dont-widen-vmovs", .description = "Don't widen VMOVS to VMOVD", .dependencies = &[_]*const Feature { }, @@ -112,6 +127,7 @@ pub const feature_dontWidenVmovs = Feature{ pub const feature_dotprod = Feature{ .name = "dotprod", + .llvm_name = "dotprod", .description = "Enable support for dot product instructions", .dependencies = &[_]*const Feature { &feature_d32, @@ -121,6 +137,7 @@ pub const feature_dotprod = Feature{ pub const feature_executeOnly = Feature{ .name = "execute-only", + .llvm_name = "execute-only", .description = "Enable the generation of execute only code.", .dependencies = &[_]*const Feature { }, @@ -128,6 +145,7 @@ pub const feature_executeOnly = Feature{ pub const feature_expandFpMlx = Feature{ .name = "expand-fp-mlx", + .llvm_name = "expand-fp-mlx", .description = "Expand VFP/NEON MLA/MLS instructions", .dependencies = &[_]*const Feature { }, @@ -135,6 +153,7 @@ pub const feature_expandFpMlx = Feature{ pub const feature_fp16 = Feature{ .name = "fp16", + .llvm_name = "fp16", .description = "Enable half-precision floating point", .dependencies = &[_]*const Feature { }, @@ -142,6 +161,7 @@ pub const feature_fp16 = Feature{ pub const feature_fp16fml = Feature{ .name = "fp16fml", + .llvm_name = "fp16fml", .description = "Enable full half-precision floating point fml instructions", .dependencies = &[_]*const Feature { &feature_fp16, @@ -151,6 +171,7 @@ pub const feature_fp16fml = Feature{ pub const feature_fp64 = Feature{ .name = "fp64", + .llvm_name = "fp64", .description = "Floating point unit supports double precision", .dependencies = &[_]*const Feature { &feature_fpregs, @@ -159,6 +180,7 @@ pub const feature_fp64 = Feature{ pub const feature_fpao = Feature{ .name = "fpao", + .llvm_name = "fpao", .description = "Enable fast computation of positive address offsets", .dependencies = &[_]*const Feature { }, @@ -166,16 +188,18 @@ pub const feature_fpao = Feature{ pub const feature_fpArmv8 = Feature{ .name = "fp-armv8", + .llvm_name = "fp-armv8", .description = "Enable ARMv8 FP", .dependencies = &[_]*const Feature { - &feature_fpregs, - &feature_d32, &feature_fp16, + &feature_d32, + &feature_fpregs, }, }; pub const feature_fpArmv8d16 = Feature{ .name = "fp-armv8d16", + .llvm_name = "fp-armv8d16", .description = "Enable ARMv8 FP with only 16 d-registers", .dependencies = &[_]*const Feature { &feature_fp16, @@ -185,6 +209,7 @@ pub const feature_fpArmv8d16 = Feature{ pub const feature_fpArmv8d16sp = Feature{ .name = "fp-armv8d16sp", + .llvm_name = "fp-armv8d16sp", .description = "Enable ARMv8 FP with only 16 d-registers and no double precision", .dependencies = &[_]*const Feature { &feature_fp16, @@ -194,16 +219,18 @@ pub const feature_fpArmv8d16sp = Feature{ pub const feature_fpArmv8sp = Feature{ .name = "fp-armv8sp", + .llvm_name = "fp-armv8sp", .description = "Enable ARMv8 FP with no double precision", .dependencies = &[_]*const Feature { - &feature_fpregs, - &feature_d32, &feature_fp16, + &feature_d32, + &feature_fpregs, }, }; pub const feature_fpregs = Feature{ .name = "fpregs", + .llvm_name = "fpregs", .description = "Enable FP registers", .dependencies = &[_]*const Feature { }, @@ -211,6 +238,7 @@ pub const feature_fpregs = Feature{ pub const feature_fpregs16 = Feature{ .name = "fpregs16", + .llvm_name = "fpregs16", .description = "Enable 16-bit FP registers", .dependencies = &[_]*const Feature { &feature_fpregs, @@ -219,6 +247,7 @@ pub const feature_fpregs16 = Feature{ pub const feature_fpregs64 = Feature{ .name = "fpregs64", + .llvm_name = "fpregs64", .description = "Enable 64-bit FP registers", .dependencies = &[_]*const Feature { &feature_fpregs, @@ -227,15 +256,17 @@ pub const feature_fpregs64 = Feature{ pub const feature_fullfp16 = Feature{ .name = "fullfp16", + .llvm_name = "fullfp16", .description = "Enable full half-precision floating point", .dependencies = &[_]*const Feature { - &feature_fpregs, &feature_fp16, + &feature_fpregs, }, }; pub const feature_fuseAes = Feature{ .name = "fuse-aes", + .llvm_name = "fuse-aes", .description = "CPU fuses AES crypto operations", .dependencies = &[_]*const Feature { }, @@ -243,6 +274,7 @@ pub const feature_fuseAes = Feature{ pub const feature_fuseLiterals = Feature{ .name = "fuse-literals", + .llvm_name = "fuse-literals", .description = "CPU fuses literal generation operations", .dependencies = &[_]*const Feature { }, @@ -250,6 +282,7 @@ pub const feature_fuseLiterals = Feature{ pub const feature_hwdivArm = Feature{ .name = "hwdiv-arm", + .llvm_name = "hwdiv-arm", .description = "Enable divide instructions in ARM mode", .dependencies = &[_]*const Feature { }, @@ -257,6 +290,7 @@ pub const feature_hwdivArm = Feature{ pub const feature_hwdiv = Feature{ .name = "hwdiv", + .llvm_name = "hwdiv", .description = "Enable divide instructions in Thumb", .dependencies = &[_]*const Feature { }, @@ -264,6 +298,7 @@ pub const feature_hwdiv = Feature{ pub const feature_noBranchPredictor = Feature{ .name = "no-branch-predictor", + .llvm_name = "no-branch-predictor", .description = "Has no branch predictor", .dependencies = &[_]*const Feature { }, @@ -271,6 +306,7 @@ pub const feature_noBranchPredictor = Feature{ pub const feature_retAddrStack = Feature{ .name = "ret-addr-stack", + .llvm_name = "ret-addr-stack", .description = "Has return address stack", .dependencies = &[_]*const Feature { }, @@ -278,6 +314,7 @@ pub const feature_retAddrStack = Feature{ pub const feature_slowfpvmlx = Feature{ .name = "slowfpvmlx", + .llvm_name = "slowfpvmlx", .description = "Disable VFP / NEON MAC instructions", .dependencies = &[_]*const Feature { }, @@ -285,6 +322,7 @@ pub const feature_slowfpvmlx = Feature{ pub const feature_vmlxHazards = Feature{ .name = "vmlx-hazards", + .llvm_name = "vmlx-hazards", .description = "Has VMLx hazards", .dependencies = &[_]*const Feature { }, @@ -292,6 +330,7 @@ pub const feature_vmlxHazards = Feature{ pub const feature_lob = Feature{ .name = "lob", + .llvm_name = "lob", .description = "Enable Low Overhead Branch extensions", .dependencies = &[_]*const Feature { }, @@ -299,6 +338,7 @@ pub const feature_lob = Feature{ pub const feature_longCalls = Feature{ .name = "long-calls", + .llvm_name = "long-calls", .description = "Generate calls via indirect call instructions", .dependencies = &[_]*const Feature { }, @@ -306,6 +346,7 @@ pub const feature_longCalls = Feature{ pub const feature_mclass = Feature{ .name = "mclass", + .llvm_name = "mclass", .description = "Is microcontroller profile ('M' series)", .dependencies = &[_]*const Feature { }, @@ -313,6 +354,7 @@ pub const feature_mclass = Feature{ pub const feature_mp = Feature{ .name = "mp", + .llvm_name = "mp", .description = "Supports Multiprocessing extension", .dependencies = &[_]*const Feature { }, @@ -320,6 +362,7 @@ pub const feature_mp = Feature{ pub const feature_mve1beat = Feature{ .name = "mve1beat", + .llvm_name = "mve1beat", .description = "Model MVE instructions as a 1 beat per tick architecture", .dependencies = &[_]*const Feature { }, @@ -327,6 +370,7 @@ pub const feature_mve1beat = Feature{ pub const feature_mve2beat = Feature{ .name = "mve2beat", + .llvm_name = "mve2beat", .description = "Model MVE instructions as a 2 beats per tick architecture", .dependencies = &[_]*const Feature { }, @@ -334,6 +378,7 @@ pub const feature_mve2beat = Feature{ pub const feature_mve4beat = Feature{ .name = "mve4beat", + .llvm_name = "mve4beat", .description = "Model MVE instructions as a 4 beats per tick architecture", .dependencies = &[_]*const Feature { }, @@ -341,6 +386,7 @@ pub const feature_mve4beat = Feature{ pub const feature_muxedUnits = Feature{ .name = "muxed-units", + .llvm_name = "muxed-units", .description = "Has muxed AGU and NEON/FPU", .dependencies = &[_]*const Feature { }, @@ -348,6 +394,7 @@ pub const feature_muxedUnits = Feature{ pub const feature_neon = Feature{ .name = "neon", + .llvm_name = "neon", .description = "Enable NEON instructions", .dependencies = &[_]*const Feature { &feature_d32, @@ -357,6 +404,7 @@ pub const feature_neon = Feature{ pub const feature_neonfp = Feature{ .name = "neonfp", + .llvm_name = "neonfp", .description = "Use NEON for single precision FP", .dependencies = &[_]*const Feature { }, @@ -364,6 +412,7 @@ pub const feature_neonfp = Feature{ pub const feature_neonFpmovs = Feature{ .name = "neon-fpmovs", + .llvm_name = "neon-fpmovs", .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON", .dependencies = &[_]*const Feature { }, @@ -371,6 +420,7 @@ pub const feature_neonFpmovs = Feature{ pub const feature_naclTrap = Feature{ .name = "nacl-trap", + .llvm_name = "nacl-trap", .description = "NaCl trap", .dependencies = &[_]*const Feature { }, @@ -378,6 +428,7 @@ pub const feature_naclTrap = Feature{ pub const feature_noarm = Feature{ .name = "noarm", + .llvm_name = "noarm", .description = "Does not support ARM mode execution", .dependencies = &[_]*const Feature { }, @@ -385,6 +436,7 @@ pub const feature_noarm = Feature{ pub const feature_noMovt = Feature{ .name = "no-movt", + .llvm_name = "no-movt", .description = "Don't use movt/movw pairs for 32-bit imms", .dependencies = &[_]*const Feature { }, @@ -392,6 +444,7 @@ pub const feature_noMovt = Feature{ pub const feature_noNegImmediates = Feature{ .name = "no-neg-immediates", + .llvm_name = "no-neg-immediates", .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.", .dependencies = &[_]*const Feature { }, @@ -399,6 +452,7 @@ pub const feature_noNegImmediates = Feature{ pub const feature_disablePostraScheduler = Feature{ .name = "disable-postra-scheduler", + .llvm_name = "disable-postra-scheduler", .description = "Don't schedule again after register allocation", .dependencies = &[_]*const Feature { }, @@ -406,6 +460,7 @@ pub const feature_disablePostraScheduler = Feature{ pub const feature_nonpipelinedVfp = Feature{ .name = "nonpipelined-vfp", + .llvm_name = "nonpipelined-vfp", .description = "VFP instructions are not pipelined", .dependencies = &[_]*const Feature { }, @@ -413,6 +468,7 @@ pub const feature_nonpipelinedVfp = Feature{ pub const feature_perfmon = Feature{ .name = "perfmon", + .llvm_name = "perfmon", .description = "Enable support for Performance Monitor extensions", .dependencies = &[_]*const Feature { }, @@ -420,6 +476,7 @@ pub const feature_perfmon = Feature{ pub const feature_bit32 = Feature{ .name = "32bit", + .llvm_name = "32bit", .description = "Prefer 32-bit Thumb instrs", .dependencies = &[_]*const Feature { }, @@ -427,6 +484,7 @@ pub const feature_bit32 = Feature{ pub const feature_preferIshst = Feature{ .name = "prefer-ishst", + .llvm_name = "prefer-ishst", .description = "Prefer ISHST barriers", .dependencies = &[_]*const Feature { }, @@ -434,6 +492,7 @@ pub const feature_preferIshst = Feature{ pub const feature_loopAlign = Feature{ .name = "loop-align", + .llvm_name = "loop-align", .description = "Prefer 32-bit alignment for loops", .dependencies = &[_]*const Feature { }, @@ -441,6 +500,7 @@ pub const feature_loopAlign = Feature{ pub const feature_preferVmovsr = Feature{ .name = "prefer-vmovsr", + .llvm_name = "prefer-vmovsr", .description = "Prefer VMOVSR", .dependencies = &[_]*const Feature { }, @@ -448,6 +508,7 @@ pub const feature_preferVmovsr = Feature{ pub const feature_profUnpr = Feature{ .name = "prof-unpr", + .llvm_name = "prof-unpr", .description = "Is profitable to unpredicate", .dependencies = &[_]*const Feature { }, @@ -455,6 +516,7 @@ pub const feature_profUnpr = Feature{ pub const feature_ras = Feature{ .name = "ras", + .llvm_name = "ras", .description = "Enable Reliability, Availability and Serviceability extensions", .dependencies = &[_]*const Feature { }, @@ -462,6 +524,7 @@ pub const feature_ras = Feature{ pub const feature_rclass = Feature{ .name = "rclass", + .llvm_name = "rclass", .description = "Is realtime profile ('R' series)", .dependencies = &[_]*const Feature { }, @@ -469,6 +532,7 @@ pub const feature_rclass = Feature{ pub const feature_readTpHard = Feature{ .name = "read-tp-hard", + .llvm_name = "read-tp-hard", .description = "Reading thread pointer from register", .dependencies = &[_]*const Feature { }, @@ -476,6 +540,7 @@ pub const feature_readTpHard = Feature{ pub const feature_reserveR9 = Feature{ .name = "reserve-r9", + .llvm_name = "reserve-r9", .description = "Reserve R9, making it unavailable as GPR", .dependencies = &[_]*const Feature { }, @@ -483,6 +548,7 @@ pub const feature_reserveR9 = Feature{ pub const feature_sb = Feature{ .name = "sb", + .llvm_name = "sb", .description = "Enable v8.5a Speculation Barrier", .dependencies = &[_]*const Feature { }, @@ -490,6 +556,7 @@ pub const feature_sb = Feature{ pub const feature_sha2 = Feature{ .name = "sha2", + .llvm_name = "sha2", .description = "Enable SHA1 and SHA256 support", .dependencies = &[_]*const Feature { &feature_d32, @@ -499,6 +566,7 @@ pub const feature_sha2 = Feature{ pub const feature_slowFpBrcc = Feature{ .name = "slow-fp-brcc", + .llvm_name = "slow-fp-brcc", .description = "FP compare + branch is slow", .dependencies = &[_]*const Feature { }, @@ -506,6 +574,7 @@ pub const feature_slowFpBrcc = Feature{ pub const feature_slowLoadDSubreg = Feature{ .name = "slow-load-D-subreg", + .llvm_name = "slow-load-D-subreg", .description = "Loading into D subregs is slow", .dependencies = &[_]*const Feature { }, @@ -513,6 +582,7 @@ pub const feature_slowLoadDSubreg = Feature{ pub const feature_slowOddReg = Feature{ .name = "slow-odd-reg", + .llvm_name = "slow-odd-reg", .description = "VLDM/VSTM starting with an odd register is slow", .dependencies = &[_]*const Feature { }, @@ -520,6 +590,7 @@ pub const feature_slowOddReg = Feature{ pub const feature_slowVdup32 = Feature{ .name = "slow-vdup32", + .llvm_name = "slow-vdup32", .description = "Has slow VDUP32 - prefer VMOV", .dependencies = &[_]*const Feature { }, @@ -527,6 +598,7 @@ pub const feature_slowVdup32 = Feature{ pub const feature_slowVgetlni32 = Feature{ .name = "slow-vgetlni32", + .llvm_name = "slow-vgetlni32", .description = "Has slow VGETLNi32 - prefer VMOV", .dependencies = &[_]*const Feature { }, @@ -534,6 +606,7 @@ pub const feature_slowVgetlni32 = Feature{ pub const feature_splatVfpNeon = Feature{ .name = "splat-vfp-neon", + .llvm_name = "splat-vfp-neon", .description = "Splat register from VFP to NEON", .dependencies = &[_]*const Feature { &feature_dontWidenVmovs, @@ -542,6 +615,7 @@ pub const feature_splatVfpNeon = Feature{ pub const feature_strictAlign = Feature{ .name = "strict-align", + .llvm_name = "strict-align", .description = "Disallow all unaligned memory access", .dependencies = &[_]*const Feature { }, @@ -549,6 +623,7 @@ pub const feature_strictAlign = Feature{ pub const feature_thumb2 = Feature{ .name = "thumb2", + .llvm_name = "thumb2", .description = "Enable Thumb2 instructions", .dependencies = &[_]*const Feature { }, @@ -556,6 +631,7 @@ pub const feature_thumb2 = Feature{ pub const feature_trustzone = Feature{ .name = "trustzone", + .llvm_name = "trustzone", .description = "Enable support for TrustZone security extensions", .dependencies = &[_]*const Feature { }, @@ -563,6 +639,7 @@ pub const feature_trustzone = Feature{ pub const feature_useAa = Feature{ .name = "use-aa", + .llvm_name = "use-aa", .description = "Use alias analysis during codegen", .dependencies = &[_]*const Feature { }, @@ -570,6 +647,7 @@ pub const feature_useAa = Feature{ pub const feature_useMisched = Feature{ .name = "use-misched", + .llvm_name = "use-misched", .description = "Use the MachineScheduler", .dependencies = &[_]*const Feature { }, @@ -577,6 +655,7 @@ pub const feature_useMisched = Feature{ pub const feature_wideStrideVfp = Feature{ .name = "wide-stride-vfp", + .llvm_name = "wide-stride-vfp", .description = "Use a wide stride when allocating VFP registers", .dependencies = &[_]*const Feature { }, @@ -584,6 +663,7 @@ pub const feature_wideStrideVfp = Feature{ pub const feature_v7clrex = Feature{ .name = "v7clrex", + .llvm_name = "v7clrex", .description = "Has v7 clrex instruction", .dependencies = &[_]*const Feature { }, @@ -591,6 +671,7 @@ pub const feature_v7clrex = Feature{ pub const feature_vfp2 = Feature{ .name = "vfp2", + .llvm_name = "vfp2", .description = "Enable VFP2 instructions", .dependencies = &[_]*const Feature { &feature_fpregs, @@ -599,6 +680,7 @@ pub const feature_vfp2 = Feature{ pub const feature_vfp2sp = Feature{ .name = "vfp2sp", + .llvm_name = "vfp2sp", .description = "Enable VFP2 instructions with no double precision", .dependencies = &[_]*const Feature { &feature_fpregs, @@ -607,6 +689,7 @@ pub const feature_vfp2sp = Feature{ pub const feature_vfp3 = Feature{ .name = "vfp3", + .llvm_name = "vfp3", .description = "Enable VFP3 instructions", .dependencies = &[_]*const Feature { &feature_d32, @@ -616,6 +699,7 @@ pub const feature_vfp3 = Feature{ pub const feature_vfp3d16 = Feature{ .name = "vfp3d16", + .llvm_name = "vfp3d16", .description = "Enable VFP3 instructions with only 16 d-registers", .dependencies = &[_]*const Feature { &feature_fpregs, @@ -624,6 +708,7 @@ pub const feature_vfp3d16 = Feature{ pub const feature_vfp3d16sp = Feature{ .name = "vfp3d16sp", + .llvm_name = "vfp3d16sp", .description = "Enable VFP3 instructions with only 16 d-registers and no double precision", .dependencies = &[_]*const Feature { &feature_fpregs, @@ -632,6 +717,7 @@ pub const feature_vfp3d16sp = Feature{ pub const feature_vfp3sp = Feature{ .name = "vfp3sp", + .llvm_name = "vfp3sp", .description = "Enable VFP3 instructions with no double precision", .dependencies = &[_]*const Feature { &feature_d32, @@ -641,44 +727,49 @@ pub const feature_vfp3sp = Feature{ pub const feature_vfp4 = Feature{ .name = "vfp4", + .llvm_name = "vfp4", .description = "Enable VFP4 instructions", .dependencies = &[_]*const Feature { - &feature_fpregs, - &feature_d32, &feature_fp16, + &feature_d32, + &feature_fpregs, }, }; pub const feature_vfp4d16 = Feature{ .name = "vfp4d16", + .llvm_name = "vfp4d16", .description = "Enable VFP4 instructions with only 16 d-registers", .dependencies = &[_]*const Feature { - &feature_fpregs, &feature_fp16, + &feature_fpregs, }, }; pub const feature_vfp4d16sp = Feature{ .name = "vfp4d16sp", + .llvm_name = "vfp4d16sp", .description = "Enable VFP4 instructions with only 16 d-registers and no double precision", .dependencies = &[_]*const Feature { - &feature_fpregs, &feature_fp16, + &feature_fpregs, }, }; pub const feature_vfp4sp = Feature{ .name = "vfp4sp", + .llvm_name = "vfp4sp", .description = "Enable VFP4 instructions with no double precision", .dependencies = &[_]*const Feature { - &feature_fpregs, - &feature_d32, &feature_fp16, + &feature_d32, + &feature_fpregs, }, }; pub const feature_vmlxForwarding = Feature{ .name = "vmlx-forwarding", + .llvm_name = "vmlx-forwarding", .description = "Has multiplier accumulator forwarding", .dependencies = &[_]*const Feature { }, @@ -686,6 +777,7 @@ pub const feature_vmlxForwarding = Feature{ pub const feature_virtualization = Feature{ .name = "virtualization", + .llvm_name = "virtualization", .description = "Supports Virtualization extension", .dependencies = &[_]*const Feature { &feature_hwdiv, @@ -695,6 +787,7 @@ pub const feature_virtualization = Feature{ pub const feature_zcz = Feature{ .name = "zcz", + .llvm_name = "zcz", .description = "Has zero-cycle zeroing instructions", .dependencies = &[_]*const Feature { }, @@ -854,8 +947,8 @@ pub const cpu_arm1156t2S = Cpu{ .name = "arm1156t2-s", .llvm_name = "arm1156t2-s", .dependencies = &[_]*const Feature { - &feature_thumb2, &feature_dsp, + &feature_thumb2, }, }; @@ -863,8 +956,8 @@ pub const cpu_arm1156t2fS = Cpu{ .name = "arm1156t2f-s", .llvm_name = "arm1156t2f-s", .dependencies = &[_]*const Feature { - &feature_thumb2, &feature_dsp, + &feature_thumb2, &feature_slowfpvmlx, &feature_fpregs, &feature_vfp2, @@ -1021,13 +1114,13 @@ pub const cpu_cortexA12 = Cpu{ .name = "cortex-a12", .llvm_name = "cortex-a12", .dependencies = &[_]*const Feature { - &feature_d32, + &feature_db, &feature_perfmon, &feature_fpregs, - &feature_db, - &feature_thumb2, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_thumb2, &feature_aclass, &feature_avoidPartialCpsr, &feature_retAddrStack, @@ -1046,13 +1139,13 @@ pub const cpu_cortexA15 = Cpu{ .name = "cortex-a15", .llvm_name = "cortex-a15", .dependencies = &[_]*const Feature { - &feature_d32, + &feature_db, &feature_perfmon, &feature_fpregs, - &feature_db, - &feature_thumb2, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_thumb2, &feature_aclass, &feature_avoidPartialCpsr, &feature_vldnAlign, @@ -1074,13 +1167,13 @@ pub const cpu_cortexA17 = Cpu{ .name = "cortex-a17", .llvm_name = "cortex-a17", .dependencies = &[_]*const Feature { - &feature_d32, + &feature_db, &feature_perfmon, &feature_fpregs, - &feature_db, - &feature_thumb2, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_thumb2, &feature_aclass, &feature_avoidPartialCpsr, &feature_retAddrStack, @@ -1099,20 +1192,20 @@ pub const cpu_cortexA32 = Cpu{ .name = "cortex-a32", .llvm_name = "cortex-a32", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_crypto, }, @@ -1122,20 +1215,20 @@ pub const cpu_cortexA35 = Cpu{ .name = "cortex-a35", .llvm_name = "cortex-a35", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_crypto, }, @@ -1145,13 +1238,13 @@ pub const cpu_cortexA5 = Cpu{ .name = "cortex-a5", .llvm_name = "cortex-a5", .dependencies = &[_]*const Feature { - &feature_d32, + &feature_db, &feature_perfmon, &feature_fpregs, - &feature_db, - &feature_thumb2, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_thumb2, &feature_aclass, &feature_retAddrStack, &feature_slowfpvmlx, @@ -1168,20 +1261,20 @@ pub const cpu_cortexA53 = Cpu{ .name = "cortex-a53", .llvm_name = "cortex-a53", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_crypto, &feature_fpao, @@ -1192,21 +1285,21 @@ pub const cpu_cortexA55 = Cpu{ .name = "cortex-a55", .llvm_name = "cortex-a55", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, - &feature_db, - &feature_crc, - &feature_fp16, &feature_ras, + &feature_db, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_dotprod, }, @@ -1216,20 +1309,20 @@ pub const cpu_cortexA57 = Cpu{ .name = "cortex-a57", .llvm_name = "cortex-a57", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_avoidPartialCpsr, &feature_cheapPredicableCpsr, @@ -1242,13 +1335,13 @@ pub const cpu_cortexA7 = Cpu{ .name = "cortex-a7", .llvm_name = "cortex-a7", .dependencies = &[_]*const Feature { - &feature_d32, + &feature_db, &feature_perfmon, &feature_fpregs, - &feature_db, - &feature_thumb2, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_thumb2, &feature_aclass, &feature_retAddrStack, &feature_slowfpvmlx, @@ -1269,20 +1362,20 @@ pub const cpu_cortexA72 = Cpu{ .name = "cortex-a72", .llvm_name = "cortex-a72", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_crypto, }, @@ -1292,20 +1385,20 @@ pub const cpu_cortexA73 = Cpu{ .name = "cortex-a73", .llvm_name = "cortex-a73", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_crypto, }, @@ -1315,21 +1408,21 @@ pub const cpu_cortexA75 = Cpu{ .name = "cortex-a75", .llvm_name = "cortex-a75", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, - &feature_db, - &feature_crc, - &feature_fp16, &feature_ras, + &feature_db, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_dotprod, }, @@ -1339,21 +1432,21 @@ pub const cpu_cortexA76 = Cpu{ .name = "cortex-a76", .llvm_name = "cortex-a76", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, - &feature_db, - &feature_crc, - &feature_fp16, &feature_ras, + &feature_db, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_crypto, &feature_dotprod, @@ -1365,21 +1458,21 @@ pub const cpu_cortexA76ae = Cpu{ .name = "cortex-a76ae", .llvm_name = "cortex-a76ae", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, - &feature_db, - &feature_crc, - &feature_fp16, &feature_ras, + &feature_db, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_crypto, &feature_dotprod, @@ -1391,13 +1484,13 @@ pub const cpu_cortexA8 = Cpu{ .name = "cortex-a8", .llvm_name = "cortex-a8", .dependencies = &[_]*const Feature { - &feature_d32, + &feature_db, &feature_perfmon, &feature_fpregs, - &feature_db, - &feature_thumb2, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_thumb2, &feature_aclass, &feature_retAddrStack, &feature_slowfpvmlx, @@ -1413,13 +1506,13 @@ pub const cpu_cortexA9 = Cpu{ .name = "cortex-a9", .llvm_name = "cortex-a9", .dependencies = &[_]*const Feature { - &feature_d32, + &feature_db, &feature_perfmon, &feature_fpregs, - &feature_db, - &feature_thumb2, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_thumb2, &feature_aclass, &feature_avoidPartialCpsr, &feature_vldnAlign, @@ -1441,9 +1534,9 @@ pub const cpu_cortexM0 = Cpu{ .llvm_name = "cortex-m0", .dependencies = &[_]*const Feature { &feature_db, - &feature_mclass, &feature_strictAlign, &feature_noarm, + &feature_mclass, }, }; @@ -1452,9 +1545,9 @@ pub const cpu_cortexM0plus = Cpu{ .llvm_name = "cortex-m0plus", .dependencies = &[_]*const Feature { &feature_db, - &feature_mclass, &feature_strictAlign, &feature_noarm, + &feature_mclass, }, }; @@ -1463,9 +1556,9 @@ pub const cpu_cortexM1 = Cpu{ .llvm_name = "cortex-m1", .dependencies = &[_]*const Feature { &feature_db, - &feature_mclass, &feature_strictAlign, &feature_noarm, + &feature_mclass, }, }; @@ -1473,14 +1566,14 @@ pub const cpu_cortexM23 = Cpu{ .name = "cortex-m23", .llvm_name = "cortex-m23", .dependencies = &[_]*const Feature { - &feature_mclass, &feature_db, - &feature_msecext8, &feature_strictAlign, &feature_acquireRelease, - &feature_hwdiv, &feature_v7clrex, &feature_noarm, + &feature_mclass, + &feature_hwdiv, + &feature_msecext8, &feature_noMovt, }, }; @@ -1489,13 +1582,13 @@ pub const cpu_cortexM3 = Cpu{ .name = "cortex-m3", .llvm_name = "cortex-m3", .dependencies = &[_]*const Feature { - &feature_perfmon, &feature_db, - &feature_mclass, - &feature_thumb2, - &feature_hwdiv, + &feature_perfmon, &feature_v7clrex, &feature_noarm, + &feature_mclass, + &feature_hwdiv, + &feature_thumb2, &feature_noBranchPredictor, &feature_loopAlign, &feature_useAa, @@ -1507,15 +1600,15 @@ pub const cpu_cortexM33 = Cpu{ .name = "cortex-m33", .llvm_name = "cortex-m33", .dependencies = &[_]*const Feature { - &feature_perfmon, - &feature_mclass, &feature_db, - &feature_msecext8, - &feature_thumb2, + &feature_perfmon, &feature_acquireRelease, - &feature_hwdiv, &feature_v7clrex, &feature_noarm, + &feature_mclass, + &feature_hwdiv, + &feature_thumb2, + &feature_msecext8, &feature_dsp, &feature_fp16, &feature_fpregs, @@ -1532,15 +1625,15 @@ pub const cpu_cortexM35p = Cpu{ .name = "cortex-m35p", .llvm_name = "cortex-m35p", .dependencies = &[_]*const Feature { - &feature_perfmon, - &feature_mclass, &feature_db, - &feature_msecext8, - &feature_thumb2, + &feature_perfmon, &feature_acquireRelease, - &feature_hwdiv, &feature_v7clrex, &feature_noarm, + &feature_mclass, + &feature_hwdiv, + &feature_thumb2, + &feature_msecext8, &feature_dsp, &feature_fp16, &feature_fpregs, @@ -1557,21 +1650,21 @@ pub const cpu_cortexM4 = Cpu{ .name = "cortex-m4", .llvm_name = "cortex-m4", .dependencies = &[_]*const Feature { - &feature_perfmon, &feature_db, - &feature_mclass, - &feature_thumb2, - &feature_hwdiv, + &feature_perfmon, &feature_v7clrex, &feature_dsp, &feature_noarm, + &feature_mclass, + &feature_hwdiv, + &feature_thumb2, &feature_noBranchPredictor, &feature_slowfpvmlx, &feature_loopAlign, &feature_useAa, &feature_useMisched, - &feature_fpregs, &feature_fp16, + &feature_fpregs, &feature_vfp4d16sp, }, }; @@ -1580,14 +1673,14 @@ pub const cpu_cortexM7 = Cpu{ .name = "cortex-m7", .llvm_name = "cortex-m7", .dependencies = &[_]*const Feature { - &feature_perfmon, &feature_db, - &feature_mclass, - &feature_thumb2, - &feature_hwdiv, + &feature_perfmon, &feature_v7clrex, &feature_dsp, &feature_noarm, + &feature_mclass, + &feature_hwdiv, + &feature_thumb2, &feature_fp16, &feature_fpregs, &feature_fpArmv8d16, @@ -1598,13 +1691,13 @@ pub const cpu_cortexR4 = Cpu{ .name = "cortex-r4", .llvm_name = "cortex-r4", .dependencies = &[_]*const Feature { - &feature_perfmon, &feature_db, - &feature_thumb2, + &feature_perfmon, &feature_rclass, - &feature_hwdiv, &feature_v7clrex, &feature_dsp, + &feature_hwdiv, + &feature_thumb2, &feature_avoidPartialCpsr, &feature_retAddrStack, }, @@ -1614,13 +1707,13 @@ pub const cpu_cortexR4f = Cpu{ .name = "cortex-r4f", .llvm_name = "cortex-r4f", .dependencies = &[_]*const Feature { - &feature_perfmon, &feature_db, - &feature_thumb2, + &feature_perfmon, &feature_rclass, - &feature_hwdiv, &feature_v7clrex, &feature_dsp, + &feature_hwdiv, + &feature_thumb2, &feature_avoidPartialCpsr, &feature_retAddrStack, &feature_slowfpvmlx, @@ -1634,13 +1727,13 @@ pub const cpu_cortexR5 = Cpu{ .name = "cortex-r5", .llvm_name = "cortex-r5", .dependencies = &[_]*const Feature { - &feature_perfmon, &feature_db, - &feature_thumb2, + &feature_perfmon, &feature_rclass, - &feature_hwdiv, &feature_v7clrex, &feature_dsp, + &feature_hwdiv, + &feature_thumb2, &feature_avoidPartialCpsr, &feature_hwdivArm, &feature_retAddrStack, @@ -1655,21 +1748,21 @@ pub const cpu_cortexR52 = Cpu{ .name = "cortex-r52", .llvm_name = "cortex-r52", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, &feature_perfmon, - &feature_thumb2, + &feature_fpregs, &feature_rclass, - &feature_mp, &feature_acquireRelease, - &feature_hwdiv, + &feature_mp, + &feature_d32, &feature_v7clrex, - &feature_dfb, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, + &feature_dfb, &feature_fpao, &feature_useAa, &feature_useMisched, @@ -1680,13 +1773,13 @@ pub const cpu_cortexR7 = Cpu{ .name = "cortex-r7", .llvm_name = "cortex-r7", .dependencies = &[_]*const Feature { - &feature_perfmon, &feature_db, - &feature_thumb2, + &feature_perfmon, &feature_rclass, - &feature_hwdiv, &feature_v7clrex, &feature_dsp, + &feature_hwdiv, + &feature_thumb2, &feature_avoidPartialCpsr, &feature_fp16, &feature_hwdivArm, @@ -1703,13 +1796,13 @@ pub const cpu_cortexR8 = Cpu{ .name = "cortex-r8", .llvm_name = "cortex-r8", .dependencies = &[_]*const Feature { - &feature_perfmon, &feature_db, - &feature_thumb2, + &feature_perfmon, &feature_rclass, - &feature_hwdiv, &feature_v7clrex, &feature_dsp, + &feature_hwdiv, + &feature_thumb2, &feature_avoidPartialCpsr, &feature_fp16, &feature_hwdivArm, @@ -1726,20 +1819,20 @@ pub const cpu_cyclone = Cpu{ .name = "cyclone", .llvm_name = "cyclone", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_avoidMovsShop, &feature_avoidPartialCpsr, @@ -1765,33 +1858,33 @@ pub const cpu_exynosM1 = Cpu{ .name = "exynos-m1", .llvm_name = "exynos-m1", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, + &feature_expandFpMlx, &feature_fuseLiterals, - &feature_profUnpr, + &feature_fuseAes, + &feature_slowVgetlni32, &feature_wideStrideVfp, + &feature_profUnpr, &feature_slowVdup32, - &feature_slowVgetlni32, + &feature_slowfpvmlx, &feature_dontWidenVmovs, - &feature_fuseAes, + &feature_useAa, &feature_retAddrStack, - &feature_expandFpMlx, &feature_zcz, - &feature_useAa, - &feature_slowfpvmlx, &feature_slowFpBrcc, }, }; @@ -1800,33 +1893,33 @@ pub const cpu_exynosM2 = Cpu{ .name = "exynos-m2", .llvm_name = "exynos-m2", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, + &feature_expandFpMlx, &feature_fuseLiterals, - &feature_profUnpr, + &feature_fuseAes, + &feature_slowVgetlni32, &feature_wideStrideVfp, + &feature_profUnpr, &feature_slowVdup32, - &feature_slowVgetlni32, + &feature_slowfpvmlx, &feature_dontWidenVmovs, - &feature_fuseAes, + &feature_useAa, &feature_retAddrStack, - &feature_expandFpMlx, &feature_zcz, - &feature_useAa, - &feature_slowfpvmlx, &feature_slowFpBrcc, }, }; @@ -1835,33 +1928,33 @@ pub const cpu_exynosM3 = Cpu{ .name = "exynos-m3", .llvm_name = "exynos-m3", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, + &feature_expandFpMlx, &feature_fuseLiterals, - &feature_profUnpr, + &feature_fuseAes, + &feature_slowVgetlni32, &feature_wideStrideVfp, + &feature_profUnpr, &feature_slowVdup32, - &feature_slowVgetlni32, + &feature_slowfpvmlx, &feature_dontWidenVmovs, - &feature_fuseAes, + &feature_useAa, &feature_retAddrStack, - &feature_expandFpMlx, &feature_zcz, - &feature_useAa, - &feature_slowfpvmlx, &feature_slowFpBrcc, }, }; @@ -1870,36 +1963,36 @@ pub const cpu_exynosM4 = Cpu{ .name = "exynos-m4", .llvm_name = "exynos-m4", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, - &feature_db, - &feature_crc, - &feature_fp16, &feature_ras, + &feature_db, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_dotprod, &feature_fullfp16, + &feature_expandFpMlx, &feature_fuseLiterals, - &feature_profUnpr, + &feature_fuseAes, + &feature_slowVgetlni32, &feature_wideStrideVfp, + &feature_profUnpr, &feature_slowVdup32, - &feature_slowVgetlni32, + &feature_slowfpvmlx, &feature_dontWidenVmovs, - &feature_fuseAes, + &feature_useAa, &feature_retAddrStack, - &feature_expandFpMlx, &feature_zcz, - &feature_useAa, - &feature_slowfpvmlx, &feature_slowFpBrcc, }, }; @@ -1908,36 +2001,36 @@ pub const cpu_exynosM5 = Cpu{ .name = "exynos-m5", .llvm_name = "exynos-m5", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, - &feature_db, - &feature_crc, - &feature_fp16, &feature_ras, + &feature_db, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_dotprod, &feature_fullfp16, + &feature_expandFpMlx, &feature_fuseLiterals, - &feature_profUnpr, + &feature_fuseAes, + &feature_slowVgetlni32, &feature_wideStrideVfp, + &feature_profUnpr, &feature_slowVdup32, - &feature_slowVgetlni32, + &feature_slowfpvmlx, &feature_dontWidenVmovs, - &feature_fuseAes, + &feature_useAa, &feature_retAddrStack, - &feature_expandFpMlx, &feature_zcz, - &feature_useAa, - &feature_slowfpvmlx, &feature_slowFpBrcc, }, }; @@ -1960,13 +2053,13 @@ pub const cpu_krait = Cpu{ .name = "krait", .llvm_name = "krait", .dependencies = &[_]*const Feature { - &feature_d32, + &feature_db, &feature_perfmon, &feature_fpregs, - &feature_db, - &feature_thumb2, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_thumb2, &feature_aclass, &feature_avoidPartialCpsr, &feature_vldnAlign, @@ -1984,20 +2077,20 @@ pub const cpu_kryo = Cpu{ .name = "kryo", .llvm_name = "kryo", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, &feature_db, - &feature_crc, - &feature_fp16, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_crypto, }, @@ -2024,21 +2117,21 @@ pub const cpu_neoverseN1 = Cpu{ .name = "neoverse-n1", .llvm_name = "neoverse-n1", .dependencies = &[_]*const Feature { - &feature_d32, - &feature_hwdivArm, - &feature_fpregs, - &feature_db, - &feature_crc, - &feature_fp16, &feature_ras, + &feature_db, + &feature_trustzone, &feature_perfmon, - &feature_thumb2, - &feature_mp, + &feature_fpregs, &feature_acquireRelease, - &feature_hwdiv, - &feature_trustzone, + &feature_mp, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_crc, + &feature_fp16, + &feature_hwdiv, + &feature_hwdivArm, + &feature_thumb2, &feature_aclass, &feature_crypto, &feature_dotprod, @@ -2050,9 +2143,9 @@ pub const cpu_sc000 = Cpu{ .llvm_name = "sc000", .dependencies = &[_]*const Feature { &feature_db, - &feature_mclass, &feature_strictAlign, &feature_noarm, + &feature_mclass, }, }; @@ -2060,13 +2153,13 @@ pub const cpu_sc300 = Cpu{ .name = "sc300", .llvm_name = "sc300", .dependencies = &[_]*const Feature { - &feature_perfmon, &feature_db, - &feature_mclass, - &feature_thumb2, - &feature_hwdiv, + &feature_perfmon, &feature_v7clrex, &feature_noarm, + &feature_mclass, + &feature_hwdiv, + &feature_thumb2, &feature_noBranchPredictor, &feature_useAa, &feature_useMisched, @@ -2105,13 +2198,13 @@ pub const cpu_swift = Cpu{ .name = "swift", .llvm_name = "swift", .dependencies = &[_]*const Feature { - &feature_d32, + &feature_db, &feature_perfmon, &feature_fpregs, - &feature_db, - &feature_thumb2, + &feature_d32, &feature_v7clrex, &feature_dsp, + &feature_thumb2, &feature_aclass, &feature_avoidMovsShop, &feature_avoidPartialCpsr, diff --git a/lib/std/target/avr.zig b/lib/std/target/avr.zig index de44399cea..ac5c8f1711 100644 --- a/lib/std/target/avr.zig +++ b/lib/std/target/avr.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_addsubiw = Feature{ .name = "addsubiw", + .llvm_name = "addsubiw", .description = "Enable 16-bit register-immediate addition and subtraction instructions", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_addsubiw = Feature{ pub const feature_break = Feature{ .name = "break", + .llvm_name = "break", .description = "The device supports the `BREAK` debugging instruction", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_break = Feature{ pub const feature_des = Feature{ .name = "des", + .llvm_name = "des", .description = "The device supports the `DES k` encryption instruction", .dependencies = &[_]*const Feature { }, @@ -24,6 +27,7 @@ pub const feature_des = Feature{ pub const feature_eijmpcall = Feature{ .name = "eijmpcall", + .llvm_name = "eijmpcall", .description = "The device supports the `EIJMP`/`EICALL` instructions", .dependencies = &[_]*const Feature { }, @@ -31,6 +35,7 @@ pub const feature_eijmpcall = Feature{ pub const feature_elpm = Feature{ .name = "elpm", + .llvm_name = "elpm", .description = "The device supports the ELPM instruction", .dependencies = &[_]*const Feature { }, @@ -38,6 +43,7 @@ pub const feature_elpm = Feature{ pub const feature_elpmx = Feature{ .name = "elpmx", + .llvm_name = "elpmx", .description = "The device supports the `ELPM Rd, Z[+]` instructions", .dependencies = &[_]*const Feature { }, @@ -45,6 +51,7 @@ pub const feature_elpmx = Feature{ pub const feature_ijmpcall = Feature{ .name = "ijmpcall", + .llvm_name = "ijmpcall", .description = "The device supports `IJMP`/`ICALL`instructions", .dependencies = &[_]*const Feature { }, @@ -52,6 +59,7 @@ pub const feature_ijmpcall = Feature{ pub const feature_jmpcall = Feature{ .name = "jmpcall", + .llvm_name = "jmpcall", .description = "The device supports the `JMP` and `CALL` instructions", .dependencies = &[_]*const Feature { }, @@ -59,6 +67,7 @@ pub const feature_jmpcall = Feature{ pub const feature_lpm = Feature{ .name = "lpm", + .llvm_name = "lpm", .description = "The device supports the `LPM` instruction", .dependencies = &[_]*const Feature { }, @@ -66,6 +75,7 @@ pub const feature_lpm = Feature{ pub const feature_lpmx = Feature{ .name = "lpmx", + .llvm_name = "lpmx", .description = "The device supports the `LPM Rd, Z[+]` instruction", .dependencies = &[_]*const Feature { }, @@ -73,6 +83,7 @@ pub const feature_lpmx = Feature{ pub const feature_movw = Feature{ .name = "movw", + .llvm_name = "movw", .description = "The device supports the 16-bit MOVW instruction", .dependencies = &[_]*const Feature { }, @@ -80,6 +91,7 @@ pub const feature_movw = Feature{ pub const feature_mul = Feature{ .name = "mul", + .llvm_name = "mul", .description = "The device supports the multiplication instructions", .dependencies = &[_]*const Feature { }, @@ -87,6 +99,7 @@ pub const feature_mul = Feature{ pub const feature_rmw = Feature{ .name = "rmw", + .llvm_name = "rmw", .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT", .dependencies = &[_]*const Feature { }, @@ -94,6 +107,7 @@ pub const feature_rmw = Feature{ pub const feature_spm = Feature{ .name = "spm", + .llvm_name = "spm", .description = "The device supports the `SPM` instruction", .dependencies = &[_]*const Feature { }, @@ -101,6 +115,7 @@ pub const feature_spm = Feature{ pub const feature_spmx = Feature{ .name = "spmx", + .llvm_name = "spmx", .description = "The device supports the `SPM Z+` instruction", .dependencies = &[_]*const Feature { }, @@ -108,6 +123,7 @@ pub const feature_spmx = Feature{ pub const feature_sram = Feature{ .name = "sram", + .llvm_name = "sram", .description = "The device has random access memory", .dependencies = &[_]*const Feature { }, @@ -115,6 +131,7 @@ pub const feature_sram = Feature{ pub const feature_smallstack = Feature{ .name = "smallstack", + .llvm_name = "smallstack", .description = "The device has an 8-bit stack pointer", .dependencies = &[_]*const Feature { }, @@ -122,6 +139,7 @@ pub const feature_smallstack = Feature{ pub const feature_tinyencoding = Feature{ .name = "tinyencoding", + .llvm_name = "tinyencoding", .description = "The device has Tiny core specific instruction encodings", .dependencies = &[_]*const Feature { }, @@ -152,12 +170,12 @@ pub const cpu_at43usb320 = Cpu{ .name = "at43usb320", .llvm_name = "at43usb320", .dependencies = &[_]*const Feature { - &feature_elpm, - &feature_lpm, - &feature_ijmpcall, &feature_sram, &feature_jmpcall, + &feature_elpm, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -165,11 +183,11 @@ pub const cpu_at43usb355 = Cpu{ .name = "at43usb355", .llvm_name = "at43usb355", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, &feature_jmpcall, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -177,11 +195,11 @@ pub const cpu_at76c711 = Cpu{ .name = "at76c711", .llvm_name = "at76c711", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, &feature_jmpcall, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -189,10 +207,10 @@ pub const cpu_at86rf401 = Cpu{ .name = "at86rf401", .llvm_name = "at86rf401", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, &feature_lpmx, &feature_movw, }, @@ -202,10 +220,10 @@ pub const cpu_at90c8534 = Cpu{ .name = "at90c8534", .llvm_name = "at90c8534", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -213,18 +231,18 @@ pub const cpu_at90can128 = Cpu{ .name = "at90can128", .llvm_name = "at90can128", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -232,16 +250,16 @@ pub const cpu_at90can32 = Cpu{ .name = "at90can32", .llvm_name = "at90can32", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -249,16 +267,16 @@ pub const cpu_at90can64 = Cpu{ .name = "at90can64", .llvm_name = "at90can64", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -266,15 +284,15 @@ pub const cpu_at90pwm1 = Cpu{ .name = "at90pwm1", .llvm_name = "at90pwm1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -282,16 +300,16 @@ pub const cpu_at90pwm161 = Cpu{ .name = "at90pwm161", .llvm_name = "at90pwm161", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -299,15 +317,15 @@ pub const cpu_at90pwm2 = Cpu{ .name = "at90pwm2", .llvm_name = "at90pwm2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -315,16 +333,16 @@ pub const cpu_at90pwm216 = Cpu{ .name = "at90pwm216", .llvm_name = "at90pwm216", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -332,15 +350,15 @@ pub const cpu_at90pwm2b = Cpu{ .name = "at90pwm2b", .llvm_name = "at90pwm2b", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -348,15 +366,15 @@ pub const cpu_at90pwm3 = Cpu{ .name = "at90pwm3", .llvm_name = "at90pwm3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -364,16 +382,16 @@ pub const cpu_at90pwm316 = Cpu{ .name = "at90pwm316", .llvm_name = "at90pwm316", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -381,15 +399,15 @@ pub const cpu_at90pwm3b = Cpu{ .name = "at90pwm3b", .llvm_name = "at90pwm3b", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -397,15 +415,15 @@ pub const cpu_at90pwm81 = Cpu{ .name = "at90pwm81", .llvm_name = "at90pwm81", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -420,10 +438,10 @@ pub const cpu_at90s2313 = Cpu{ .name = "at90s2313", .llvm_name = "at90s2313", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -431,10 +449,10 @@ pub const cpu_at90s2323 = Cpu{ .name = "at90s2323", .llvm_name = "at90s2323", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -442,10 +460,10 @@ pub const cpu_at90s2333 = Cpu{ .name = "at90s2333", .llvm_name = "at90s2333", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -453,10 +471,10 @@ pub const cpu_at90s2343 = Cpu{ .name = "at90s2343", .llvm_name = "at90s2343", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -464,10 +482,10 @@ pub const cpu_at90s4414 = Cpu{ .name = "at90s4414", .llvm_name = "at90s4414", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -475,10 +493,10 @@ pub const cpu_at90s4433 = Cpu{ .name = "at90s4433", .llvm_name = "at90s4433", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -486,10 +504,10 @@ pub const cpu_at90s4434 = Cpu{ .name = "at90s4434", .llvm_name = "at90s4434", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -497,10 +515,10 @@ pub const cpu_at90s8515 = Cpu{ .name = "at90s8515", .llvm_name = "at90s8515", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -508,10 +526,10 @@ pub const cpu_at90s8535 = Cpu{ .name = "at90s8535", .llvm_name = "at90s8535", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -519,16 +537,16 @@ pub const cpu_at90scr100 = Cpu{ .name = "at90scr100", .llvm_name = "at90scr100", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -536,18 +554,18 @@ pub const cpu_at90usb1286 = Cpu{ .name = "at90usb1286", .llvm_name = "at90usb1286", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -555,18 +573,18 @@ pub const cpu_at90usb1287 = Cpu{ .name = "at90usb1287", .llvm_name = "at90usb1287", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -574,15 +592,15 @@ pub const cpu_at90usb162 = Cpu{ .name = "at90usb162", .llvm_name = "at90usb162", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, &feature_movw, - &feature_addsubiw, }, }; @@ -590,16 +608,16 @@ pub const cpu_at90usb646 = Cpu{ .name = "at90usb646", .llvm_name = "at90usb646", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -607,16 +625,16 @@ pub const cpu_at90usb647 = Cpu{ .name = "at90usb647", .llvm_name = "at90usb647", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -624,15 +642,15 @@ pub const cpu_at90usb82 = Cpu{ .name = "at90usb82", .llvm_name = "at90usb82", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, &feature_movw, - &feature_addsubiw, }, }; @@ -640,11 +658,11 @@ pub const cpu_at94k = Cpu{ .name = "at94k", .llvm_name = "at94k", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, &feature_jmpcall, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, &feature_lpmx, &feature_movw, &feature_mul, @@ -655,14 +673,14 @@ pub const cpu_ata5272 = Cpu{ .name = "ata5272", .llvm_name = "ata5272", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -670,15 +688,15 @@ pub const cpu_ata5505 = Cpu{ .name = "ata5505", .llvm_name = "ata5505", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, &feature_movw, - &feature_addsubiw, }, }; @@ -686,16 +704,16 @@ pub const cpu_ata5790 = Cpu{ .name = "ata5790", .llvm_name = "ata5790", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -703,16 +721,16 @@ pub const cpu_ata5795 = Cpu{ .name = "ata5795", .llvm_name = "ata5795", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -720,15 +738,15 @@ pub const cpu_ata6285 = Cpu{ .name = "ata6285", .llvm_name = "ata6285", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -736,15 +754,15 @@ pub const cpu_ata6286 = Cpu{ .name = "ata6286", .llvm_name = "ata6286", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -752,15 +770,15 @@ pub const cpu_ata6289 = Cpu{ .name = "ata6289", .llvm_name = "ata6289", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -768,12 +786,12 @@ pub const cpu_atmega103 = Cpu{ .name = "atmega103", .llvm_name = "atmega103", .dependencies = &[_]*const Feature { - &feature_elpm, - &feature_lpm, - &feature_ijmpcall, &feature_sram, &feature_jmpcall, + &feature_elpm, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -781,18 +799,18 @@ pub const cpu_atmega128 = Cpu{ .name = "atmega128", .llvm_name = "atmega128", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -800,18 +818,18 @@ pub const cpu_atmega1280 = Cpu{ .name = "atmega1280", .llvm_name = "atmega1280", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -819,18 +837,18 @@ pub const cpu_atmega1281 = Cpu{ .name = "atmega1281", .llvm_name = "atmega1281", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -838,18 +856,18 @@ pub const cpu_atmega1284 = Cpu{ .name = "atmega1284", .llvm_name = "atmega1284", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -857,18 +875,18 @@ pub const cpu_atmega1284p = Cpu{ .name = "atmega1284p", .llvm_name = "atmega1284p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -876,18 +894,18 @@ pub const cpu_atmega1284rfr2 = Cpu{ .name = "atmega1284rfr2", .llvm_name = "atmega1284rfr2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -895,18 +913,18 @@ pub const cpu_atmega128a = Cpu{ .name = "atmega128a", .llvm_name = "atmega128a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -914,18 +932,18 @@ pub const cpu_atmega128rfa1 = Cpu{ .name = "atmega128rfa1", .llvm_name = "atmega128rfa1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -933,18 +951,18 @@ pub const cpu_atmega128rfr2 = Cpu{ .name = "atmega128rfr2", .llvm_name = "atmega128rfr2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -952,16 +970,16 @@ pub const cpu_atmega16 = Cpu{ .name = "atmega16", .llvm_name = "atmega16", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -969,11 +987,11 @@ pub const cpu_atmega161 = Cpu{ .name = "atmega161", .llvm_name = "atmega161", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, &feature_jmpcall, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, &feature_lpmx, &feature_movw, &feature_mul, @@ -985,16 +1003,16 @@ pub const cpu_atmega162 = Cpu{ .name = "atmega162", .llvm_name = "atmega162", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1002,11 +1020,11 @@ pub const cpu_atmega163 = Cpu{ .name = "atmega163", .llvm_name = "atmega163", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, &feature_jmpcall, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, &feature_lpmx, &feature_movw, &feature_mul, @@ -1018,16 +1036,16 @@ pub const cpu_atmega164a = Cpu{ .name = "atmega164a", .llvm_name = "atmega164a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1035,16 +1053,16 @@ pub const cpu_atmega164p = Cpu{ .name = "atmega164p", .llvm_name = "atmega164p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1052,16 +1070,16 @@ pub const cpu_atmega164pa = Cpu{ .name = "atmega164pa", .llvm_name = "atmega164pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1069,16 +1087,16 @@ pub const cpu_atmega165 = Cpu{ .name = "atmega165", .llvm_name = "atmega165", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1086,16 +1104,16 @@ pub const cpu_atmega165a = Cpu{ .name = "atmega165a", .llvm_name = "atmega165a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1103,16 +1121,16 @@ pub const cpu_atmega165p = Cpu{ .name = "atmega165p", .llvm_name = "atmega165p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1120,16 +1138,16 @@ pub const cpu_atmega165pa = Cpu{ .name = "atmega165pa", .llvm_name = "atmega165pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1137,16 +1155,16 @@ pub const cpu_atmega168 = Cpu{ .name = "atmega168", .llvm_name = "atmega168", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1154,16 +1172,16 @@ pub const cpu_atmega168a = Cpu{ .name = "atmega168a", .llvm_name = "atmega168a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1171,16 +1189,16 @@ pub const cpu_atmega168p = Cpu{ .name = "atmega168p", .llvm_name = "atmega168p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1188,16 +1206,16 @@ pub const cpu_atmega168pa = Cpu{ .name = "atmega168pa", .llvm_name = "atmega168pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1205,16 +1223,16 @@ pub const cpu_atmega169 = Cpu{ .name = "atmega169", .llvm_name = "atmega169", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1222,16 +1240,16 @@ pub const cpu_atmega169a = Cpu{ .name = "atmega169a", .llvm_name = "atmega169a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1239,16 +1257,16 @@ pub const cpu_atmega169p = Cpu{ .name = "atmega169p", .llvm_name = "atmega169p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1256,16 +1274,16 @@ pub const cpu_atmega169pa = Cpu{ .name = "atmega169pa", .llvm_name = "atmega169pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1273,16 +1291,16 @@ pub const cpu_atmega16a = Cpu{ .name = "atmega16a", .llvm_name = "atmega16a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1290,16 +1308,16 @@ pub const cpu_atmega16hva = Cpu{ .name = "atmega16hva", .llvm_name = "atmega16hva", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1307,16 +1325,16 @@ pub const cpu_atmega16hva2 = Cpu{ .name = "atmega16hva2", .llvm_name = "atmega16hva2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1324,16 +1342,16 @@ pub const cpu_atmega16hvb = Cpu{ .name = "atmega16hvb", .llvm_name = "atmega16hvb", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1341,16 +1359,16 @@ pub const cpu_atmega16hvbrevb = Cpu{ .name = "atmega16hvbrevb", .llvm_name = "atmega16hvbrevb", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1358,16 +1376,16 @@ pub const cpu_atmega16m1 = Cpu{ .name = "atmega16m1", .llvm_name = "atmega16m1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1375,15 +1393,15 @@ pub const cpu_atmega16u2 = Cpu{ .name = "atmega16u2", .llvm_name = "atmega16u2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, &feature_movw, - &feature_addsubiw, }, }; @@ -1391,16 +1409,16 @@ pub const cpu_atmega16u4 = Cpu{ .name = "atmega16u4", .llvm_name = "atmega16u4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1408,18 +1426,18 @@ pub const cpu_atmega2560 = Cpu{ .name = "atmega2560", .llvm_name = "atmega2560", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_break, - &feature_jmpcall, - &feature_mul, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -1427,18 +1445,18 @@ pub const cpu_atmega2561 = Cpu{ .name = "atmega2561", .llvm_name = "atmega2561", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_break, - &feature_jmpcall, - &feature_mul, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -1446,18 +1464,18 @@ pub const cpu_atmega2564rfr2 = Cpu{ .name = "atmega2564rfr2", .llvm_name = "atmega2564rfr2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_break, - &feature_jmpcall, - &feature_mul, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -1465,18 +1483,18 @@ pub const cpu_atmega256rfr2 = Cpu{ .name = "atmega256rfr2", .llvm_name = "atmega256rfr2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_break, - &feature_jmpcall, - &feature_mul, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -1484,16 +1502,16 @@ pub const cpu_atmega32 = Cpu{ .name = "atmega32", .llvm_name = "atmega32", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1501,16 +1519,16 @@ pub const cpu_atmega323 = Cpu{ .name = "atmega323", .llvm_name = "atmega323", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1518,16 +1536,16 @@ pub const cpu_atmega324a = Cpu{ .name = "atmega324a", .llvm_name = "atmega324a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1535,16 +1553,16 @@ pub const cpu_atmega324p = Cpu{ .name = "atmega324p", .llvm_name = "atmega324p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1552,16 +1570,16 @@ pub const cpu_atmega324pa = Cpu{ .name = "atmega324pa", .llvm_name = "atmega324pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1569,16 +1587,16 @@ pub const cpu_atmega325 = Cpu{ .name = "atmega325", .llvm_name = "atmega325", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1586,16 +1604,16 @@ pub const cpu_atmega3250 = Cpu{ .name = "atmega3250", .llvm_name = "atmega3250", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1603,16 +1621,16 @@ pub const cpu_atmega3250a = Cpu{ .name = "atmega3250a", .llvm_name = "atmega3250a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1620,16 +1638,16 @@ pub const cpu_atmega3250p = Cpu{ .name = "atmega3250p", .llvm_name = "atmega3250p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1637,16 +1655,16 @@ pub const cpu_atmega3250pa = Cpu{ .name = "atmega3250pa", .llvm_name = "atmega3250pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1654,16 +1672,16 @@ pub const cpu_atmega325a = Cpu{ .name = "atmega325a", .llvm_name = "atmega325a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1671,16 +1689,16 @@ pub const cpu_atmega325p = Cpu{ .name = "atmega325p", .llvm_name = "atmega325p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1688,16 +1706,16 @@ pub const cpu_atmega325pa = Cpu{ .name = "atmega325pa", .llvm_name = "atmega325pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1705,16 +1723,16 @@ pub const cpu_atmega328 = Cpu{ .name = "atmega328", .llvm_name = "atmega328", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1722,16 +1740,16 @@ pub const cpu_atmega328p = Cpu{ .name = "atmega328p", .llvm_name = "atmega328p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1739,16 +1757,16 @@ pub const cpu_atmega329 = Cpu{ .name = "atmega329", .llvm_name = "atmega329", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1756,16 +1774,16 @@ pub const cpu_atmega3290 = Cpu{ .name = "atmega3290", .llvm_name = "atmega3290", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1773,16 +1791,16 @@ pub const cpu_atmega3290a = Cpu{ .name = "atmega3290a", .llvm_name = "atmega3290a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1790,16 +1808,16 @@ pub const cpu_atmega3290p = Cpu{ .name = "atmega3290p", .llvm_name = "atmega3290p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1807,16 +1825,16 @@ pub const cpu_atmega3290pa = Cpu{ .name = "atmega3290pa", .llvm_name = "atmega3290pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1824,16 +1842,16 @@ pub const cpu_atmega329a = Cpu{ .name = "atmega329a", .llvm_name = "atmega329a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1841,16 +1859,16 @@ pub const cpu_atmega329p = Cpu{ .name = "atmega329p", .llvm_name = "atmega329p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1858,16 +1876,16 @@ pub const cpu_atmega329pa = Cpu{ .name = "atmega329pa", .llvm_name = "atmega329pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1875,16 +1893,16 @@ pub const cpu_atmega32a = Cpu{ .name = "atmega32a", .llvm_name = "atmega32a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1892,16 +1910,16 @@ pub const cpu_atmega32c1 = Cpu{ .name = "atmega32c1", .llvm_name = "atmega32c1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1909,16 +1927,16 @@ pub const cpu_atmega32hvb = Cpu{ .name = "atmega32hvb", .llvm_name = "atmega32hvb", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1926,16 +1944,16 @@ pub const cpu_atmega32hvbrevb = Cpu{ .name = "atmega32hvbrevb", .llvm_name = "atmega32hvbrevb", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1943,16 +1961,16 @@ pub const cpu_atmega32m1 = Cpu{ .name = "atmega32m1", .llvm_name = "atmega32m1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1960,15 +1978,15 @@ pub const cpu_atmega32u2 = Cpu{ .name = "atmega32u2", .llvm_name = "atmega32u2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, &feature_movw, - &feature_addsubiw, }, }; @@ -1976,16 +1994,16 @@ pub const cpu_atmega32u4 = Cpu{ .name = "atmega32u4", .llvm_name = "atmega32u4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -1993,16 +2011,16 @@ pub const cpu_atmega32u6 = Cpu{ .name = "atmega32u6", .llvm_name = "atmega32u6", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2010,16 +2028,16 @@ pub const cpu_atmega406 = Cpu{ .name = "atmega406", .llvm_name = "atmega406", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2027,15 +2045,15 @@ pub const cpu_atmega48 = Cpu{ .name = "atmega48", .llvm_name = "atmega48", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2043,15 +2061,15 @@ pub const cpu_atmega48a = Cpu{ .name = "atmega48a", .llvm_name = "atmega48a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2059,15 +2077,15 @@ pub const cpu_atmega48p = Cpu{ .name = "atmega48p", .llvm_name = "atmega48p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2075,15 +2093,15 @@ pub const cpu_atmega48pa = Cpu{ .name = "atmega48pa", .llvm_name = "atmega48pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2091,16 +2109,16 @@ pub const cpu_atmega64 = Cpu{ .name = "atmega64", .llvm_name = "atmega64", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2108,16 +2126,16 @@ pub const cpu_atmega640 = Cpu{ .name = "atmega640", .llvm_name = "atmega640", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2125,16 +2143,16 @@ pub const cpu_atmega644 = Cpu{ .name = "atmega644", .llvm_name = "atmega644", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2142,16 +2160,16 @@ pub const cpu_atmega644a = Cpu{ .name = "atmega644a", .llvm_name = "atmega644a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2159,16 +2177,16 @@ pub const cpu_atmega644p = Cpu{ .name = "atmega644p", .llvm_name = "atmega644p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2176,16 +2194,16 @@ pub const cpu_atmega644pa = Cpu{ .name = "atmega644pa", .llvm_name = "atmega644pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2193,16 +2211,16 @@ pub const cpu_atmega644rfr2 = Cpu{ .name = "atmega644rfr2", .llvm_name = "atmega644rfr2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2210,16 +2228,16 @@ pub const cpu_atmega645 = Cpu{ .name = "atmega645", .llvm_name = "atmega645", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2227,16 +2245,16 @@ pub const cpu_atmega6450 = Cpu{ .name = "atmega6450", .llvm_name = "atmega6450", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2244,16 +2262,16 @@ pub const cpu_atmega6450a = Cpu{ .name = "atmega6450a", .llvm_name = "atmega6450a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2261,16 +2279,16 @@ pub const cpu_atmega6450p = Cpu{ .name = "atmega6450p", .llvm_name = "atmega6450p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2278,16 +2296,16 @@ pub const cpu_atmega645a = Cpu{ .name = "atmega645a", .llvm_name = "atmega645a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2295,16 +2313,16 @@ pub const cpu_atmega645p = Cpu{ .name = "atmega645p", .llvm_name = "atmega645p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2312,16 +2330,16 @@ pub const cpu_atmega649 = Cpu{ .name = "atmega649", .llvm_name = "atmega649", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2329,16 +2347,16 @@ pub const cpu_atmega6490 = Cpu{ .name = "atmega6490", .llvm_name = "atmega6490", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2346,16 +2364,16 @@ pub const cpu_atmega6490a = Cpu{ .name = "atmega6490a", .llvm_name = "atmega6490a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2363,16 +2381,16 @@ pub const cpu_atmega6490p = Cpu{ .name = "atmega6490p", .llvm_name = "atmega6490p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2380,16 +2398,16 @@ pub const cpu_atmega649a = Cpu{ .name = "atmega649a", .llvm_name = "atmega649a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2397,16 +2415,16 @@ pub const cpu_atmega649p = Cpu{ .name = "atmega649p", .llvm_name = "atmega649p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2414,16 +2432,16 @@ pub const cpu_atmega64a = Cpu{ .name = "atmega64a", .llvm_name = "atmega64a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2431,16 +2449,16 @@ pub const cpu_atmega64c1 = Cpu{ .name = "atmega64c1", .llvm_name = "atmega64c1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2448,16 +2466,16 @@ pub const cpu_atmega64hve = Cpu{ .name = "atmega64hve", .llvm_name = "atmega64hve", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2465,16 +2483,16 @@ pub const cpu_atmega64m1 = Cpu{ .name = "atmega64m1", .llvm_name = "atmega64m1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2482,16 +2500,16 @@ pub const cpu_atmega64rfr2 = Cpu{ .name = "atmega64rfr2", .llvm_name = "atmega64rfr2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2499,15 +2517,15 @@ pub const cpu_atmega8 = Cpu{ .name = "atmega8", .llvm_name = "atmega8", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2515,10 +2533,10 @@ pub const cpu_atmega8515 = Cpu{ .name = "atmega8515", .llvm_name = "atmega8515", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, &feature_lpmx, &feature_movw, &feature_mul, @@ -2530,10 +2548,10 @@ pub const cpu_atmega8535 = Cpu{ .name = "atmega8535", .llvm_name = "atmega8535", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, &feature_lpmx, &feature_movw, &feature_mul, @@ -2545,15 +2563,15 @@ pub const cpu_atmega88 = Cpu{ .name = "atmega88", .llvm_name = "atmega88", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2561,15 +2579,15 @@ pub const cpu_atmega88a = Cpu{ .name = "atmega88a", .llvm_name = "atmega88a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2577,15 +2595,15 @@ pub const cpu_atmega88p = Cpu{ .name = "atmega88p", .llvm_name = "atmega88p", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2593,15 +2611,15 @@ pub const cpu_atmega88pa = Cpu{ .name = "atmega88pa", .llvm_name = "atmega88pa", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2609,15 +2627,15 @@ pub const cpu_atmega8a = Cpu{ .name = "atmega8a", .llvm_name = "atmega8a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2625,15 +2643,15 @@ pub const cpu_atmega8hva = Cpu{ .name = "atmega8hva", .llvm_name = "atmega8hva", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -2641,15 +2659,15 @@ pub const cpu_atmega8u2 = Cpu{ .name = "atmega8u2", .llvm_name = "atmega8u2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, &feature_movw, - &feature_addsubiw, }, }; @@ -2657,9 +2675,9 @@ pub const cpu_attiny10 = Cpu{ .name = "attiny10", .llvm_name = "attiny10", .dependencies = &[_]*const Feature { - &feature_break, - &feature_tinyencoding, &feature_sram, + &feature_tinyencoding, + &feature_break, }, }; @@ -2667,9 +2685,9 @@ pub const cpu_attiny102 = Cpu{ .name = "attiny102", .llvm_name = "attiny102", .dependencies = &[_]*const Feature { - &feature_break, - &feature_tinyencoding, &feature_sram, + &feature_tinyencoding, + &feature_break, }, }; @@ -2677,9 +2695,9 @@ pub const cpu_attiny104 = Cpu{ .name = "attiny104", .llvm_name = "attiny104", .dependencies = &[_]*const Feature { - &feature_break, - &feature_tinyencoding, &feature_sram, + &feature_tinyencoding, + &feature_break, }, }; @@ -2703,14 +2721,14 @@ pub const cpu_attiny13 = Cpu{ .name = "attiny13", .llvm_name = "attiny13", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2718,14 +2736,14 @@ pub const cpu_attiny13a = Cpu{ .name = "attiny13a", .llvm_name = "attiny13a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2741,15 +2759,15 @@ pub const cpu_attiny1634 = Cpu{ .name = "attiny1634", .llvm_name = "attiny1634", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, &feature_movw, - &feature_addsubiw, }, }; @@ -2757,15 +2775,15 @@ pub const cpu_attiny167 = Cpu{ .name = "attiny167", .llvm_name = "attiny167", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, &feature_movw, - &feature_addsubiw, }, }; @@ -2773,9 +2791,9 @@ pub const cpu_attiny20 = Cpu{ .name = "attiny20", .llvm_name = "attiny20", .dependencies = &[_]*const Feature { - &feature_break, - &feature_tinyencoding, &feature_sram, + &feature_tinyencoding, + &feature_break, }, }; @@ -2783,10 +2801,10 @@ pub const cpu_attiny22 = Cpu{ .name = "attiny22", .llvm_name = "attiny22", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -2794,14 +2812,14 @@ pub const cpu_attiny2313 = Cpu{ .name = "attiny2313", .llvm_name = "attiny2313", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2809,14 +2827,14 @@ pub const cpu_attiny2313a = Cpu{ .name = "attiny2313a", .llvm_name = "attiny2313a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2824,14 +2842,14 @@ pub const cpu_attiny24 = Cpu{ .name = "attiny24", .llvm_name = "attiny24", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2839,14 +2857,14 @@ pub const cpu_attiny24a = Cpu{ .name = "attiny24a", .llvm_name = "attiny24a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2854,14 +2872,14 @@ pub const cpu_attiny25 = Cpu{ .name = "attiny25", .llvm_name = "attiny25", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2869,10 +2887,10 @@ pub const cpu_attiny26 = Cpu{ .name = "attiny26", .llvm_name = "attiny26", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, &feature_lpmx, }, }; @@ -2881,14 +2899,14 @@ pub const cpu_attiny261 = Cpu{ .name = "attiny261", .llvm_name = "attiny261", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2896,14 +2914,14 @@ pub const cpu_attiny261a = Cpu{ .name = "attiny261a", .llvm_name = "attiny261a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2919,9 +2937,9 @@ pub const cpu_attiny4 = Cpu{ .name = "attiny4", .llvm_name = "attiny4", .dependencies = &[_]*const Feature { - &feature_break, - &feature_tinyencoding, &feature_sram, + &feature_tinyencoding, + &feature_break, }, }; @@ -2929,9 +2947,9 @@ pub const cpu_attiny40 = Cpu{ .name = "attiny40", .llvm_name = "attiny40", .dependencies = &[_]*const Feature { - &feature_break, - &feature_tinyencoding, &feature_sram, + &feature_tinyencoding, + &feature_break, }, }; @@ -2939,14 +2957,14 @@ pub const cpu_attiny4313 = Cpu{ .name = "attiny4313", .llvm_name = "attiny4313", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2954,14 +2972,14 @@ pub const cpu_attiny43u = Cpu{ .name = "attiny43u", .llvm_name = "attiny43u", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2969,14 +2987,14 @@ pub const cpu_attiny44 = Cpu{ .name = "attiny44", .llvm_name = "attiny44", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2984,14 +3002,14 @@ pub const cpu_attiny44a = Cpu{ .name = "attiny44a", .llvm_name = "attiny44a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -2999,14 +3017,14 @@ pub const cpu_attiny45 = Cpu{ .name = "attiny45", .llvm_name = "attiny45", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3014,14 +3032,14 @@ pub const cpu_attiny461 = Cpu{ .name = "attiny461", .llvm_name = "attiny461", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3029,14 +3047,14 @@ pub const cpu_attiny461a = Cpu{ .name = "attiny461a", .llvm_name = "attiny461a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3044,14 +3062,14 @@ pub const cpu_attiny48 = Cpu{ .name = "attiny48", .llvm_name = "attiny48", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3059,9 +3077,9 @@ pub const cpu_attiny5 = Cpu{ .name = "attiny5", .llvm_name = "attiny5", .dependencies = &[_]*const Feature { - &feature_break, - &feature_tinyencoding, &feature_sram, + &feature_tinyencoding, + &feature_break, }, }; @@ -3069,14 +3087,14 @@ pub const cpu_attiny828 = Cpu{ .name = "attiny828", .llvm_name = "attiny828", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3084,14 +3102,14 @@ pub const cpu_attiny84 = Cpu{ .name = "attiny84", .llvm_name = "attiny84", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3099,14 +3117,14 @@ pub const cpu_attiny84a = Cpu{ .name = "attiny84a", .llvm_name = "attiny84a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3114,14 +3132,14 @@ pub const cpu_attiny85 = Cpu{ .name = "attiny85", .llvm_name = "attiny85", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3129,14 +3147,14 @@ pub const cpu_attiny861 = Cpu{ .name = "attiny861", .llvm_name = "attiny861", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3144,14 +3162,14 @@ pub const cpu_attiny861a = Cpu{ .name = "attiny861a", .llvm_name = "attiny861a", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3159,14 +3177,14 @@ pub const cpu_attiny87 = Cpu{ .name = "attiny87", .llvm_name = "attiny87", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3174,14 +3192,14 @@ pub const cpu_attiny88 = Cpu{ .name = "attiny88", .llvm_name = "attiny88", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -3189,9 +3207,9 @@ pub const cpu_attiny9 = Cpu{ .name = "attiny9", .llvm_name = "attiny9", .dependencies = &[_]*const Feature { - &feature_break, - &feature_tinyencoding, &feature_sram, + &feature_tinyencoding, + &feature_break, }, }; @@ -3199,21 +3217,21 @@ pub const cpu_atxmega128a1 = Cpu{ .name = "atxmega128a1", .llvm_name = "atxmega128a1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3221,22 +3239,22 @@ pub const cpu_atxmega128a1u = Cpu{ .name = "atxmega128a1u", .llvm_name = "atxmega128a1u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3244,21 +3262,21 @@ pub const cpu_atxmega128a3 = Cpu{ .name = "atxmega128a3", .llvm_name = "atxmega128a3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3266,22 +3284,22 @@ pub const cpu_atxmega128a3u = Cpu{ .name = "atxmega128a3u", .llvm_name = "atxmega128a3u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3289,22 +3307,22 @@ pub const cpu_atxmega128a4u = Cpu{ .name = "atxmega128a4u", .llvm_name = "atxmega128a4u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3312,22 +3330,22 @@ pub const cpu_atxmega128b1 = Cpu{ .name = "atxmega128b1", .llvm_name = "atxmega128b1", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3335,22 +3353,22 @@ pub const cpu_atxmega128b3 = Cpu{ .name = "atxmega128b3", .llvm_name = "atxmega128b3", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3358,22 +3376,22 @@ pub const cpu_atxmega128c3 = Cpu{ .name = "atxmega128c3", .llvm_name = "atxmega128c3", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3381,21 +3399,21 @@ pub const cpu_atxmega128d3 = Cpu{ .name = "atxmega128d3", .llvm_name = "atxmega128d3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3403,21 +3421,21 @@ pub const cpu_atxmega128d4 = Cpu{ .name = "atxmega128d4", .llvm_name = "atxmega128d4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3425,21 +3443,21 @@ pub const cpu_atxmega16a4 = Cpu{ .name = "atxmega16a4", .llvm_name = "atxmega16a4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3447,22 +3465,22 @@ pub const cpu_atxmega16a4u = Cpu{ .name = "atxmega16a4u", .llvm_name = "atxmega16a4u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3470,22 +3488,22 @@ pub const cpu_atxmega16c4 = Cpu{ .name = "atxmega16c4", .llvm_name = "atxmega16c4", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3493,21 +3511,21 @@ pub const cpu_atxmega16d4 = Cpu{ .name = "atxmega16d4", .llvm_name = "atxmega16d4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3515,21 +3533,21 @@ pub const cpu_atxmega16e5 = Cpu{ .name = "atxmega16e5", .llvm_name = "atxmega16e5", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3537,21 +3555,21 @@ pub const cpu_atxmega192a3 = Cpu{ .name = "atxmega192a3", .llvm_name = "atxmega192a3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3559,22 +3577,22 @@ pub const cpu_atxmega192a3u = Cpu{ .name = "atxmega192a3u", .llvm_name = "atxmega192a3u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3582,22 +3600,22 @@ pub const cpu_atxmega192c3 = Cpu{ .name = "atxmega192c3", .llvm_name = "atxmega192c3", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3605,21 +3623,21 @@ pub const cpu_atxmega192d3 = Cpu{ .name = "atxmega192d3", .llvm_name = "atxmega192d3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3627,21 +3645,21 @@ pub const cpu_atxmega256a3 = Cpu{ .name = "atxmega256a3", .llvm_name = "atxmega256a3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3649,21 +3667,21 @@ pub const cpu_atxmega256a3b = Cpu{ .name = "atxmega256a3b", .llvm_name = "atxmega256a3b", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3671,22 +3689,22 @@ pub const cpu_atxmega256a3bu = Cpu{ .name = "atxmega256a3bu", .llvm_name = "atxmega256a3bu", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3694,22 +3712,22 @@ pub const cpu_atxmega256a3u = Cpu{ .name = "atxmega256a3u", .llvm_name = "atxmega256a3u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3717,22 +3735,22 @@ pub const cpu_atxmega256c3 = Cpu{ .name = "atxmega256c3", .llvm_name = "atxmega256c3", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3740,21 +3758,21 @@ pub const cpu_atxmega256d3 = Cpu{ .name = "atxmega256d3", .llvm_name = "atxmega256d3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3762,21 +3780,21 @@ pub const cpu_atxmega32a4 = Cpu{ .name = "atxmega32a4", .llvm_name = "atxmega32a4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3784,22 +3802,22 @@ pub const cpu_atxmega32a4u = Cpu{ .name = "atxmega32a4u", .llvm_name = "atxmega32a4u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3807,22 +3825,22 @@ pub const cpu_atxmega32c4 = Cpu{ .name = "atxmega32c4", .llvm_name = "atxmega32c4", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3830,21 +3848,21 @@ pub const cpu_atxmega32d4 = Cpu{ .name = "atxmega32d4", .llvm_name = "atxmega32d4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3852,21 +3870,21 @@ pub const cpu_atxmega32e5 = Cpu{ .name = "atxmega32e5", .llvm_name = "atxmega32e5", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3874,21 +3892,21 @@ pub const cpu_atxmega32x1 = Cpu{ .name = "atxmega32x1", .llvm_name = "atxmega32x1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3896,22 +3914,22 @@ pub const cpu_atxmega384c3 = Cpu{ .name = "atxmega384c3", .llvm_name = "atxmega384c3", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3919,21 +3937,21 @@ pub const cpu_atxmega384d3 = Cpu{ .name = "atxmega384d3", .llvm_name = "atxmega384d3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3941,21 +3959,21 @@ pub const cpu_atxmega64a1 = Cpu{ .name = "atxmega64a1", .llvm_name = "atxmega64a1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -3963,22 +3981,22 @@ pub const cpu_atxmega64a1u = Cpu{ .name = "atxmega64a1u", .llvm_name = "atxmega64a1u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -3986,21 +4004,21 @@ pub const cpu_atxmega64a3 = Cpu{ .name = "atxmega64a3", .llvm_name = "atxmega64a3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4008,22 +4026,22 @@ pub const cpu_atxmega64a3u = Cpu{ .name = "atxmega64a3u", .llvm_name = "atxmega64a3u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -4031,22 +4049,22 @@ pub const cpu_atxmega64a4u = Cpu{ .name = "atxmega64a4u", .llvm_name = "atxmega64a4u", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -4054,22 +4072,22 @@ pub const cpu_atxmega64b1 = Cpu{ .name = "atxmega64b1", .llvm_name = "atxmega64b1", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -4077,22 +4095,22 @@ pub const cpu_atxmega64b3 = Cpu{ .name = "atxmega64b3", .llvm_name = "atxmega64b3", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -4100,22 +4118,22 @@ pub const cpu_atxmega64c3 = Cpu{ .name = "atxmega64c3", .llvm_name = "atxmega64c3", .dependencies = &[_]*const Feature { - &feature_lpmx, - &feature_elpm, - &feature_spm, - &feature_lpm, - &feature_ijmpcall, - &feature_elpmx, + &feature_des, &feature_sram, - &feature_spmx, - &feature_break, + &feature_movw, &feature_jmpcall, - &feature_des, - &feature_rmw, &feature_mul, - &feature_eijmpcall, - &feature_movw, + &feature_elpm, + &feature_spmx, + &feature_lpm, + &feature_lpmx, + &feature_spm, &feature_addsubiw, + &feature_rmw, + &feature_ijmpcall, + &feature_eijmpcall, + &feature_break, + &feature_elpmx, }, }; @@ -4123,21 +4141,21 @@ pub const cpu_atxmega64d3 = Cpu{ .name = "atxmega64d3", .llvm_name = "atxmega64d3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4145,21 +4163,21 @@ pub const cpu_atxmega64d4 = Cpu{ .name = "atxmega64d4", .llvm_name = "atxmega64d4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4167,21 +4185,21 @@ pub const cpu_atxmega8e5 = Cpu{ .name = "atxmega8e5", .llvm_name = "atxmega8e5", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4197,10 +4215,10 @@ pub const cpu_avr2 = Cpu{ .name = "avr2", .llvm_name = "avr2", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -4208,14 +4226,14 @@ pub const cpu_avr25 = Cpu{ .name = "avr25", .llvm_name = "avr25", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, &feature_movw, - &feature_addsubiw, }, }; @@ -4223,11 +4241,11 @@ pub const cpu_avr3 = Cpu{ .name = "avr3", .llvm_name = "avr3", .dependencies = &[_]*const Feature { - &feature_lpm, - &feature_ijmpcall, &feature_sram, &feature_jmpcall, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -4235,12 +4253,12 @@ pub const cpu_avr31 = Cpu{ .name = "avr31", .llvm_name = "avr31", .dependencies = &[_]*const Feature { - &feature_elpm, - &feature_lpm, - &feature_ijmpcall, &feature_sram, &feature_jmpcall, + &feature_elpm, + &feature_lpm, &feature_addsubiw, + &feature_ijmpcall, }, }; @@ -4248,15 +4266,15 @@ pub const cpu_avr35 = Cpu{ .name = "avr35", .llvm_name = "avr35", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, &feature_movw, - &feature_addsubiw, }, }; @@ -4264,15 +4282,15 @@ pub const cpu_avr4 = Cpu{ .name = "avr4", .llvm_name = "avr4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -4280,16 +4298,16 @@ pub const cpu_avr5 = Cpu{ .name = "avr5", .llvm_name = "avr5", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -4297,18 +4315,18 @@ pub const cpu_avr51 = Cpu{ .name = "avr51", .llvm_name = "avr51", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, - &feature_spm, &feature_lpm, + &feature_lpmx, + &feature_spm, + &feature_addsubiw, &feature_ijmpcall, &feature_elpmx, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; @@ -4316,18 +4334,18 @@ pub const cpu_avr6 = Cpu{ .name = "avr6", .llvm_name = "avr6", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_elpm, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_break, - &feature_jmpcall, - &feature_mul, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4335,9 +4353,9 @@ pub const cpu_avrtiny = Cpu{ .name = "avrtiny", .llvm_name = "avrtiny", .dependencies = &[_]*const Feature { - &feature_break, - &feature_tinyencoding, &feature_sram, + &feature_tinyencoding, + &feature_break, }, }; @@ -4345,21 +4363,21 @@ pub const cpu_avrxmega1 = Cpu{ .name = "avrxmega1", .llvm_name = "avrxmega1", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4367,21 +4385,21 @@ pub const cpu_avrxmega2 = Cpu{ .name = "avrxmega2", .llvm_name = "avrxmega2", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4389,21 +4407,21 @@ pub const cpu_avrxmega3 = Cpu{ .name = "avrxmega3", .llvm_name = "avrxmega3", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4411,21 +4429,21 @@ pub const cpu_avrxmega4 = Cpu{ .name = "avrxmega4", .llvm_name = "avrxmega4", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4433,21 +4451,21 @@ pub const cpu_avrxmega5 = Cpu{ .name = "avrxmega5", .llvm_name = "avrxmega5", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4455,21 +4473,21 @@ pub const cpu_avrxmega6 = Cpu{ .name = "avrxmega6", .llvm_name = "avrxmega6", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4477,21 +4495,21 @@ pub const cpu_avrxmega7 = Cpu{ .name = "avrxmega7", .llvm_name = "avrxmega7", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_des, + &feature_sram, + &feature_eijmpcall, + &feature_jmpcall, + &feature_mul, &feature_elpm, + &feature_spmx, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_movw, - &feature_sram, - &feature_spmx, - &feature_break, - &feature_jmpcall, - &feature_des, - &feature_mul, - &feature_eijmpcall, &feature_elpmx, - &feature_addsubiw, + &feature_break, + &feature_movw, }, }; @@ -4499,16 +4517,16 @@ pub const cpu_m3000 = Cpu{ .name = "m3000", .llvm_name = "m3000", .dependencies = &[_]*const Feature { - &feature_lpmx, + &feature_sram, + &feature_jmpcall, + &feature_mul, &feature_lpm, + &feature_lpmx, &feature_spm, + &feature_addsubiw, &feature_ijmpcall, - &feature_sram, &feature_break, - &feature_jmpcall, - &feature_mul, &feature_movw, - &feature_addsubiw, }, }; diff --git a/lib/std/target/bpf.zig b/lib/std/target/bpf.zig index 9dc27093a6..62c69746f8 100644 --- a/lib/std/target/bpf.zig +++ b/lib/std/target/bpf.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_alu32 = Feature{ .name = "alu32", + .llvm_name = "alu32", .description = "Enable ALU32 instructions", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_alu32 = Feature{ pub const feature_dummy = Feature{ .name = "dummy", + .llvm_name = "dummy", .description = "unused feature", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_dummy = Feature{ pub const feature_dwarfris = Feature{ .name = "dwarfris", + .llvm_name = "dwarfris", .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections", .dependencies = &[_]*const Feature { }, diff --git a/lib/std/target/hexagon.zig b/lib/std/target/hexagon.zig index a007ee10cf..7deecaa6c7 100644 --- a/lib/std/target/hexagon.zig +++ b/lib/std/target/hexagon.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_duplex = Feature{ .name = "duplex", + .llvm_name = "duplex", .description = "Enable generation of duplex instruction", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_duplex = Feature{ pub const feature_longCalls = Feature{ .name = "long-calls", + .llvm_name = "long-calls", .description = "Use constant-extended calls", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_longCalls = Feature{ pub const feature_mem_noshuf = Feature{ .name = "mem_noshuf", + .llvm_name = "mem_noshuf", .description = "Supports mem_noshuf feature", .dependencies = &[_]*const Feature { }, @@ -24,6 +27,7 @@ pub const feature_mem_noshuf = Feature{ pub const feature_memops = Feature{ .name = "memops", + .llvm_name = "memops", .description = "Use memop instructions", .dependencies = &[_]*const Feature { }, @@ -31,6 +35,7 @@ pub const feature_memops = Feature{ pub const feature_nvj = Feature{ .name = "nvj", + .llvm_name = "nvj", .description = "Support for new-value jumps", .dependencies = &[_]*const Feature { &feature_packets, @@ -39,6 +44,7 @@ pub const feature_nvj = Feature{ pub const feature_nvs = Feature{ .name = "nvs", + .llvm_name = "nvs", .description = "Support for new-value stores", .dependencies = &[_]*const Feature { &feature_packets, @@ -47,6 +53,7 @@ pub const feature_nvs = Feature{ pub const feature_noreturnStackElim = Feature{ .name = "noreturn-stack-elim", + .llvm_name = "noreturn-stack-elim", .description = "Eliminate stack allocation in a noreturn function when possible", .dependencies = &[_]*const Feature { }, @@ -54,6 +61,7 @@ pub const feature_noreturnStackElim = Feature{ pub const feature_packets = Feature{ .name = "packets", + .llvm_name = "packets", .description = "Support for instruction packets", .dependencies = &[_]*const Feature { }, @@ -61,6 +69,7 @@ pub const feature_packets = Feature{ pub const feature_reservedR19 = Feature{ .name = "reserved-r19", + .llvm_name = "reserved-r19", .description = "Reserve register R19", .dependencies = &[_]*const Feature { }, @@ -68,6 +77,7 @@ pub const feature_reservedR19 = Feature{ pub const feature_smallData = Feature{ .name = "small-data", + .llvm_name = "small-data", .description = "Allow GP-relative addressing of global variables", .dependencies = &[_]*const Feature { }, diff --git a/lib/std/target/mips.zig b/lib/std/target/mips.zig index e7c26230af..7b97a84f18 100644 --- a/lib/std/target/mips.zig +++ b/lib/std/target/mips.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_abs2008 = Feature{ .name = "abs2008", + .llvm_name = "abs2008", .description = "Disable IEEE 754-2008 abs.fmt mode", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_abs2008 = Feature{ pub const feature_crc = Feature{ .name = "crc", + .llvm_name = "crc", .description = "Mips R6 CRC ASE", .dependencies = &[_]*const Feature { }, @@ -17,21 +19,23 @@ pub const feature_crc = Feature{ pub const feature_cnmips = Feature{ .name = "cnmips", + .llvm_name = "cnmips", .description = "Octeon cnMIPS Support", .dependencies = &[_]*const Feature { - &feature_mips4_32, - &feature_mips4_32r2, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, - &feature_gp64, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_dsp = Feature{ .name = "dsp", + .llvm_name = "dsp", .description = "Mips DSP ASE", .dependencies = &[_]*const Feature { }, @@ -39,6 +43,7 @@ pub const feature_dsp = Feature{ pub const feature_dspr2 = Feature{ .name = "dspr2", + .llvm_name = "dspr2", .description = "Mips DSP-R2 ASE", .dependencies = &[_]*const Feature { &feature_dsp, @@ -47,6 +52,7 @@ pub const feature_dspr2 = Feature{ pub const feature_dspr3 = Feature{ .name = "dspr3", + .llvm_name = "dspr3", .description = "Mips DSP-R3 ASE", .dependencies = &[_]*const Feature { &feature_dsp, @@ -55,6 +61,7 @@ pub const feature_dspr3 = Feature{ pub const feature_eva = Feature{ .name = "eva", + .llvm_name = "eva", .description = "Mips EVA ASE", .dependencies = &[_]*const Feature { }, @@ -62,6 +69,7 @@ pub const feature_eva = Feature{ pub const feature_fp64 = Feature{ .name = "fp64", + .llvm_name = "fp64", .description = "Support 64-bit FP registers", .dependencies = &[_]*const Feature { }, @@ -69,6 +77,7 @@ pub const feature_fp64 = Feature{ pub const feature_fpxx = Feature{ .name = "fpxx", + .llvm_name = "fpxx", .description = "Support for FPXX", .dependencies = &[_]*const Feature { }, @@ -76,6 +85,7 @@ pub const feature_fpxx = Feature{ pub const feature_ginv = Feature{ .name = "ginv", + .llvm_name = "ginv", .description = "Mips Global Invalidate ASE", .dependencies = &[_]*const Feature { }, @@ -83,6 +93,7 @@ pub const feature_ginv = Feature{ pub const feature_gp64 = Feature{ .name = "gp64", + .llvm_name = "gp64", .description = "General Purpose Registers are 64-bit wide", .dependencies = &[_]*const Feature { }, @@ -90,6 +101,7 @@ pub const feature_gp64 = Feature{ pub const feature_longCalls = Feature{ .name = "long-calls", + .llvm_name = "long-calls", .description = "Disable use of the jal instruction", .dependencies = &[_]*const Feature { }, @@ -97,6 +109,7 @@ pub const feature_longCalls = Feature{ pub const feature_msa = Feature{ .name = "msa", + .llvm_name = "msa", .description = "Mips MSA ASE", .dependencies = &[_]*const Feature { }, @@ -104,6 +117,7 @@ pub const feature_msa = Feature{ pub const feature_mt = Feature{ .name = "mt", + .llvm_name = "mt", .description = "Mips MT ASE", .dependencies = &[_]*const Feature { }, @@ -111,6 +125,7 @@ pub const feature_mt = Feature{ pub const feature_nomadd4 = Feature{ .name = "nomadd4", + .llvm_name = "nomadd4", .description = "Disable 4-operand madd.fmt and related instructions", .dependencies = &[_]*const Feature { }, @@ -118,6 +133,7 @@ pub const feature_nomadd4 = Feature{ pub const feature_micromips = Feature{ .name = "micromips", + .llvm_name = "micromips", .description = "microMips mode", .dependencies = &[_]*const Feature { }, @@ -125,6 +141,7 @@ pub const feature_micromips = Feature{ pub const feature_mips1 = Feature{ .name = "mips1", + .llvm_name = "mips1", .description = "Mips I ISA Support [highly experimental]", .dependencies = &[_]*const Feature { }, @@ -132,6 +149,7 @@ pub const feature_mips1 = Feature{ pub const feature_mips2 = Feature{ .name = "mips2", + .llvm_name = "mips2", .description = "Mips II ISA Support [highly experimental]", .dependencies = &[_]*const Feature { &feature_mips1, @@ -140,18 +158,20 @@ pub const feature_mips2 = Feature{ pub const feature_mips3 = Feature{ .name = "mips3", + .llvm_name = "mips3", .description = "MIPS III ISA Support [highly experimental]", .dependencies = &[_]*const Feature { &feature_mips1, &feature_mips3_32r2, - &feature_mips3_32, - &feature_gp64, &feature_fp64, + &feature_gp64, + &feature_mips3_32, }, }; pub const feature_mips3_32 = Feature{ .name = "mips3_32", + .llvm_name = "mips3_32", .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]", .dependencies = &[_]*const Feature { }, @@ -159,6 +179,7 @@ pub const feature_mips3_32 = Feature{ pub const feature_mips3_32r2 = Feature{ .name = "mips3_32r2", + .llvm_name = "mips3_32r2", .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]", .dependencies = &[_]*const Feature { }, @@ -166,20 +187,22 @@ pub const feature_mips3_32r2 = Feature{ pub const feature_mips4 = Feature{ .name = "mips4", + .llvm_name = "mips4", .description = "MIPS IV ISA Support", .dependencies = &[_]*const Feature { - &feature_mips4_32, - &feature_mips4_32r2, &feature_mips1, &feature_mips3_32r2, - &feature_mips3_32, - &feature_gp64, + &feature_mips4_32, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips4_32 = Feature{ .name = "mips4_32", + .llvm_name = "mips4_32", .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]", .dependencies = &[_]*const Feature { }, @@ -187,6 +210,7 @@ pub const feature_mips4_32 = Feature{ pub const feature_mips4_32r2 = Feature{ .name = "mips4_32r2", + .llvm_name = "mips4_32r2", .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]", .dependencies = &[_]*const Feature { }, @@ -194,21 +218,23 @@ pub const feature_mips4_32r2 = Feature{ pub const feature_mips5 = Feature{ .name = "mips5", + .llvm_name = "mips5", .description = "MIPS V ISA Support [highly experimental]", .dependencies = &[_]*const Feature { - &feature_mips3_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, - &feature_mips4_32r2, + &feature_mips5_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips5_32r2 = Feature{ .name = "mips5_32r2", + .llvm_name = "mips5_32r2", .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]", .dependencies = &[_]*const Feature { }, @@ -216,6 +242,7 @@ pub const feature_mips5_32r2 = Feature{ pub const feature_mips16 = Feature{ .name = "mips16", + .llvm_name = "mips16", .description = "Mips16 mode", .dependencies = &[_]*const Feature { }, @@ -223,148 +250,159 @@ pub const feature_mips16 = Feature{ pub const feature_mips32 = Feature{ .name = "mips32", + .llvm_name = "mips32", .description = "Mips32 ISA Support", .dependencies = &[_]*const Feature { &feature_mips1, - &feature_mips3_32, &feature_mips4_32, + &feature_mips3_32, }, }; pub const feature_mips32r2 = Feature{ .name = "mips32r2", + .llvm_name = "mips32r2", .description = "Mips32r2 ISA Support", .dependencies = &[_]*const Feature { - &feature_mips4_32, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips32r3 = Feature{ .name = "mips32r3", + .llvm_name = "mips32r3", .description = "Mips32r3 ISA Support", .dependencies = &[_]*const Feature { - &feature_mips3_32, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, + &feature_mips5_32r2, &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips32r5 = Feature{ .name = "mips32r5", + .llvm_name = "mips32r5", .description = "Mips32r5 ISA Support", .dependencies = &[_]*const Feature { - &feature_mips4_32, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips32r6 = Feature{ .name = "mips32r6", + .llvm_name = "mips32r6", .description = "Mips32r6 ISA Support [experimental]", .dependencies = &[_]*const Feature { &feature_abs2008, - &feature_nan2008, - &feature_mips3_32, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, - &feature_mips4_32r2, + &feature_nan2008, + &feature_mips5_32r2, &feature_fp64, + &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips64 = Feature{ .name = "mips64", + .llvm_name = "mips64", .description = "Mips64 ISA Support", .dependencies = &[_]*const Feature { - &feature_mips4_32, - &feature_mips4_32r2, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, - &feature_gp64, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips64r2 = Feature{ .name = "mips64r2", + .llvm_name = "mips64r2", .description = "Mips64r2 ISA Support", .dependencies = &[_]*const Feature { - &feature_mips3_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, - &feature_mips4_32r2, + &feature_mips5_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips64r3 = Feature{ .name = "mips64r3", + .llvm_name = "mips64r3", .description = "Mips64r3 ISA Support", .dependencies = &[_]*const Feature { - &feature_mips4_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, - &feature_mips4_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips64r5 = Feature{ .name = "mips64r5", + .llvm_name = "mips64r5", .description = "Mips64r5 ISA Support", .dependencies = &[_]*const Feature { - &feature_mips3_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, - &feature_mips4_32r2, + &feature_mips5_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_mips64r6 = Feature{ .name = "mips64r6", + .llvm_name = "mips64r6", .description = "Mips64r6 ISA Support [experimental]", .dependencies = &[_]*const Feature { &feature_abs2008, - &feature_nan2008, - &feature_mips4_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, + &feature_nan2008, &feature_mips5_32r2, - &feature_mips3_32, - &feature_mips4_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, }, }; pub const feature_nan2008 = Feature{ .name = "nan2008", + .llvm_name = "nan2008", .description = "IEEE 754-2008 NaN encoding", .dependencies = &[_]*const Feature { }, @@ -372,6 +410,7 @@ pub const feature_nan2008 = Feature{ pub const feature_noabicalls = Feature{ .name = "noabicalls", + .llvm_name = "noabicalls", .description = "Disable SVR4-style position-independent code", .dependencies = &[_]*const Feature { }, @@ -379,6 +418,7 @@ pub const feature_noabicalls = Feature{ pub const feature_nooddspreg = Feature{ .name = "nooddspreg", + .llvm_name = "nooddspreg", .description = "Disable odd numbered single-precision registers", .dependencies = &[_]*const Feature { }, @@ -386,6 +426,7 @@ pub const feature_nooddspreg = Feature{ pub const feature_ptr64 = Feature{ .name = "ptr64", + .llvm_name = "ptr64", .description = "Pointers are 64-bit wide", .dependencies = &[_]*const Feature { }, @@ -393,6 +434,7 @@ pub const feature_ptr64 = Feature{ pub const feature_singleFloat = Feature{ .name = "single-float", + .llvm_name = "single-float", .description = "Only supports single precision float", .dependencies = &[_]*const Feature { }, @@ -400,6 +442,7 @@ pub const feature_singleFloat = Feature{ pub const feature_softFloat = Feature{ .name = "soft-float", + .llvm_name = "soft-float", .description = "Does not support floating point instructions", .dependencies = &[_]*const Feature { }, @@ -407,6 +450,7 @@ pub const feature_softFloat = Feature{ pub const feature_sym32 = Feature{ .name = "sym32", + .llvm_name = "sym32", .description = "Symbols are 32 bit on Mips64", .dependencies = &[_]*const Feature { }, @@ -414,6 +458,7 @@ pub const feature_sym32 = Feature{ pub const feature_useIndirectJumpHazard = Feature{ .name = "use-indirect-jump-hazard", + .llvm_name = "use-indirect-jump-hazard", .description = "Use indirect jump guards to prevent certain speculation based attacks", .dependencies = &[_]*const Feature { }, @@ -421,6 +466,7 @@ pub const feature_useIndirectJumpHazard = Feature{ pub const feature_useTccInDiv = Feature{ .name = "use-tcc-in-div", + .llvm_name = "use-tcc-in-div", .description = "Force the assembler to use trapping", .dependencies = &[_]*const Feature { }, @@ -428,6 +474,7 @@ pub const feature_useTccInDiv = Feature{ pub const feature_vfpu = Feature{ .name = "vfpu", + .llvm_name = "vfpu", .description = "Enable vector FPU instructions", .dependencies = &[_]*const Feature { }, @@ -435,6 +482,7 @@ pub const feature_vfpu = Feature{ pub const feature_virt = Feature{ .name = "virt", + .llvm_name = "virt", .description = "Mips Virtualization ASE", .dependencies = &[_]*const Feature { }, @@ -442,6 +490,7 @@ pub const feature_virt = Feature{ pub const feature_xgot = Feature{ .name = "xgot", + .llvm_name = "xgot", .description = "Assume 32-bit GOT", .dependencies = &[_]*const Feature { }, @@ -449,14 +498,15 @@ pub const feature_xgot = Feature{ pub const feature_p5600 = Feature{ .name = "p5600", + .llvm_name = "p5600", .description = "The P5600 Processor", .dependencies = &[_]*const Feature { - &feature_mips3_32, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, + &feature_mips5_32r2, &feature_mips4_32r2, + &feature_mips3_32, }, }; @@ -536,9 +586,9 @@ pub const cpu_mips3 = Cpu{ .dependencies = &[_]*const Feature { &feature_mips1, &feature_mips3_32r2, - &feature_mips3_32, - &feature_gp64, &feature_fp64, + &feature_gp64, + &feature_mips3_32, &feature_mips3, }, }; @@ -548,8 +598,8 @@ pub const cpu_mips32 = Cpu{ .llvm_name = "mips32", .dependencies = &[_]*const Feature { &feature_mips1, - &feature_mips3_32, &feature_mips4_32, + &feature_mips3_32, &feature_mips32, }, }; @@ -558,12 +608,12 @@ pub const cpu_mips32r2 = Cpu{ .name = "mips32r2", .llvm_name = "mips32r2", .dependencies = &[_]*const Feature { - &feature_mips4_32, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, &feature_mips4_32r2, + &feature_mips3_32, &feature_mips32r2, }, }; @@ -572,12 +622,12 @@ pub const cpu_mips32r3 = Cpu{ .name = "mips32r3", .llvm_name = "mips32r3", .dependencies = &[_]*const Feature { - &feature_mips3_32, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, + &feature_mips5_32r2, &feature_mips4_32r2, + &feature_mips3_32, &feature_mips32r3, }, }; @@ -586,12 +636,12 @@ pub const cpu_mips32r5 = Cpu{ .name = "mips32r5", .llvm_name = "mips32r5", .dependencies = &[_]*const Feature { - &feature_mips4_32, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, &feature_mips4_32r2, + &feature_mips3_32, &feature_mips32r5, }, }; @@ -601,14 +651,14 @@ pub const cpu_mips32r6 = Cpu{ .llvm_name = "mips32r6", .dependencies = &[_]*const Feature { &feature_abs2008, - &feature_nan2008, - &feature_mips3_32, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, - &feature_mips4_32r2, + &feature_nan2008, + &feature_mips5_32r2, &feature_fp64, + &feature_mips4_32r2, + &feature_mips3_32, &feature_mips32r6, }, }; @@ -617,13 +667,13 @@ pub const cpu_mips4 = Cpu{ .name = "mips4", .llvm_name = "mips4", .dependencies = &[_]*const Feature { - &feature_mips4_32, - &feature_mips4_32r2, &feature_mips1, &feature_mips3_32r2, - &feature_mips3_32, - &feature_gp64, + &feature_mips4_32, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, &feature_mips4, }, }; @@ -632,14 +682,14 @@ pub const cpu_mips5 = Cpu{ .name = "mips5", .llvm_name = "mips5", .dependencies = &[_]*const Feature { - &feature_mips3_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, - &feature_mips4_32r2, + &feature_mips5_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, &feature_mips5, }, }; @@ -648,14 +698,14 @@ pub const cpu_mips64 = Cpu{ .name = "mips64", .llvm_name = "mips64", .dependencies = &[_]*const Feature { - &feature_mips4_32, - &feature_mips4_32r2, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, - &feature_gp64, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, &feature_mips64, }, }; @@ -664,14 +714,14 @@ pub const cpu_mips64r2 = Cpu{ .name = "mips64r2", .llvm_name = "mips64r2", .dependencies = &[_]*const Feature { - &feature_mips3_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, - &feature_mips4_32r2, + &feature_mips5_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, &feature_mips64r2, }, }; @@ -680,14 +730,14 @@ pub const cpu_mips64r3 = Cpu{ .name = "mips64r3", .llvm_name = "mips64r3", .dependencies = &[_]*const Feature { - &feature_mips4_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, - &feature_mips4_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, &feature_mips64r3, }, }; @@ -696,14 +746,14 @@ pub const cpu_mips64r5 = Cpu{ .name = "mips64r5", .llvm_name = "mips64r5", .dependencies = &[_]*const Feature { - &feature_mips3_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, - &feature_mips4_32r2, + &feature_mips5_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, &feature_mips64r5, }, }; @@ -713,15 +763,15 @@ pub const cpu_mips64r6 = Cpu{ .llvm_name = "mips64r6", .dependencies = &[_]*const Feature { &feature_abs2008, - &feature_nan2008, - &feature_mips4_32, - &feature_gp64, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, + &feature_nan2008, &feature_mips5_32r2, - &feature_mips3_32, - &feature_mips4_32r2, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, &feature_mips64r6, }, }; @@ -730,14 +780,14 @@ pub const cpu_octeon = Cpu{ .name = "octeon", .llvm_name = "octeon", .dependencies = &[_]*const Feature { - &feature_mips4_32, - &feature_mips4_32r2, &feature_mips1, &feature_mips3_32r2, + &feature_mips4_32, &feature_mips5_32r2, - &feature_mips3_32, - &feature_gp64, &feature_fp64, + &feature_gp64, + &feature_mips4_32r2, + &feature_mips3_32, &feature_cnmips, &feature_mips64r2, }, @@ -747,12 +797,12 @@ pub const cpu_p5600 = Cpu{ .name = "p5600", .llvm_name = "p5600", .dependencies = &[_]*const Feature { - &feature_mips3_32, &feature_mips1, &feature_mips3_32r2, - &feature_mips5_32r2, &feature_mips4_32, + &feature_mips5_32r2, &feature_mips4_32r2, + &feature_mips3_32, &feature_p5600, }, }; diff --git a/lib/std/target/msp430.zig b/lib/std/target/msp430.zig index 1e3b93b9d0..75e641f0dc 100644 --- a/lib/std/target/msp430.zig +++ b/lib/std/target/msp430.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_hwmult16 = Feature{ .name = "hwmult16", + .llvm_name = "hwmult16", .description = "Enable 16-bit hardware multiplier", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_hwmult16 = Feature{ pub const feature_hwmult32 = Feature{ .name = "hwmult32", + .llvm_name = "hwmult32", .description = "Enable 32-bit hardware multiplier", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_hwmult32 = Feature{ pub const feature_hwmultf5 = Feature{ .name = "hwmultf5", + .llvm_name = "hwmultf5", .description = "Enable F5 series hardware multiplier", .dependencies = &[_]*const Feature { }, @@ -24,6 +27,7 @@ pub const feature_hwmultf5 = Feature{ pub const feature_ext = Feature{ .name = "ext", + .llvm_name = "ext", .description = "Enable MSP430-X extensions", .dependencies = &[_]*const Feature { }, diff --git a/lib/std/target/nvptx.zig b/lib/std/target/nvptx.zig index 815d1116c5..cddd800f30 100644 --- a/lib/std/target/nvptx.zig +++ b/lib/std/target/nvptx.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_ptx32 = Feature{ .name = "ptx32", + .llvm_name = "ptx32", .description = "Use PTX version 3.2", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_ptx32 = Feature{ pub const feature_ptx40 = Feature{ .name = "ptx40", + .llvm_name = "ptx40", .description = "Use PTX version 4.0", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_ptx40 = Feature{ pub const feature_ptx41 = Feature{ .name = "ptx41", + .llvm_name = "ptx41", .description = "Use PTX version 4.1", .dependencies = &[_]*const Feature { }, @@ -24,6 +27,7 @@ pub const feature_ptx41 = Feature{ pub const feature_ptx42 = Feature{ .name = "ptx42", + .llvm_name = "ptx42", .description = "Use PTX version 4.2", .dependencies = &[_]*const Feature { }, @@ -31,6 +35,7 @@ pub const feature_ptx42 = Feature{ pub const feature_ptx43 = Feature{ .name = "ptx43", + .llvm_name = "ptx43", .description = "Use PTX version 4.3", .dependencies = &[_]*const Feature { }, @@ -38,6 +43,7 @@ pub const feature_ptx43 = Feature{ pub const feature_ptx50 = Feature{ .name = "ptx50", + .llvm_name = "ptx50", .description = "Use PTX version 5.0", .dependencies = &[_]*const Feature { }, @@ -45,6 +51,7 @@ pub const feature_ptx50 = Feature{ pub const feature_ptx60 = Feature{ .name = "ptx60", + .llvm_name = "ptx60", .description = "Use PTX version 6.0", .dependencies = &[_]*const Feature { }, @@ -52,6 +59,7 @@ pub const feature_ptx60 = Feature{ pub const feature_ptx61 = Feature{ .name = "ptx61", + .llvm_name = "ptx61", .description = "Use PTX version 6.1", .dependencies = &[_]*const Feature { }, @@ -59,6 +67,7 @@ pub const feature_ptx61 = Feature{ pub const feature_ptx63 = Feature{ .name = "ptx63", + .llvm_name = "ptx63", .description = "Use PTX version 6.3", .dependencies = &[_]*const Feature { }, @@ -66,6 +75,7 @@ pub const feature_ptx63 = Feature{ pub const feature_ptx64 = Feature{ .name = "ptx64", + .llvm_name = "ptx64", .description = "Use PTX version 6.4", .dependencies = &[_]*const Feature { }, @@ -73,6 +83,7 @@ pub const feature_ptx64 = Feature{ pub const feature_sm_20 = Feature{ .name = "sm_20", + .llvm_name = "sm_20", .description = "Target SM 2.0", .dependencies = &[_]*const Feature { }, @@ -80,6 +91,7 @@ pub const feature_sm_20 = Feature{ pub const feature_sm_21 = Feature{ .name = "sm_21", + .llvm_name = "sm_21", .description = "Target SM 2.1", .dependencies = &[_]*const Feature { }, @@ -87,6 +99,7 @@ pub const feature_sm_21 = Feature{ pub const feature_sm_30 = Feature{ .name = "sm_30", + .llvm_name = "sm_30", .description = "Target SM 3.0", .dependencies = &[_]*const Feature { }, @@ -94,6 +107,7 @@ pub const feature_sm_30 = Feature{ pub const feature_sm_32 = Feature{ .name = "sm_32", + .llvm_name = "sm_32", .description = "Target SM 3.2", .dependencies = &[_]*const Feature { }, @@ -101,6 +115,7 @@ pub const feature_sm_32 = Feature{ pub const feature_sm_35 = Feature{ .name = "sm_35", + .llvm_name = "sm_35", .description = "Target SM 3.5", .dependencies = &[_]*const Feature { }, @@ -108,6 +123,7 @@ pub const feature_sm_35 = Feature{ pub const feature_sm_37 = Feature{ .name = "sm_37", + .llvm_name = "sm_37", .description = "Target SM 3.7", .dependencies = &[_]*const Feature { }, @@ -115,6 +131,7 @@ pub const feature_sm_37 = Feature{ pub const feature_sm_50 = Feature{ .name = "sm_50", + .llvm_name = "sm_50", .description = "Target SM 5.0", .dependencies = &[_]*const Feature { }, @@ -122,6 +139,7 @@ pub const feature_sm_50 = Feature{ pub const feature_sm_52 = Feature{ .name = "sm_52", + .llvm_name = "sm_52", .description = "Target SM 5.2", .dependencies = &[_]*const Feature { }, @@ -129,6 +147,7 @@ pub const feature_sm_52 = Feature{ pub const feature_sm_53 = Feature{ .name = "sm_53", + .llvm_name = "sm_53", .description = "Target SM 5.3", .dependencies = &[_]*const Feature { }, @@ -136,6 +155,7 @@ pub const feature_sm_53 = Feature{ pub const feature_sm_60 = Feature{ .name = "sm_60", + .llvm_name = "sm_60", .description = "Target SM 6.0", .dependencies = &[_]*const Feature { }, @@ -143,6 +163,7 @@ pub const feature_sm_60 = Feature{ pub const feature_sm_61 = Feature{ .name = "sm_61", + .llvm_name = "sm_61", .description = "Target SM 6.1", .dependencies = &[_]*const Feature { }, @@ -150,6 +171,7 @@ pub const feature_sm_61 = Feature{ pub const feature_sm_62 = Feature{ .name = "sm_62", + .llvm_name = "sm_62", .description = "Target SM 6.2", .dependencies = &[_]*const Feature { }, @@ -157,6 +179,7 @@ pub const feature_sm_62 = Feature{ pub const feature_sm_70 = Feature{ .name = "sm_70", + .llvm_name = "sm_70", .description = "Target SM 7.0", .dependencies = &[_]*const Feature { }, @@ -164,6 +187,7 @@ pub const feature_sm_70 = Feature{ pub const feature_sm_72 = Feature{ .name = "sm_72", + .llvm_name = "sm_72", .description = "Target SM 7.2", .dependencies = &[_]*const Feature { }, @@ -171,6 +195,7 @@ pub const feature_sm_72 = Feature{ pub const feature_sm_75 = Feature{ .name = "sm_75", + .llvm_name = "sm_75", .description = "Target SM 7.5", .dependencies = &[_]*const Feature { }, diff --git a/lib/std/target/powerpc.zig b/lib/std/target/powerpc.zig index 9e86df2185..6ad23e9466 100644 --- a/lib/std/target/powerpc.zig +++ b/lib/std/target/powerpc.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_bit64 = Feature{ .name = "64bit", + .llvm_name = "64bit", .description = "Enable 64-bit instructions", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_bit64 = Feature{ pub const feature_bitregs64 = Feature{ .name = "64bitregs", + .llvm_name = "64bitregs", .description = "Enable 64-bit registers usage for ppc32 [beta]", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_bitregs64 = Feature{ pub const feature_altivec = Feature{ .name = "altivec", + .llvm_name = "altivec", .description = "Enable Altivec instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -25,6 +28,7 @@ pub const feature_altivec = Feature{ pub const feature_bpermd = Feature{ .name = "bpermd", + .llvm_name = "bpermd", .description = "Enable the bpermd instruction", .dependencies = &[_]*const Feature { }, @@ -32,6 +36,7 @@ pub const feature_bpermd = Feature{ pub const feature_booke = Feature{ .name = "booke", + .llvm_name = "booke", .description = "Enable Book E instructions", .dependencies = &[_]*const Feature { &feature_icbt, @@ -40,6 +45,7 @@ pub const feature_booke = Feature{ pub const feature_cmpb = Feature{ .name = "cmpb", + .llvm_name = "cmpb", .description = "Enable the cmpb instruction", .dependencies = &[_]*const Feature { }, @@ -47,6 +53,7 @@ pub const feature_cmpb = Feature{ pub const feature_crbits = Feature{ .name = "crbits", + .llvm_name = "crbits", .description = "Use condition-register bits individually", .dependencies = &[_]*const Feature { }, @@ -54,6 +61,7 @@ pub const feature_crbits = Feature{ pub const feature_directMove = Feature{ .name = "direct-move", + .llvm_name = "direct-move", .description = "Enable Power8 direct move instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -62,6 +70,7 @@ pub const feature_directMove = Feature{ pub const feature_e500 = Feature{ .name = "e500", + .llvm_name = "e500", .description = "Enable E500/E500mc instructions", .dependencies = &[_]*const Feature { }, @@ -69,6 +78,7 @@ pub const feature_e500 = Feature{ pub const feature_extdiv = Feature{ .name = "extdiv", + .llvm_name = "extdiv", .description = "Enable extended divide instructions", .dependencies = &[_]*const Feature { }, @@ -76,6 +86,7 @@ pub const feature_extdiv = Feature{ pub const feature_fcpsgn = Feature{ .name = "fcpsgn", + .llvm_name = "fcpsgn", .description = "Enable the fcpsgn instruction", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -84,6 +95,7 @@ pub const feature_fcpsgn = Feature{ pub const feature_fpcvt = Feature{ .name = "fpcvt", + .llvm_name = "fpcvt", .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -92,6 +104,7 @@ pub const feature_fpcvt = Feature{ pub const feature_fprnd = Feature{ .name = "fprnd", + .llvm_name = "fprnd", .description = "Enable the fri[mnpz] instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -100,6 +113,7 @@ pub const feature_fprnd = Feature{ pub const feature_fpu = Feature{ .name = "fpu", + .llvm_name = "fpu", .description = "Enable classic FPU instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -108,6 +122,7 @@ pub const feature_fpu = Feature{ pub const feature_fre = Feature{ .name = "fre", + .llvm_name = "fre", .description = "Enable the fre instruction", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -116,6 +131,7 @@ pub const feature_fre = Feature{ pub const feature_fres = Feature{ .name = "fres", + .llvm_name = "fres", .description = "Enable the fres instruction", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -124,6 +140,7 @@ pub const feature_fres = Feature{ pub const feature_frsqrte = Feature{ .name = "frsqrte", + .llvm_name = "frsqrte", .description = "Enable the frsqrte instruction", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -132,6 +149,7 @@ pub const feature_frsqrte = Feature{ pub const feature_frsqrtes = Feature{ .name = "frsqrtes", + .llvm_name = "frsqrtes", .description = "Enable the frsqrtes instruction", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -140,6 +158,7 @@ pub const feature_frsqrtes = Feature{ pub const feature_fsqrt = Feature{ .name = "fsqrt", + .llvm_name = "fsqrt", .description = "Enable the fsqrt instruction", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -148,6 +167,7 @@ pub const feature_fsqrt = Feature{ pub const feature_float128 = Feature{ .name = "float128", + .llvm_name = "float128", .description = "Enable the __float128 data type for IEEE-754R Binary128.", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -156,6 +176,7 @@ pub const feature_float128 = Feature{ pub const feature_htm = Feature{ .name = "htm", + .llvm_name = "htm", .description = "Enable Hardware Transactional Memory instructions", .dependencies = &[_]*const Feature { }, @@ -163,6 +184,7 @@ pub const feature_htm = Feature{ pub const feature_hardFloat = Feature{ .name = "hard-float", + .llvm_name = "hard-float", .description = "Enable floating-point instructions", .dependencies = &[_]*const Feature { }, @@ -170,6 +192,7 @@ pub const feature_hardFloat = Feature{ pub const feature_icbt = Feature{ .name = "icbt", + .llvm_name = "icbt", .description = "Enable icbt instruction", .dependencies = &[_]*const Feature { }, @@ -177,6 +200,7 @@ pub const feature_icbt = Feature{ pub const feature_isaV30Instructions = Feature{ .name = "isa-v30-instructions", + .llvm_name = "isa-v30-instructions", .description = "Enable instructions added in ISA 3.0.", .dependencies = &[_]*const Feature { }, @@ -184,6 +208,7 @@ pub const feature_isaV30Instructions = Feature{ pub const feature_isel = Feature{ .name = "isel", + .llvm_name = "isel", .description = "Enable the isel instruction", .dependencies = &[_]*const Feature { }, @@ -191,6 +216,7 @@ pub const feature_isel = Feature{ pub const feature_invariantFunctionDescriptors = Feature{ .name = "invariant-function-descriptors", + .llvm_name = "invariant-function-descriptors", .description = "Assume function descriptors are invariant", .dependencies = &[_]*const Feature { }, @@ -198,6 +224,7 @@ pub const feature_invariantFunctionDescriptors = Feature{ pub const feature_ldbrx = Feature{ .name = "ldbrx", + .llvm_name = "ldbrx", .description = "Enable the ldbrx instruction", .dependencies = &[_]*const Feature { }, @@ -205,6 +232,7 @@ pub const feature_ldbrx = Feature{ pub const feature_lfiwax = Feature{ .name = "lfiwax", + .llvm_name = "lfiwax", .description = "Enable the lfiwax instruction", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -213,6 +241,7 @@ pub const feature_lfiwax = Feature{ pub const feature_longcall = Feature{ .name = "longcall", + .llvm_name = "longcall", .description = "Always use indirect calls", .dependencies = &[_]*const Feature { }, @@ -220,6 +249,7 @@ pub const feature_longcall = Feature{ pub const feature_mfocrf = Feature{ .name = "mfocrf", + .llvm_name = "mfocrf", .description = "Enable the MFOCRF instruction", .dependencies = &[_]*const Feature { }, @@ -227,6 +257,7 @@ pub const feature_mfocrf = Feature{ pub const feature_msync = Feature{ .name = "msync", + .llvm_name = "msync", .description = "Has only the msync instruction instead of sync", .dependencies = &[_]*const Feature { &feature_icbt, @@ -235,6 +266,7 @@ pub const feature_msync = Feature{ pub const feature_power8Altivec = Feature{ .name = "power8-altivec", + .llvm_name = "power8-altivec", .description = "Enable POWER8 Altivec instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -243,6 +275,7 @@ pub const feature_power8Altivec = Feature{ pub const feature_crypto = Feature{ .name = "crypto", + .llvm_name = "crypto", .description = "Enable POWER8 Crypto instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -251,6 +284,7 @@ pub const feature_crypto = Feature{ pub const feature_power8Vector = Feature{ .name = "power8-vector", + .llvm_name = "power8-vector", .description = "Enable POWER8 vector instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -259,24 +293,27 @@ pub const feature_power8Vector = Feature{ pub const feature_power9Altivec = Feature{ .name = "power9-altivec", + .llvm_name = "power9-altivec", .description = "Enable POWER9 Altivec instructions", .dependencies = &[_]*const Feature { - &feature_isaV30Instructions, &feature_hardFloat, + &feature_isaV30Instructions, }, }; pub const feature_power9Vector = Feature{ .name = "power9-vector", + .llvm_name = "power9-vector", .description = "Enable POWER9 vector instructions", .dependencies = &[_]*const Feature { - &feature_isaV30Instructions, &feature_hardFloat, + &feature_isaV30Instructions, }, }; pub const feature_popcntd = Feature{ .name = "popcntd", + .llvm_name = "popcntd", .description = "Enable the popcnt[dw] instructions", .dependencies = &[_]*const Feature { }, @@ -284,6 +321,7 @@ pub const feature_popcntd = Feature{ pub const feature_ppc4xx = Feature{ .name = "ppc4xx", + .llvm_name = "ppc4xx", .description = "Enable PPC 4xx instructions", .dependencies = &[_]*const Feature { }, @@ -291,6 +329,7 @@ pub const feature_ppc4xx = Feature{ pub const feature_ppc6xx = Feature{ .name = "ppc6xx", + .llvm_name = "ppc6xx", .description = "Enable PPC 6xx instructions", .dependencies = &[_]*const Feature { }, @@ -298,6 +337,7 @@ pub const feature_ppc6xx = Feature{ pub const feature_ppcPostraSched = Feature{ .name = "ppc-postra-sched", + .llvm_name = "ppc-postra-sched", .description = "Use PowerPC post-RA scheduling strategy", .dependencies = &[_]*const Feature { }, @@ -305,6 +345,7 @@ pub const feature_ppcPostraSched = Feature{ pub const feature_ppcPreraSched = Feature{ .name = "ppc-prera-sched", + .llvm_name = "ppc-prera-sched", .description = "Use PowerPC pre-RA scheduling strategy", .dependencies = &[_]*const Feature { }, @@ -312,6 +353,7 @@ pub const feature_ppcPreraSched = Feature{ pub const feature_partwordAtomics = Feature{ .name = "partword-atomics", + .llvm_name = "partword-atomics", .description = "Enable l[bh]arx and st[bh]cx.", .dependencies = &[_]*const Feature { }, @@ -319,6 +361,7 @@ pub const feature_partwordAtomics = Feature{ pub const feature_qpx = Feature{ .name = "qpx", + .llvm_name = "qpx", .description = "Enable QPX instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -327,6 +370,7 @@ pub const feature_qpx = Feature{ pub const feature_recipprec = Feature{ .name = "recipprec", + .llvm_name = "recipprec", .description = "Assume higher precision reciprocal estimates", .dependencies = &[_]*const Feature { }, @@ -334,6 +378,7 @@ pub const feature_recipprec = Feature{ pub const feature_spe = Feature{ .name = "spe", + .llvm_name = "spe", .description = "Enable SPE instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -342,6 +387,7 @@ pub const feature_spe = Feature{ pub const feature_stfiwx = Feature{ .name = "stfiwx", + .llvm_name = "stfiwx", .description = "Enable the stfiwx instruction", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -350,6 +396,7 @@ pub const feature_stfiwx = Feature{ pub const feature_securePlt = Feature{ .name = "secure-plt", + .llvm_name = "secure-plt", .description = "Enable secure plt mode", .dependencies = &[_]*const Feature { }, @@ -357,6 +404,7 @@ pub const feature_securePlt = Feature{ pub const feature_slowPopcntd = Feature{ .name = "slow-popcntd", + .llvm_name = "slow-popcntd", .description = "Has slow popcnt[dw] instructions", .dependencies = &[_]*const Feature { }, @@ -364,6 +412,7 @@ pub const feature_slowPopcntd = Feature{ pub const feature_twoConstNr = Feature{ .name = "two-const-nr", + .llvm_name = "two-const-nr", .description = "Requires two constant Newton-Raphson computation", .dependencies = &[_]*const Feature { }, @@ -371,6 +420,7 @@ pub const feature_twoConstNr = Feature{ pub const feature_vsx = Feature{ .name = "vsx", + .llvm_name = "vsx", .description = "Enable VSX instructions", .dependencies = &[_]*const Feature { &feature_hardFloat, @@ -379,6 +429,7 @@ pub const feature_vsx = Feature{ pub const feature_vectorsUseTwoUnits = Feature{ .name = "vectors-use-two-units", + .llvm_name = "vectors-use-two-units", .description = "Vectors use two units", .dependencies = &[_]*const Feature { }, diff --git a/lib/std/target/riscv.zig b/lib/std/target/riscv.zig index cbb7ccb9ad..e9b976b004 100644 --- a/lib/std/target/riscv.zig +++ b/lib/std/target/riscv.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_bit64 = Feature{ .name = "64bit", + .llvm_name = "64bit", .description = "Implements RV64", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_bit64 = Feature{ pub const feature_e = Feature{ .name = "e", + .llvm_name = "e", .description = "Implements RV32E (provides 16 rather than 32 GPRs)", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_e = Feature{ pub const feature_rvcHints = Feature{ .name = "rvc-hints", + .llvm_name = "rvc-hints", .description = "Enable RVC Hint Instructions.", .dependencies = &[_]*const Feature { }, @@ -24,6 +27,7 @@ pub const feature_rvcHints = Feature{ pub const feature_relax = Feature{ .name = "relax", + .llvm_name = "relax", .description = "Enable Linker relaxation.", .dependencies = &[_]*const Feature { }, @@ -31,6 +35,7 @@ pub const feature_relax = Feature{ pub const feature_a = Feature{ .name = "a", + .llvm_name = "a", .description = "'A' (Atomic Instructions)", .dependencies = &[_]*const Feature { }, @@ -38,6 +43,7 @@ pub const feature_a = Feature{ pub const feature_c = Feature{ .name = "c", + .llvm_name = "c", .description = "'C' (Compressed Instructions)", .dependencies = &[_]*const Feature { }, @@ -45,6 +51,7 @@ pub const feature_c = Feature{ pub const feature_d = Feature{ .name = "d", + .llvm_name = "d", .description = "'D' (Double-Precision Floating-Point)", .dependencies = &[_]*const Feature { &feature_f, @@ -53,6 +60,7 @@ pub const feature_d = Feature{ pub const feature_f = Feature{ .name = "f", + .llvm_name = "f", .description = "'F' (Single-Precision Floating-Point)", .dependencies = &[_]*const Feature { }, @@ -60,6 +68,7 @@ pub const feature_f = Feature{ pub const feature_m = Feature{ .name = "m", + .llvm_name = "m", .description = "'M' (Integer Multiplication and Division)", .dependencies = &[_]*const Feature { }, diff --git a/lib/std/target/sparc.zig b/lib/std/target/sparc.zig index 7cdeddb976..5bf844b870 100644 --- a/lib/std/target/sparc.zig +++ b/lib/std/target/sparc.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_hardQuadFloat = Feature{ .name = "hard-quad-float", + .llvm_name = "hard-quad-float", .description = "Enable quad-word floating point instructions", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_hardQuadFloat = Feature{ pub const feature_leon = Feature{ .name = "leon", + .llvm_name = "leon", .description = "Enable LEON extensions", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_leon = Feature{ pub const feature_noFmuls = Feature{ .name = "no-fmuls", + .llvm_name = "no-fmuls", .description = "Disable the fmuls instruction.", .dependencies = &[_]*const Feature { }, @@ -24,6 +27,7 @@ pub const feature_noFmuls = Feature{ pub const feature_noFsmuld = Feature{ .name = "no-fsmuld", + .llvm_name = "no-fsmuld", .description = "Disable the fsmuld instruction.", .dependencies = &[_]*const Feature { }, @@ -31,6 +35,7 @@ pub const feature_noFsmuld = Feature{ pub const feature_leonpwrpsr = Feature{ .name = "leonpwrpsr", + .llvm_name = "leonpwrpsr", .description = "Enable the PWRPSR instruction", .dependencies = &[_]*const Feature { }, @@ -38,6 +43,7 @@ pub const feature_leonpwrpsr = Feature{ pub const feature_softFloat = Feature{ .name = "soft-float", + .llvm_name = "soft-float", .description = "Use software emulation for floating point", .dependencies = &[_]*const Feature { }, @@ -45,6 +51,7 @@ pub const feature_softFloat = Feature{ pub const feature_softMulDiv = Feature{ .name = "soft-mul-div", + .llvm_name = "soft-mul-div", .description = "Use software emulation for integer multiply and divide", .dependencies = &[_]*const Feature { }, @@ -52,6 +59,7 @@ pub const feature_softMulDiv = Feature{ pub const feature_deprecatedV8 = Feature{ .name = "deprecated-v8", + .llvm_name = "deprecated-v8", .description = "Enable deprecated V8 instructions in V9 mode", .dependencies = &[_]*const Feature { }, @@ -59,6 +67,7 @@ pub const feature_deprecatedV8 = Feature{ pub const feature_v9 = Feature{ .name = "v9", + .llvm_name = "v9", .description = "Enable SPARC-V9 instructions", .dependencies = &[_]*const Feature { }, @@ -66,6 +75,7 @@ pub const feature_v9 = Feature{ pub const feature_vis = Feature{ .name = "vis", + .llvm_name = "vis", .description = "Enable UltraSPARC Visual Instruction Set extensions", .dependencies = &[_]*const Feature { }, @@ -73,6 +83,7 @@ pub const feature_vis = Feature{ pub const feature_vis2 = Feature{ .name = "vis2", + .llvm_name = "vis2", .description = "Enable Visual Instruction Set extensions II", .dependencies = &[_]*const Feature { }, @@ -80,6 +91,7 @@ pub const feature_vis2 = Feature{ pub const feature_vis3 = Feature{ .name = "vis3", + .llvm_name = "vis3", .description = "Enable Visual Instruction Set extensions III", .dependencies = &[_]*const Feature { }, diff --git a/lib/std/target/systemz.zig b/lib/std/target/systemz.zig index 1f5d648468..56bd80efd1 100644 --- a/lib/std/target/systemz.zig +++ b/lib/std/target/systemz.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_dfpPackedConversion = Feature{ .name = "dfp-packed-conversion", + .llvm_name = "dfp-packed-conversion", .description = "Assume that the DFP packed-conversion facility is installed", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_dfpPackedConversion = Feature{ pub const feature_dfpZonedConversion = Feature{ .name = "dfp-zoned-conversion", + .llvm_name = "dfp-zoned-conversion", .description = "Assume that the DFP zoned-conversion facility is installed", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_dfpZonedConversion = Feature{ pub const feature_deflateConversion = Feature{ .name = "deflate-conversion", + .llvm_name = "deflate-conversion", .description = "Assume that the deflate-conversion facility is installed", .dependencies = &[_]*const Feature { }, @@ -24,6 +27,7 @@ pub const feature_deflateConversion = Feature{ pub const feature_distinctOps = Feature{ .name = "distinct-ops", + .llvm_name = "distinct-ops", .description = "Assume that the distinct-operands facility is installed", .dependencies = &[_]*const Feature { }, @@ -31,6 +35,7 @@ pub const feature_distinctOps = Feature{ pub const feature_enhancedDat2 = Feature{ .name = "enhanced-dat-2", + .llvm_name = "enhanced-dat-2", .description = "Assume that the enhanced-DAT facility 2 is installed", .dependencies = &[_]*const Feature { }, @@ -38,6 +43,7 @@ pub const feature_enhancedDat2 = Feature{ pub const feature_enhancedSort = Feature{ .name = "enhanced-sort", + .llvm_name = "enhanced-sort", .description = "Assume that the enhanced-sort facility is installed", .dependencies = &[_]*const Feature { }, @@ -45,6 +51,7 @@ pub const feature_enhancedSort = Feature{ pub const feature_executionHint = Feature{ .name = "execution-hint", + .llvm_name = "execution-hint", .description = "Assume that the execution-hint facility is installed", .dependencies = &[_]*const Feature { }, @@ -52,6 +59,7 @@ pub const feature_executionHint = Feature{ pub const feature_fpExtension = Feature{ .name = "fp-extension", + .llvm_name = "fp-extension", .description = "Assume that the floating-point extension facility is installed", .dependencies = &[_]*const Feature { }, @@ -59,6 +67,7 @@ pub const feature_fpExtension = Feature{ pub const feature_fastSerialization = Feature{ .name = "fast-serialization", + .llvm_name = "fast-serialization", .description = "Assume that the fast-serialization facility is installed", .dependencies = &[_]*const Feature { }, @@ -66,6 +75,7 @@ pub const feature_fastSerialization = Feature{ pub const feature_guardedStorage = Feature{ .name = "guarded-storage", + .llvm_name = "guarded-storage", .description = "Assume that the guarded-storage facility is installed", .dependencies = &[_]*const Feature { }, @@ -73,6 +83,7 @@ pub const feature_guardedStorage = Feature{ pub const feature_highWord = Feature{ .name = "high-word", + .llvm_name = "high-word", .description = "Assume that the high-word facility is installed", .dependencies = &[_]*const Feature { }, @@ -80,6 +91,7 @@ pub const feature_highWord = Feature{ pub const feature_insertReferenceBitsMultiple = Feature{ .name = "insert-reference-bits-multiple", + .llvm_name = "insert-reference-bits-multiple", .description = "Assume that the insert-reference-bits-multiple facility is installed", .dependencies = &[_]*const Feature { }, @@ -87,6 +99,7 @@ pub const feature_insertReferenceBitsMultiple = Feature{ pub const feature_interlockedAccess1 = Feature{ .name = "interlocked-access1", + .llvm_name = "interlocked-access1", .description = "Assume that interlocked-access facility 1 is installed", .dependencies = &[_]*const Feature { }, @@ -94,6 +107,7 @@ pub const feature_interlockedAccess1 = Feature{ pub const feature_loadAndTrap = Feature{ .name = "load-and-trap", + .llvm_name = "load-and-trap", .description = "Assume that the load-and-trap facility is installed", .dependencies = &[_]*const Feature { }, @@ -101,6 +115,7 @@ pub const feature_loadAndTrap = Feature{ pub const feature_loadAndZeroRightmostByte = Feature{ .name = "load-and-zero-rightmost-byte", + .llvm_name = "load-and-zero-rightmost-byte", .description = "Assume that the load-and-zero-rightmost-byte facility is installed", .dependencies = &[_]*const Feature { }, @@ -108,6 +123,7 @@ pub const feature_loadAndZeroRightmostByte = Feature{ pub const feature_loadStoreOnCond = Feature{ .name = "load-store-on-cond", + .llvm_name = "load-store-on-cond", .description = "Assume that the load/store-on-condition facility is installed", .dependencies = &[_]*const Feature { }, @@ -115,6 +131,7 @@ pub const feature_loadStoreOnCond = Feature{ pub const feature_loadStoreOnCond2 = Feature{ .name = "load-store-on-cond-2", + .llvm_name = "load-store-on-cond-2", .description = "Assume that the load/store-on-condition facility 2 is installed", .dependencies = &[_]*const Feature { }, @@ -122,6 +139,7 @@ pub const feature_loadStoreOnCond2 = Feature{ pub const feature_messageSecurityAssistExtension3 = Feature{ .name = "message-security-assist-extension3", + .llvm_name = "message-security-assist-extension3", .description = "Assume that the message-security-assist extension facility 3 is installed", .dependencies = &[_]*const Feature { }, @@ -129,6 +147,7 @@ pub const feature_messageSecurityAssistExtension3 = Feature{ pub const feature_messageSecurityAssistExtension4 = Feature{ .name = "message-security-assist-extension4", + .llvm_name = "message-security-assist-extension4", .description = "Assume that the message-security-assist extension facility 4 is installed", .dependencies = &[_]*const Feature { }, @@ -136,6 +155,7 @@ pub const feature_messageSecurityAssistExtension4 = Feature{ pub const feature_messageSecurityAssistExtension5 = Feature{ .name = "message-security-assist-extension5", + .llvm_name = "message-security-assist-extension5", .description = "Assume that the message-security-assist extension facility 5 is installed", .dependencies = &[_]*const Feature { }, @@ -143,6 +163,7 @@ pub const feature_messageSecurityAssistExtension5 = Feature{ pub const feature_messageSecurityAssistExtension7 = Feature{ .name = "message-security-assist-extension7", + .llvm_name = "message-security-assist-extension7", .description = "Assume that the message-security-assist extension facility 7 is installed", .dependencies = &[_]*const Feature { }, @@ -150,6 +171,7 @@ pub const feature_messageSecurityAssistExtension7 = Feature{ pub const feature_messageSecurityAssistExtension8 = Feature{ .name = "message-security-assist-extension8", + .llvm_name = "message-security-assist-extension8", .description = "Assume that the message-security-assist extension facility 8 is installed", .dependencies = &[_]*const Feature { }, @@ -157,6 +179,7 @@ pub const feature_messageSecurityAssistExtension8 = Feature{ pub const feature_messageSecurityAssistExtension9 = Feature{ .name = "message-security-assist-extension9", + .llvm_name = "message-security-assist-extension9", .description = "Assume that the message-security-assist extension facility 9 is installed", .dependencies = &[_]*const Feature { }, @@ -164,6 +187,7 @@ pub const feature_messageSecurityAssistExtension9 = Feature{ pub const feature_miscellaneousExtensions = Feature{ .name = "miscellaneous-extensions", + .llvm_name = "miscellaneous-extensions", .description = "Assume that the miscellaneous-extensions facility is installed", .dependencies = &[_]*const Feature { }, @@ -171,6 +195,7 @@ pub const feature_miscellaneousExtensions = Feature{ pub const feature_miscellaneousExtensions2 = Feature{ .name = "miscellaneous-extensions-2", + .llvm_name = "miscellaneous-extensions-2", .description = "Assume that the miscellaneous-extensions facility 2 is installed", .dependencies = &[_]*const Feature { }, @@ -178,6 +203,7 @@ pub const feature_miscellaneousExtensions2 = Feature{ pub const feature_miscellaneousExtensions3 = Feature{ .name = "miscellaneous-extensions-3", + .llvm_name = "miscellaneous-extensions-3", .description = "Assume that the miscellaneous-extensions facility 3 is installed", .dependencies = &[_]*const Feature { }, @@ -185,6 +211,7 @@ pub const feature_miscellaneousExtensions3 = Feature{ pub const feature_populationCount = Feature{ .name = "population-count", + .llvm_name = "population-count", .description = "Assume that the population-count facility is installed", .dependencies = &[_]*const Feature { }, @@ -192,6 +219,7 @@ pub const feature_populationCount = Feature{ pub const feature_processorAssist = Feature{ .name = "processor-assist", + .llvm_name = "processor-assist", .description = "Assume that the processor-assist facility is installed", .dependencies = &[_]*const Feature { }, @@ -199,6 +227,7 @@ pub const feature_processorAssist = Feature{ pub const feature_resetReferenceBitsMultiple = Feature{ .name = "reset-reference-bits-multiple", + .llvm_name = "reset-reference-bits-multiple", .description = "Assume that the reset-reference-bits-multiple facility is installed", .dependencies = &[_]*const Feature { }, @@ -206,6 +235,7 @@ pub const feature_resetReferenceBitsMultiple = Feature{ pub const feature_transactionalExecution = Feature{ .name = "transactional-execution", + .llvm_name = "transactional-execution", .description = "Assume that the transactional-execution facility is installed", .dependencies = &[_]*const Feature { }, @@ -213,6 +243,7 @@ pub const feature_transactionalExecution = Feature{ pub const feature_vector = Feature{ .name = "vector", + .llvm_name = "vector", .description = "Assume that the vectory facility is installed", .dependencies = &[_]*const Feature { }, @@ -220,6 +251,7 @@ pub const feature_vector = Feature{ pub const feature_vectorEnhancements1 = Feature{ .name = "vector-enhancements-1", + .llvm_name = "vector-enhancements-1", .description = "Assume that the vector enhancements facility 1 is installed", .dependencies = &[_]*const Feature { }, @@ -227,6 +259,7 @@ pub const feature_vectorEnhancements1 = Feature{ pub const feature_vectorEnhancements2 = Feature{ .name = "vector-enhancements-2", + .llvm_name = "vector-enhancements-2", .description = "Assume that the vector enhancements facility 2 is installed", .dependencies = &[_]*const Feature { }, @@ -234,6 +267,7 @@ pub const feature_vectorEnhancements2 = Feature{ pub const feature_vectorPackedDecimal = Feature{ .name = "vector-packed-decimal", + .llvm_name = "vector-packed-decimal", .description = "Assume that the vector packed decimal facility is installed", .dependencies = &[_]*const Feature { }, @@ -241,6 +275,7 @@ pub const feature_vectorPackedDecimal = Feature{ pub const feature_vectorPackedDecimalEnhancement = Feature{ .name = "vector-packed-decimal-enhancement", + .llvm_name = "vector-packed-decimal-enhancement", .description = "Assume that the vector packed decimal enhancement facility is installed", .dependencies = &[_]*const Feature { }, diff --git a/lib/std/target/wasm.zig b/lib/std/target/wasm.zig index 17d7717708..ae3bfe9138 100644 --- a/lib/std/target/wasm.zig +++ b/lib/std/target/wasm.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_atomics = Feature{ .name = "atomics", + .llvm_name = "atomics", .description = "Enable Atomics", .dependencies = &[_]*const Feature { }, @@ -10,6 +11,7 @@ pub const feature_atomics = Feature{ pub const feature_bulkMemory = Feature{ .name = "bulk-memory", + .llvm_name = "bulk-memory", .description = "Enable bulk memory operations", .dependencies = &[_]*const Feature { }, @@ -17,6 +19,7 @@ pub const feature_bulkMemory = Feature{ pub const feature_exceptionHandling = Feature{ .name = "exception-handling", + .llvm_name = "exception-handling", .description = "Enable Wasm exception handling", .dependencies = &[_]*const Feature { }, @@ -24,6 +27,7 @@ pub const feature_exceptionHandling = Feature{ pub const feature_multivalue = Feature{ .name = "multivalue", + .llvm_name = "multivalue", .description = "Enable multivalue blocks, instructions, and functions", .dependencies = &[_]*const Feature { }, @@ -31,6 +35,7 @@ pub const feature_multivalue = Feature{ pub const feature_mutableGlobals = Feature{ .name = "mutable-globals", + .llvm_name = "mutable-globals", .description = "Enable mutable globals", .dependencies = &[_]*const Feature { }, @@ -38,6 +43,7 @@ pub const feature_mutableGlobals = Feature{ pub const feature_nontrappingFptoint = Feature{ .name = "nontrapping-fptoint", + .llvm_name = "nontrapping-fptoint", .description = "Enable non-trapping float-to-int conversion operators", .dependencies = &[_]*const Feature { }, @@ -45,6 +51,7 @@ pub const feature_nontrappingFptoint = Feature{ pub const feature_simd128 = Feature{ .name = "simd128", + .llvm_name = "simd128", .description = "Enable 128-bit SIMD", .dependencies = &[_]*const Feature { }, @@ -52,6 +59,7 @@ pub const feature_simd128 = Feature{ pub const feature_signExt = Feature{ .name = "sign-ext", + .llvm_name = "sign-ext", .description = "Enable sign extension operators", .dependencies = &[_]*const Feature { }, @@ -59,6 +67,7 @@ pub const feature_signExt = Feature{ pub const feature_tailCall = Feature{ .name = "tail-call", + .llvm_name = "tail-call", .description = "Enable tail call instructions", .dependencies = &[_]*const Feature { }, @@ -66,6 +75,7 @@ pub const feature_tailCall = Feature{ pub const feature_unimplementedSimd128 = Feature{ .name = "unimplemented-simd128", + .llvm_name = "unimplemented-simd128", .description = "Enable 128-bit SIMD not yet implemented in engines", .dependencies = &[_]*const Feature { &feature_simd128, diff --git a/lib/std/target/x86.zig b/lib/std/target/x86.zig index 573282c664..29062173ab 100644 --- a/lib/std/target/x86.zig +++ b/lib/std/target/x86.zig @@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu; pub const feature_dnow3 = Feature{ .name = "3dnow", + .llvm_name = "3dnow", .description = "Enable 3DNow! instructions", .dependencies = &[_]*const Feature { &feature_mmx, @@ -11,6 +12,7 @@ pub const feature_dnow3 = Feature{ pub const feature_dnowa3 = Feature{ .name = "3dnowa", + .llvm_name = "3dnowa", .description = "Enable 3DNow! Athlon instructions", .dependencies = &[_]*const Feature { &feature_mmx, @@ -19,6 +21,7 @@ pub const feature_dnowa3 = Feature{ pub const feature_bit64 = Feature{ .name = "64bit", + .llvm_name = "64bit", .description = "Support 64-bit instructions", .dependencies = &[_]*const Feature { }, @@ -26,6 +29,7 @@ pub const feature_bit64 = Feature{ pub const feature_adx = Feature{ .name = "adx", + .llvm_name = "adx", .description = "Support ADX instructions", .dependencies = &[_]*const Feature { }, @@ -33,6 +37,7 @@ pub const feature_adx = Feature{ pub const feature_aes = Feature{ .name = "aes", + .llvm_name = "aes", .description = "Enable AES instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -41,6 +46,7 @@ pub const feature_aes = Feature{ pub const feature_avx = Feature{ .name = "avx", + .llvm_name = "avx", .description = "Enable AVX instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -49,6 +55,7 @@ pub const feature_avx = Feature{ pub const feature_avx2 = Feature{ .name = "avx2", + .llvm_name = "avx2", .description = "Enable AVX2 instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -57,6 +64,7 @@ pub const feature_avx2 = Feature{ pub const feature_avx512f = Feature{ .name = "avx512f", + .llvm_name = "avx512f", .description = "Enable AVX-512 instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -65,6 +73,7 @@ pub const feature_avx512f = Feature{ pub const feature_avx512bf16 = Feature{ .name = "avx512bf16", + .llvm_name = "avx512bf16", .description = "Support bfloat16 floating point", .dependencies = &[_]*const Feature { &feature_sse, @@ -73,6 +82,7 @@ pub const feature_avx512bf16 = Feature{ pub const feature_avx512bitalg = Feature{ .name = "avx512bitalg", + .llvm_name = "avx512bitalg", .description = "Enable AVX-512 Bit Algorithms", .dependencies = &[_]*const Feature { &feature_sse, @@ -81,6 +91,7 @@ pub const feature_avx512bitalg = Feature{ pub const feature_bmi = Feature{ .name = "bmi", + .llvm_name = "bmi", .description = "Support BMI instructions", .dependencies = &[_]*const Feature { }, @@ -88,6 +99,7 @@ pub const feature_bmi = Feature{ pub const feature_bmi2 = Feature{ .name = "bmi2", + .llvm_name = "bmi2", .description = "Support BMI2 instructions", .dependencies = &[_]*const Feature { }, @@ -95,6 +107,7 @@ pub const feature_bmi2 = Feature{ pub const feature_avx512bw = Feature{ .name = "avx512bw", + .llvm_name = "avx512bw", .description = "Enable AVX-512 Byte and Word Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -103,6 +116,7 @@ pub const feature_avx512bw = Feature{ pub const feature_branchfusion = Feature{ .name = "branchfusion", + .llvm_name = "branchfusion", .description = "CMP/TEST can be fused with conditional branches", .dependencies = &[_]*const Feature { }, @@ -110,6 +124,7 @@ pub const feature_branchfusion = Feature{ pub const feature_avx512cd = Feature{ .name = "avx512cd", + .llvm_name = "avx512cd", .description = "Enable AVX-512 Conflict Detection Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -118,6 +133,7 @@ pub const feature_avx512cd = Feature{ pub const feature_cldemote = Feature{ .name = "cldemote", + .llvm_name = "cldemote", .description = "Enable Cache Demote", .dependencies = &[_]*const Feature { }, @@ -125,6 +141,7 @@ pub const feature_cldemote = Feature{ pub const feature_clflushopt = Feature{ .name = "clflushopt", + .llvm_name = "clflushopt", .description = "Flush A Cache Line Optimized", .dependencies = &[_]*const Feature { }, @@ -132,6 +149,7 @@ pub const feature_clflushopt = Feature{ pub const feature_clwb = Feature{ .name = "clwb", + .llvm_name = "clwb", .description = "Cache Line Write Back", .dependencies = &[_]*const Feature { }, @@ -139,6 +157,7 @@ pub const feature_clwb = Feature{ pub const feature_clzero = Feature{ .name = "clzero", + .llvm_name = "clzero", .description = "Enable Cache Line Zero", .dependencies = &[_]*const Feature { }, @@ -146,6 +165,7 @@ pub const feature_clzero = Feature{ pub const feature_cmov = Feature{ .name = "cmov", + .llvm_name = "cmov", .description = "Enable conditional move instructions", .dependencies = &[_]*const Feature { }, @@ -153,6 +173,7 @@ pub const feature_cmov = Feature{ pub const feature_cx8 = Feature{ .name = "cx8", + .llvm_name = "cx8", .description = "Support CMPXCHG8B instructions", .dependencies = &[_]*const Feature { }, @@ -160,6 +181,7 @@ pub const feature_cx8 = Feature{ pub const feature_cx16 = Feature{ .name = "cx16", + .llvm_name = "cx16", .description = "64-bit with cmpxchg16b", .dependencies = &[_]*const Feature { &feature_cx8, @@ -168,6 +190,7 @@ pub const feature_cx16 = Feature{ pub const feature_avx512dq = Feature{ .name = "avx512dq", + .llvm_name = "avx512dq", .description = "Enable AVX-512 Doubleword and Quadword Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -176,6 +199,7 @@ pub const feature_avx512dq = Feature{ pub const feature_mpx = Feature{ .name = "mpx", + .llvm_name = "mpx", .description = "Deprecated. Support MPX instructions", .dependencies = &[_]*const Feature { }, @@ -183,6 +207,7 @@ pub const feature_mpx = Feature{ pub const feature_enqcmd = Feature{ .name = "enqcmd", + .llvm_name = "enqcmd", .description = "Has ENQCMD instructions", .dependencies = &[_]*const Feature { }, @@ -190,6 +215,7 @@ pub const feature_enqcmd = Feature{ pub const feature_avx512er = Feature{ .name = "avx512er", + .llvm_name = "avx512er", .description = "Enable AVX-512 Exponential and Reciprocal Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -198,6 +224,7 @@ pub const feature_avx512er = Feature{ pub const feature_ermsb = Feature{ .name = "ermsb", + .llvm_name = "ermsb", .description = "REP MOVS/STOS are fast", .dependencies = &[_]*const Feature { }, @@ -205,6 +232,7 @@ pub const feature_ermsb = Feature{ pub const feature_f16c = Feature{ .name = "f16c", + .llvm_name = "f16c", .description = "Support 16-bit floating point conversion instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -213,6 +241,7 @@ pub const feature_f16c = Feature{ pub const feature_fma = Feature{ .name = "fma", + .llvm_name = "fma", .description = "Enable three-operand fused multiple-add", .dependencies = &[_]*const Feature { &feature_sse, @@ -221,6 +250,7 @@ pub const feature_fma = Feature{ pub const feature_fma4 = Feature{ .name = "fma4", + .llvm_name = "fma4", .description = "Enable four-operand fused multiple-add", .dependencies = &[_]*const Feature { &feature_sse, @@ -229,6 +259,7 @@ pub const feature_fma4 = Feature{ pub const feature_fsgsbase = Feature{ .name = "fsgsbase", + .llvm_name = "fsgsbase", .description = "Support FS/GS Base instructions", .dependencies = &[_]*const Feature { }, @@ -236,6 +267,7 @@ pub const feature_fsgsbase = Feature{ pub const feature_fxsr = Feature{ .name = "fxsr", + .llvm_name = "fxsr", .description = "Support fxsave/fxrestore instructions", .dependencies = &[_]*const Feature { }, @@ -243,6 +275,7 @@ pub const feature_fxsr = Feature{ pub const feature_fast11bytenop = Feature{ .name = "fast-11bytenop", + .llvm_name = "fast-11bytenop", .description = "Target can quickly decode up to 11 byte NOPs", .dependencies = &[_]*const Feature { }, @@ -250,6 +283,7 @@ pub const feature_fast11bytenop = Feature{ pub const feature_fast15bytenop = Feature{ .name = "fast-15bytenop", + .llvm_name = "fast-15bytenop", .description = "Target can quickly decode up to 15 byte NOPs", .dependencies = &[_]*const Feature { }, @@ -257,6 +291,7 @@ pub const feature_fast15bytenop = Feature{ pub const feature_fastBextr = Feature{ .name = "fast-bextr", + .llvm_name = "fast-bextr", .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput", .dependencies = &[_]*const Feature { }, @@ -264,6 +299,7 @@ pub const feature_fastBextr = Feature{ pub const feature_fastHops = Feature{ .name = "fast-hops", + .llvm_name = "fast-hops", .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles", .dependencies = &[_]*const Feature { &feature_sse, @@ -272,6 +308,7 @@ pub const feature_fastHops = Feature{ pub const feature_fastLzcnt = Feature{ .name = "fast-lzcnt", + .llvm_name = "fast-lzcnt", .description = "LZCNT instructions are as fast as most simple integer ops", .dependencies = &[_]*const Feature { }, @@ -279,6 +316,7 @@ pub const feature_fastLzcnt = Feature{ pub const feature_fastPartialYmmOrZmmWrite = Feature{ .name = "fast-partial-ymm-or-zmm-write", + .llvm_name = "fast-partial-ymm-or-zmm-write", .description = "Partial writes to YMM/ZMM registers are fast", .dependencies = &[_]*const Feature { }, @@ -286,6 +324,7 @@ pub const feature_fastPartialYmmOrZmmWrite = Feature{ pub const feature_fastShldRotate = Feature{ .name = "fast-shld-rotate", + .llvm_name = "fast-shld-rotate", .description = "SHLD can be used as a faster rotate", .dependencies = &[_]*const Feature { }, @@ -293,6 +332,7 @@ pub const feature_fastShldRotate = Feature{ pub const feature_fastScalarFsqrt = Feature{ .name = "fast-scalar-fsqrt", + .llvm_name = "fast-scalar-fsqrt", .description = "Scalar SQRT is fast (disable Newton-Raphson)", .dependencies = &[_]*const Feature { }, @@ -300,6 +340,7 @@ pub const feature_fastScalarFsqrt = Feature{ pub const feature_fastScalarShiftMasks = Feature{ .name = "fast-scalar-shift-masks", + .llvm_name = "fast-scalar-shift-masks", .description = "Prefer a left/right scalar logical shift pair over a shift+and pair", .dependencies = &[_]*const Feature { }, @@ -307,6 +348,7 @@ pub const feature_fastScalarShiftMasks = Feature{ pub const feature_fastVariableShuffle = Feature{ .name = "fast-variable-shuffle", + .llvm_name = "fast-variable-shuffle", .description = "Shuffles with variable masks are fast", .dependencies = &[_]*const Feature { }, @@ -314,6 +356,7 @@ pub const feature_fastVariableShuffle = Feature{ pub const feature_fastVectorFsqrt = Feature{ .name = "fast-vector-fsqrt", + .llvm_name = "fast-vector-fsqrt", .description = "Vector SQRT is fast (disable Newton-Raphson)", .dependencies = &[_]*const Feature { }, @@ -321,6 +364,7 @@ pub const feature_fastVectorFsqrt = Feature{ pub const feature_fastVectorShiftMasks = Feature{ .name = "fast-vector-shift-masks", + .llvm_name = "fast-vector-shift-masks", .description = "Prefer a left/right vector logical shift pair over a shift+and pair", .dependencies = &[_]*const Feature { }, @@ -328,6 +372,7 @@ pub const feature_fastVectorShiftMasks = Feature{ pub const feature_gfni = Feature{ .name = "gfni", + .llvm_name = "gfni", .description = "Enable Galois Field Arithmetic Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -336,6 +381,7 @@ pub const feature_gfni = Feature{ pub const feature_fastGather = Feature{ .name = "fast-gather", + .llvm_name = "fast-gather", .description = "Indicates if gather is reasonably fast", .dependencies = &[_]*const Feature { }, @@ -343,6 +389,7 @@ pub const feature_fastGather = Feature{ pub const feature_avx512ifma = Feature{ .name = "avx512ifma", + .llvm_name = "avx512ifma", .description = "Enable AVX-512 Integer Fused Multiple-Add", .dependencies = &[_]*const Feature { &feature_sse, @@ -351,6 +398,7 @@ pub const feature_avx512ifma = Feature{ pub const feature_invpcid = Feature{ .name = "invpcid", + .llvm_name = "invpcid", .description = "Invalidate Process-Context Identifier", .dependencies = &[_]*const Feature { }, @@ -358,6 +406,7 @@ pub const feature_invpcid = Feature{ pub const feature_sahf = Feature{ .name = "sahf", + .llvm_name = "sahf", .description = "Support LAHF and SAHF instructions", .dependencies = &[_]*const Feature { }, @@ -365,6 +414,7 @@ pub const feature_sahf = Feature{ pub const feature_leaSp = Feature{ .name = "lea-sp", + .llvm_name = "lea-sp", .description = "Use LEA for adjusting the stack pointer", .dependencies = &[_]*const Feature { }, @@ -372,6 +422,7 @@ pub const feature_leaSp = Feature{ pub const feature_leaUsesAg = Feature{ .name = "lea-uses-ag", + .llvm_name = "lea-uses-ag", .description = "LEA instruction needs inputs at AG stage", .dependencies = &[_]*const Feature { }, @@ -379,6 +430,7 @@ pub const feature_leaUsesAg = Feature{ pub const feature_lwp = Feature{ .name = "lwp", + .llvm_name = "lwp", .description = "Enable LWP instructions", .dependencies = &[_]*const Feature { }, @@ -386,6 +438,7 @@ pub const feature_lwp = Feature{ pub const feature_lzcnt = Feature{ .name = "lzcnt", + .llvm_name = "lzcnt", .description = "Support LZCNT instruction", .dependencies = &[_]*const Feature { }, @@ -393,6 +446,7 @@ pub const feature_lzcnt = Feature{ pub const feature_falseDepsLzcntTzcnt = Feature{ .name = "false-deps-lzcnt-tzcnt", + .llvm_name = "false-deps-lzcnt-tzcnt", .description = "LZCNT/TZCNT have a false dependency on dest register", .dependencies = &[_]*const Feature { }, @@ -400,6 +454,7 @@ pub const feature_falseDepsLzcntTzcnt = Feature{ pub const feature_mmx = Feature{ .name = "mmx", + .llvm_name = "mmx", .description = "Enable MMX instructions", .dependencies = &[_]*const Feature { }, @@ -407,6 +462,7 @@ pub const feature_mmx = Feature{ pub const feature_movbe = Feature{ .name = "movbe", + .llvm_name = "movbe", .description = "Support MOVBE instruction", .dependencies = &[_]*const Feature { }, @@ -414,6 +470,7 @@ pub const feature_movbe = Feature{ pub const feature_movdir64b = Feature{ .name = "movdir64b", + .llvm_name = "movdir64b", .description = "Support movdir64b instruction", .dependencies = &[_]*const Feature { }, @@ -421,6 +478,7 @@ pub const feature_movdir64b = Feature{ pub const feature_movdiri = Feature{ .name = "movdiri", + .llvm_name = "movdiri", .description = "Support movdiri instruction", .dependencies = &[_]*const Feature { }, @@ -428,6 +486,7 @@ pub const feature_movdiri = Feature{ pub const feature_mwaitx = Feature{ .name = "mwaitx", + .llvm_name = "mwaitx", .description = "Enable MONITORX/MWAITX timer functionality", .dependencies = &[_]*const Feature { }, @@ -435,6 +494,7 @@ pub const feature_mwaitx = Feature{ pub const feature_macrofusion = Feature{ .name = "macrofusion", + .llvm_name = "macrofusion", .description = "Various instructions can be fused with conditional branches", .dependencies = &[_]*const Feature { }, @@ -442,6 +502,7 @@ pub const feature_macrofusion = Feature{ pub const feature_mergeToThreewayBranch = Feature{ .name = "merge-to-threeway-branch", + .llvm_name = "merge-to-threeway-branch", .description = "Merge branches to a three-way conditional branch", .dependencies = &[_]*const Feature { }, @@ -449,6 +510,7 @@ pub const feature_mergeToThreewayBranch = Feature{ pub const feature_nopl = Feature{ .name = "nopl", + .llvm_name = "nopl", .description = "Enable NOPL instruction", .dependencies = &[_]*const Feature { }, @@ -456,6 +518,7 @@ pub const feature_nopl = Feature{ pub const feature_pclmul = Feature{ .name = "pclmul", + .llvm_name = "pclmul", .description = "Enable packed carry-less multiplication instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -464,6 +527,7 @@ pub const feature_pclmul = Feature{ pub const feature_pconfig = Feature{ .name = "pconfig", + .llvm_name = "pconfig", .description = "platform configuration instruction", .dependencies = &[_]*const Feature { }, @@ -471,6 +535,7 @@ pub const feature_pconfig = Feature{ pub const feature_avx512pf = Feature{ .name = "avx512pf", + .llvm_name = "avx512pf", .description = "Enable AVX-512 PreFetch Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -479,6 +544,7 @@ pub const feature_avx512pf = Feature{ pub const feature_pku = Feature{ .name = "pku", + .llvm_name = "pku", .description = "Enable protection keys", .dependencies = &[_]*const Feature { }, @@ -486,6 +552,7 @@ pub const feature_pku = Feature{ pub const feature_popcnt = Feature{ .name = "popcnt", + .llvm_name = "popcnt", .description = "Support POPCNT instruction", .dependencies = &[_]*const Feature { }, @@ -493,6 +560,7 @@ pub const feature_popcnt = Feature{ pub const feature_falseDepsPopcnt = Feature{ .name = "false-deps-popcnt", + .llvm_name = "false-deps-popcnt", .description = "POPCNT has a false dependency on dest register", .dependencies = &[_]*const Feature { }, @@ -500,6 +568,7 @@ pub const feature_falseDepsPopcnt = Feature{ pub const feature_prefetchwt1 = Feature{ .name = "prefetchwt1", + .llvm_name = "prefetchwt1", .description = "Prefetch with Intent to Write and T1 Hint", .dependencies = &[_]*const Feature { }, @@ -507,6 +576,7 @@ pub const feature_prefetchwt1 = Feature{ pub const feature_prfchw = Feature{ .name = "prfchw", + .llvm_name = "prfchw", .description = "Support PRFCHW instructions", .dependencies = &[_]*const Feature { }, @@ -514,6 +584,7 @@ pub const feature_prfchw = Feature{ pub const feature_ptwrite = Feature{ .name = "ptwrite", + .llvm_name = "ptwrite", .description = "Support ptwrite instruction", .dependencies = &[_]*const Feature { }, @@ -521,6 +592,7 @@ pub const feature_ptwrite = Feature{ pub const feature_padShortFunctions = Feature{ .name = "pad-short-functions", + .llvm_name = "pad-short-functions", .description = "Pad short functions", .dependencies = &[_]*const Feature { }, @@ -528,6 +600,7 @@ pub const feature_padShortFunctions = Feature{ pub const feature_prefer128Bit = Feature{ .name = "prefer-128-bit", + .llvm_name = "prefer-128-bit", .description = "Prefer 128-bit AVX instructions", .dependencies = &[_]*const Feature { }, @@ -535,6 +608,7 @@ pub const feature_prefer128Bit = Feature{ pub const feature_prefer256Bit = Feature{ .name = "prefer-256-bit", + .llvm_name = "prefer-256-bit", .description = "Prefer 256-bit AVX instructions", .dependencies = &[_]*const Feature { }, @@ -542,6 +616,7 @@ pub const feature_prefer256Bit = Feature{ pub const feature_rdpid = Feature{ .name = "rdpid", + .llvm_name = "rdpid", .description = "Support RDPID instructions", .dependencies = &[_]*const Feature { }, @@ -549,6 +624,7 @@ pub const feature_rdpid = Feature{ pub const feature_rdrnd = Feature{ .name = "rdrnd", + .llvm_name = "rdrnd", .description = "Support RDRAND instruction", .dependencies = &[_]*const Feature { }, @@ -556,6 +632,7 @@ pub const feature_rdrnd = Feature{ pub const feature_rdseed = Feature{ .name = "rdseed", + .llvm_name = "rdseed", .description = "Support RDSEED instruction", .dependencies = &[_]*const Feature { }, @@ -563,6 +640,7 @@ pub const feature_rdseed = Feature{ pub const feature_rtm = Feature{ .name = "rtm", + .llvm_name = "rtm", .description = "Support RTM instructions", .dependencies = &[_]*const Feature { }, @@ -570,6 +648,7 @@ pub const feature_rtm = Feature{ pub const feature_retpoline = Feature{ .name = "retpoline", + .llvm_name = "retpoline", .description = "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct", .dependencies = &[_]*const Feature { &feature_retpolineIndirectCalls, @@ -579,6 +658,7 @@ pub const feature_retpoline = Feature{ pub const feature_retpolineExternalThunk = Feature{ .name = "retpoline-external-thunk", + .llvm_name = "retpoline-external-thunk", .description = "When lowering an indirect call or branch using a `retpoline`, rely on the specified user provided thunk rather than emitting one ourselves. Only has effect when combined with some other retpoline feature", .dependencies = &[_]*const Feature { &feature_retpolineIndirectCalls, @@ -587,6 +667,7 @@ pub const feature_retpolineExternalThunk = Feature{ pub const feature_retpolineIndirectBranches = Feature{ .name = "retpoline-indirect-branches", + .llvm_name = "retpoline-indirect-branches", .description = "Remove speculation of indirect branches from the generated code", .dependencies = &[_]*const Feature { }, @@ -594,6 +675,7 @@ pub const feature_retpolineIndirectBranches = Feature{ pub const feature_retpolineIndirectCalls = Feature{ .name = "retpoline-indirect-calls", + .llvm_name = "retpoline-indirect-calls", .description = "Remove speculation of indirect calls from the generated code", .dependencies = &[_]*const Feature { }, @@ -601,6 +683,7 @@ pub const feature_retpolineIndirectCalls = Feature{ pub const feature_sgx = Feature{ .name = "sgx", + .llvm_name = "sgx", .description = "Enable Software Guard Extensions", .dependencies = &[_]*const Feature { }, @@ -608,6 +691,7 @@ pub const feature_sgx = Feature{ pub const feature_sha = Feature{ .name = "sha", + .llvm_name = "sha", .description = "Enable SHA instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -616,6 +700,7 @@ pub const feature_sha = Feature{ pub const feature_shstk = Feature{ .name = "shstk", + .llvm_name = "shstk", .description = "Support CET Shadow-Stack instructions", .dependencies = &[_]*const Feature { }, @@ -623,6 +708,7 @@ pub const feature_shstk = Feature{ pub const feature_sse = Feature{ .name = "sse", + .llvm_name = "sse", .description = "Enable SSE instructions", .dependencies = &[_]*const Feature { }, @@ -630,6 +716,7 @@ pub const feature_sse = Feature{ pub const feature_sse2 = Feature{ .name = "sse2", + .llvm_name = "sse2", .description = "Enable SSE2 instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -638,6 +725,7 @@ pub const feature_sse2 = Feature{ pub const feature_sse3 = Feature{ .name = "sse3", + .llvm_name = "sse3", .description = "Enable SSE3 instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -646,6 +734,7 @@ pub const feature_sse3 = Feature{ pub const feature_sse4a = Feature{ .name = "sse4a", + .llvm_name = "sse4a", .description = "Support SSE 4a instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -654,6 +743,7 @@ pub const feature_sse4a = Feature{ pub const feature_sse41 = Feature{ .name = "sse4.1", + .llvm_name = "sse4.1", .description = "Enable SSE 4.1 instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -662,6 +752,7 @@ pub const feature_sse41 = Feature{ pub const feature_sse42 = Feature{ .name = "sse4.2", + .llvm_name = "sse4.2", .description = "Enable SSE 4.2 instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -670,6 +761,7 @@ pub const feature_sse42 = Feature{ pub const feature_sseUnalignedMem = Feature{ .name = "sse-unaligned-mem", + .llvm_name = "sse-unaligned-mem", .description = "Allow unaligned memory operands with SSE instructions", .dependencies = &[_]*const Feature { }, @@ -677,6 +769,7 @@ pub const feature_sseUnalignedMem = Feature{ pub const feature_ssse3 = Feature{ .name = "ssse3", + .llvm_name = "ssse3", .description = "Enable SSSE3 instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -685,6 +778,7 @@ pub const feature_ssse3 = Feature{ pub const feature_slow3opsLea = Feature{ .name = "slow-3ops-lea", + .llvm_name = "slow-3ops-lea", .description = "LEA instruction with 3 ops or certain registers is slow", .dependencies = &[_]*const Feature { }, @@ -692,6 +786,7 @@ pub const feature_slow3opsLea = Feature{ pub const feature_idivlToDivb = Feature{ .name = "idivl-to-divb", + .llvm_name = "idivl-to-divb", .description = "Use 8-bit divide for positive values less than 256", .dependencies = &[_]*const Feature { }, @@ -699,6 +794,7 @@ pub const feature_idivlToDivb = Feature{ pub const feature_idivqToDivl = Feature{ .name = "idivq-to-divl", + .llvm_name = "idivq-to-divl", .description = "Use 32-bit divide for positive values less than 2^32", .dependencies = &[_]*const Feature { }, @@ -706,6 +802,7 @@ pub const feature_idivqToDivl = Feature{ pub const feature_slowIncdec = Feature{ .name = "slow-incdec", + .llvm_name = "slow-incdec", .description = "INC and DEC instructions are slower than ADD and SUB", .dependencies = &[_]*const Feature { }, @@ -713,6 +810,7 @@ pub const feature_slowIncdec = Feature{ pub const feature_slowLea = Feature{ .name = "slow-lea", + .llvm_name = "slow-lea", .description = "LEA instruction with certain arguments is slow", .dependencies = &[_]*const Feature { }, @@ -720,6 +818,7 @@ pub const feature_slowLea = Feature{ pub const feature_slowPmaddwd = Feature{ .name = "slow-pmaddwd", + .llvm_name = "slow-pmaddwd", .description = "PMADDWD is slower than PMULLD", .dependencies = &[_]*const Feature { }, @@ -727,6 +826,7 @@ pub const feature_slowPmaddwd = Feature{ pub const feature_slowPmulld = Feature{ .name = "slow-pmulld", + .llvm_name = "slow-pmulld", .description = "PMULLD instruction is slow", .dependencies = &[_]*const Feature { }, @@ -734,6 +834,7 @@ pub const feature_slowPmulld = Feature{ pub const feature_slowShld = Feature{ .name = "slow-shld", + .llvm_name = "slow-shld", .description = "SHLD instruction is slow", .dependencies = &[_]*const Feature { }, @@ -741,6 +842,7 @@ pub const feature_slowShld = Feature{ pub const feature_slowTwoMemOps = Feature{ .name = "slow-two-mem-ops", + .llvm_name = "slow-two-mem-ops", .description = "Two memory operand instructions are slow", .dependencies = &[_]*const Feature { }, @@ -748,6 +850,7 @@ pub const feature_slowTwoMemOps = Feature{ pub const feature_slowUnalignedMem16 = Feature{ .name = "slow-unaligned-mem-16", + .llvm_name = "slow-unaligned-mem-16", .description = "Slow unaligned 16-byte memory access", .dependencies = &[_]*const Feature { }, @@ -755,6 +858,7 @@ pub const feature_slowUnalignedMem16 = Feature{ pub const feature_slowUnalignedMem32 = Feature{ .name = "slow-unaligned-mem-32", + .llvm_name = "slow-unaligned-mem-32", .description = "Slow unaligned 32-byte memory access", .dependencies = &[_]*const Feature { }, @@ -762,6 +866,7 @@ pub const feature_slowUnalignedMem32 = Feature{ pub const feature_softFloat = Feature{ .name = "soft-float", + .llvm_name = "soft-float", .description = "Use software floating point features", .dependencies = &[_]*const Feature { }, @@ -769,6 +874,7 @@ pub const feature_softFloat = Feature{ pub const feature_tbm = Feature{ .name = "tbm", + .llvm_name = "tbm", .description = "Enable TBM instructions", .dependencies = &[_]*const Feature { }, @@ -776,6 +882,7 @@ pub const feature_tbm = Feature{ pub const feature_useAa = Feature{ .name = "use-aa", + .llvm_name = "use-aa", .description = "Use alias analysis during codegen", .dependencies = &[_]*const Feature { }, @@ -783,6 +890,7 @@ pub const feature_useAa = Feature{ pub const feature_vaes = Feature{ .name = "vaes", + .llvm_name = "vaes", .description = "Promote selected AES instructions to AVX512/AVX registers", .dependencies = &[_]*const Feature { &feature_sse, @@ -791,6 +899,7 @@ pub const feature_vaes = Feature{ pub const feature_avx512vbmi = Feature{ .name = "avx512vbmi", + .llvm_name = "avx512vbmi", .description = "Enable AVX-512 Vector Byte Manipulation Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -799,6 +908,7 @@ pub const feature_avx512vbmi = Feature{ pub const feature_avx512vbmi2 = Feature{ .name = "avx512vbmi2", + .llvm_name = "avx512vbmi2", .description = "Enable AVX-512 further Vector Byte Manipulation Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -807,6 +917,7 @@ pub const feature_avx512vbmi2 = Feature{ pub const feature_avx512vl = Feature{ .name = "avx512vl", + .llvm_name = "avx512vl", .description = "Enable AVX-512 Vector Length eXtensions", .dependencies = &[_]*const Feature { &feature_sse, @@ -815,6 +926,7 @@ pub const feature_avx512vl = Feature{ pub const feature_avx512vnni = Feature{ .name = "avx512vnni", + .llvm_name = "avx512vnni", .description = "Enable AVX-512 Vector Neural Network Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -823,6 +935,7 @@ pub const feature_avx512vnni = Feature{ pub const feature_avx512vp2intersect = Feature{ .name = "avx512vp2intersect", + .llvm_name = "avx512vp2intersect", .description = "Enable AVX-512 vp2intersect", .dependencies = &[_]*const Feature { &feature_sse, @@ -831,6 +944,7 @@ pub const feature_avx512vp2intersect = Feature{ pub const feature_vpclmulqdq = Feature{ .name = "vpclmulqdq", + .llvm_name = "vpclmulqdq", .description = "Enable vpclmulqdq instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -839,6 +953,7 @@ pub const feature_vpclmulqdq = Feature{ pub const feature_avx512vpopcntdq = Feature{ .name = "avx512vpopcntdq", + .llvm_name = "avx512vpopcntdq", .description = "Enable AVX-512 Population Count Instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -847,6 +962,7 @@ pub const feature_avx512vpopcntdq = Feature{ pub const feature_waitpkg = Feature{ .name = "waitpkg", + .llvm_name = "waitpkg", .description = "Wait and pause enhancements", .dependencies = &[_]*const Feature { }, @@ -854,6 +970,7 @@ pub const feature_waitpkg = Feature{ pub const feature_wbnoinvd = Feature{ .name = "wbnoinvd", + .llvm_name = "wbnoinvd", .description = "Write Back No Invalidate", .dependencies = &[_]*const Feature { }, @@ -861,6 +978,7 @@ pub const feature_wbnoinvd = Feature{ pub const feature_x87 = Feature{ .name = "x87", + .llvm_name = "x87", .description = "Enable X87 float instructions", .dependencies = &[_]*const Feature { }, @@ -868,6 +986,7 @@ pub const feature_x87 = Feature{ pub const feature_xop = Feature{ .name = "xop", + .llvm_name = "xop", .description = "Enable XOP instructions", .dependencies = &[_]*const Feature { &feature_sse, @@ -876,6 +995,7 @@ pub const feature_xop = Feature{ pub const feature_xsave = Feature{ .name = "xsave", + .llvm_name = "xsave", .description = "Support xsave instructions", .dependencies = &[_]*const Feature { }, @@ -883,6 +1003,7 @@ pub const feature_xsave = Feature{ pub const feature_xsavec = Feature{ .name = "xsavec", + .llvm_name = "xsavec", .description = "Support xsavec instructions", .dependencies = &[_]*const Feature { }, @@ -890,6 +1011,7 @@ pub const feature_xsavec = Feature{ pub const feature_xsaveopt = Feature{ .name = "xsaveopt", + .llvm_name = "xsaveopt", .description = "Support xsaveopt instructions", .dependencies = &[_]*const Feature { }, @@ -897,6 +1019,7 @@ pub const feature_xsaveopt = Feature{ pub const feature_xsaves = Feature{ .name = "xsaves", + .llvm_name = "xsaves", .description = "Support xsaves instructions", .dependencies = &[_]*const Feature { }, @@ -904,6 +1027,7 @@ pub const feature_xsaves = Feature{ pub const feature_bitMode16 = Feature{ .name = "16bit-mode", + .llvm_name = "16bit-mode", .description = "16-bit mode (i8086)", .dependencies = &[_]*const Feature { }, @@ -911,6 +1035,7 @@ pub const feature_bitMode16 = Feature{ pub const feature_bitMode32 = Feature{ .name = "32bit-mode", + .llvm_name = "32bit-mode", .description = "32-bit mode (80386)", .dependencies = &[_]*const Feature { }, @@ -918,6 +1043,7 @@ pub const feature_bitMode32 = Feature{ pub const feature_bitMode64 = Feature{ .name = "64bit-mode", + .llvm_name = "64bit-mode", .description = "64-bit mode (x86_64)", .dependencies = &[_]*const Feature { }, |
