struct cpu [src]

Members

Source

pub const cpu = struct { pub const alderlake: CpuModel = .{ .name = "alderlake", .llvm_name = "alderlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avxvnni, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cx16, .f16c, .false_deps_perm, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_movmsk_over_vtest, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .slow_3ops_lea, .smap, .smep, .tuning_fast_imm_vector_shift, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const amdfam10: CpuModel = .{ .name = "amdfam10", .llvm_name = "amdfam10", .features = featureSet(&[_]Feature{ .@"3dnowa", .@"64bit", .cmov, .cx16, .fast_scalar_shift_masks, .fxsr, .idivq_to_divl, .lzcnt, .nopl, .popcnt, .prfchw, .sahf, .sbb_dep_breaking, .slow_shld, .sse4a, .vzeroupper, .x87, }), }; pub const arrowlake: CpuModel = .{ .name = "arrowlake", .llvm_name = "arrowlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avxifma, .avxneconvert, .avxvnni, .avxvnniint8, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cmpccxadd, .cx16, .enqcmd, .f16c, .false_deps_perm, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_movmsk_over_vtest, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .slow_3ops_lea, .smap, .smep, .tuning_fast_imm_vector_shift, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const arrowlake_s: CpuModel = .{ .name = "arrowlake_s", .llvm_name = "arrowlake-s", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avxifma, .avxneconvert, .avxvnni, .avxvnniint16, .avxvnniint8, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cmpccxadd, .cx16, .enqcmd, .f16c, .false_deps_perm, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_movmsk_over_vtest, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .sha512, .shstk, .slow_3ops_lea, .sm3, .sm4, .smap, .smep, .tuning_fast_imm_vector_shift, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const athlon: CpuModel = .{ .name = "athlon", .llvm_name = "athlon", .features = featureSet(&[_]Feature{ .@"3dnowa", .cmov, .cx8, .nopl, .prfchw, .slow_shld, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const athlon64: CpuModel = .{ .name = "athlon64", .llvm_name = "athlon64", .features = featureSet(&[_]Feature{ .@"3dnowa", .@"64bit", .cmov, .cx8, .fast_scalar_shift_masks, .fxsr, .nopl, .prfchw, .sbb_dep_breaking, .slow_shld, .slow_unaligned_mem_16, .sse2, .vzeroupper, .x87, }), }; pub const athlon64_sse3: CpuModel = .{ .name = "athlon64_sse3", .llvm_name = "athlon64-sse3", .features = featureSet(&[_]Feature{ .@"3dnowa", .@"64bit", .cmov, .cx16, .fast_scalar_shift_masks, .fxsr, .nopl, .prfchw, .sbb_dep_breaking, .slow_shld, .slow_unaligned_mem_16, .sse3, .vzeroupper, .x87, }), }; pub const athlon_4: CpuModel = .{ .name = "athlon_4", .llvm_name = "athlon-4", .features = featureSet(&[_]Feature{ .@"3dnowa", .cmov, .cx8, .fxsr, .nopl, .prfchw, .slow_shld, .slow_unaligned_mem_16, .sse, .vzeroupper, .x87, }), }; pub const athlon_fx: CpuModel = .{ .name = "athlon_fx", .llvm_name = "athlon-fx", .features = featureSet(&[_]Feature{ .@"3dnowa", .@"64bit", .cmov, .cx8, .fast_scalar_shift_masks, .fxsr, .nopl, .prfchw, .sbb_dep_breaking, .slow_shld, .slow_unaligned_mem_16, .sse2, .vzeroupper, .x87, }), }; pub const athlon_mp: CpuModel = .{ .name = "athlon_mp", .llvm_name = "athlon-mp", .features = featureSet(&[_]Feature{ .@"3dnowa", .cmov, .cx8, .fxsr, .nopl, .prfchw, .slow_shld, .slow_unaligned_mem_16, .sse, .vzeroupper, .x87, }), }; pub const athlon_tbird: CpuModel = .{ .name = "athlon_tbird", .llvm_name = "athlon-tbird", .features = featureSet(&[_]Feature{ .@"3dnowa", .cmov, .cx8, .nopl, .prfchw, .slow_shld, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const athlon_xp: CpuModel = .{ .name = "athlon_xp", .llvm_name = "athlon-xp", .features = featureSet(&[_]Feature{ .@"3dnowa", .cmov, .cx8, .fxsr, .nopl, .prfchw, .slow_shld, .slow_unaligned_mem_16, .sse, .vzeroupper, .x87, }), }; pub const atom: CpuModel = .{ .name = "atom", .llvm_name = "atom", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .fast_imm16, .fxsr, .idivl_to_divb, .idivq_to_divl, .lea_sp, .lea_uses_ag, .mmx, .movbe, .no_bypass_delay, .nopl, .pad_short_functions, .sahf, .slow_two_mem_ops, .slow_unaligned_mem_16, .ssse3, .vzeroupper, .x87, }), }; pub const atom_sse4_2_movbe: CpuModel = .{ .name = "atom_sse4_2_movbe", .llvm_name = "atom_sse4_2_movbe", .features = featureSet(&[_]Feature{ .@"64bit", .aes, .clflushopt, .cmov, .cx16, .false_deps_popcnt, .fast_7bytenop, .fast_imm16, .fast_movbe, .fsgsbase, .fxsr, .idivq_to_divl, .mmx, .movbe, .no_bypass_delay, .nopl, .pclmul, .popcnt, .prfchw, .rdrnd, .rdseed, .sahf, .sha, .slow_incdec, .slow_lea, .slow_pmulld, .slow_two_mem_ops, .sse4_2, .use_slm_arith_costs, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const barcelona: CpuModel = .{ .name = "barcelona", .llvm_name = "barcelona", .features = featureSet(&[_]Feature{ .@"3dnowa", .@"64bit", .cmov, .cx16, .fast_scalar_shift_masks, .fxsr, .idivq_to_divl, .lzcnt, .nopl, .popcnt, .prfchw, .sahf, .sbb_dep_breaking, .slow_shld, .smap, .smep, .sse4a, .vzeroupper, .x87, }), }; pub const bdver1: CpuModel = .{ .name = "bdver1", .llvm_name = "bdver1", .features = featureSet(&[_]Feature{ .@"64bit", .aes, .branchfusion, .cmov, .cx16, .fast_11bytenop, .fast_scalar_shift_masks, .fxsr, .idivq_to_divl, .lwp, .lzcnt, .mmx, .nopl, .pclmul, .popcnt, .prfchw, .sahf, .sbb_dep_breaking, .slow_shld, .vzeroupper, .x87, .xop, .xsave, }), }; pub const bdver2: CpuModel = .{ .name = "bdver2", .llvm_name = "bdver2", .features = featureSet(&[_]Feature{ .@"64bit", .aes, .bmi, .branchfusion, .cmov, .cx16, .f16c, .fast_11bytenop, .fast_bextr, .fast_movbe, .fast_scalar_shift_masks, .fma, .fxsr, .idivq_to_divl, .lwp, .lzcnt, .mmx, .nopl, .pclmul, .popcnt, .prfchw, .sahf, .sbb_dep_breaking, .slow_shld, .tbm, .vzeroupper, .x87, .xop, .xsave, }), }; pub const bdver3: CpuModel = .{ .name = "bdver3", .llvm_name = "bdver3", .features = featureSet(&[_]Feature{ .@"64bit", .aes, .bmi, .branchfusion, .cmov, .cx16, .f16c, .fast_11bytenop, .fast_bextr, .fast_movbe, .fast_scalar_shift_masks, .fma, .fsgsbase, .fxsr, .idivq_to_divl, .lwp, .lzcnt, .mmx, .nopl, .pclmul, .popcnt, .prfchw, .sahf, .sbb_dep_breaking, .slow_shld, .tbm, .vzeroupper, .x87, .xop, .xsaveopt, }), }; pub const bdver4: CpuModel = .{ .name = "bdver4", .llvm_name = "bdver4", .features = featureSet(&[_]Feature{ .@"64bit", .aes, .avx2, .bmi, .bmi2, .branchfusion, .cmov, .cx16, .f16c, .fast_11bytenop, .fast_bextr, .fast_movbe, .fast_scalar_shift_masks, .fma, .fsgsbase, .fxsr, .idivq_to_divl, .lwp, .lzcnt, .mmx, .movbe, .mwaitx, .nopl, .pclmul, .popcnt, .prfchw, .rdrnd, .sahf, .sbb_dep_breaking, .slow_shld, .tbm, .vzeroupper, .x87, .xop, .xsaveopt, }), }; pub const bonnell: CpuModel = .{ .name = "bonnell", .llvm_name = "bonnell", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .fast_imm16, .fxsr, .idivl_to_divb, .idivq_to_divl, .lea_sp, .lea_uses_ag, .mmx, .movbe, .no_bypass_delay, .nopl, .pad_short_functions, .sahf, .slow_two_mem_ops, .slow_unaligned_mem_16, .ssse3, .vzeroupper, .x87, }), }; pub const broadwell: CpuModel = .{ .name = "broadwell", .llvm_name = "broadwell", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avx2, .bmi, .bmi2, .cmov, .cx16, .ermsb, .f16c, .false_deps_lzcnt_tzcnt, .false_deps_popcnt, .fast_15bytenop, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fma, .fsgsbase, .fxsr, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pclmul, .popcnt, .prfchw, .rdrnd, .rdseed, .sahf, .slow_3ops_lea, .smap, .smep, .vzeroupper, .x87, .xsaveopt, }), }; pub const btver1: CpuModel = .{ .name = "btver1", .llvm_name = "btver1", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .fast_15bytenop, .fast_imm16, .fast_scalar_shift_masks, .fast_vector_shift_masks, .fxsr, .idivq_to_divl, .lzcnt, .mmx, .nopl, .popcnt, .prfchw, .sahf, .sbb_dep_breaking, .slow_shld, .sse4a, .ssse3, .vzeroupper, .x87, }), }; pub const btver2: CpuModel = .{ .name = "btver2", .llvm_name = "btver2", .features = featureSet(&[_]Feature{ .@"64bit", .aes, .bmi, .cmov, .cx16, .f16c, .fast_15bytenop, .fast_bextr, .fast_hops, .fast_imm16, .fast_lzcnt, .fast_movbe, .fast_scalar_shift_masks, .fast_vector_shift_masks, .fxsr, .idivq_to_divl, .lzcnt, .mmx, .movbe, .nopl, .pclmul, .popcnt, .prfchw, .sahf, .sbb_dep_breaking, .slow_shld, .sse4a, .x87, .xsaveopt, }), }; pub const c3: CpuModel = .{ .name = "c3", .llvm_name = "c3", .features = featureSet(&[_]Feature{ .@"3dnow", .prfchw, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const c3_2: CpuModel = .{ .name = "c3_2", .llvm_name = "c3-2", .features = featureSet(&[_]Feature{ .cmov, .cx8, .fxsr, .mmx, .slow_unaligned_mem_16, .sse, .vzeroupper, .x87, }), }; pub const cannonlake: CpuModel = .{ .name = "cannonlake", .llvm_name = "cannonlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .allow_light_256_bit, .avx512cd, .avx512dq, .avx512ifma, .avx512vbmi, .avx512vl, .bmi, .bmi2, .clflushopt, .cmov, .cx16, .ermsb, .evex512, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fxsr, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pclmul, .pku, .popcnt, .prefer_256_bit, .prfchw, .rdrnd, .rdseed, .sahf, .sha, .slow_3ops_lea, .smap, .smep, .tuning_fast_imm_vector_shift, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const cascadelake: CpuModel = .{ .name = "cascadelake", .llvm_name = "cascadelake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .allow_light_256_bit, .avx512bw, .avx512cd, .avx512dq, .avx512vl, .avx512vnni, .bmi, .bmi2, .clflushopt, .clwb, .cmov, .cx16, .ermsb, .evex512, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .faster_shift_than_shuffle, .fsgsbase, .fxsr, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pclmul, .pku, .popcnt, .prefer_256_bit, .prfchw, .rdrnd, .rdseed, .sahf, .slow_3ops_lea, .smap, .smep, .tuning_fast_imm_vector_shift, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const clearwaterforest: CpuModel = .{ .name = "clearwaterforest", .llvm_name = "clearwaterforest", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avxifma, .avxneconvert, .avxvnni, .avxvnniint16, .avxvnniint8, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cmpccxadd, .cx16, .enqcmd, .f16c, .false_deps_perm, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_movmsk_over_vtest, .prefetchi, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .sha512, .shstk, .slow_3ops_lea, .sm3, .sm4, .tuning_fast_imm_vector_shift, .uintr, .usermsr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const cooperlake: CpuModel = .{ .name = "cooperlake", .llvm_name = "cooperlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .allow_light_256_bit, .avx512bf16, .avx512cd, .avx512dq, .avx512vl, .avx512vnni, .bmi, .bmi2, .clflushopt, .clwb, .cmov, .cx16, .ermsb, .evex512, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .faster_shift_than_shuffle, .fsgsbase, .fxsr, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pclmul, .pku, .popcnt, .prefer_256_bit, .prfchw, .rdrnd, .rdseed, .sahf, .slow_3ops_lea, .tuning_fast_imm_vector_shift, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const core2: CpuModel = .{ .name = "core2", .llvm_name = "core2", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .fxsr, .macrofusion, .mmx, .nopl, .sahf, .slow_unaligned_mem_16, .ssse3, .vzeroupper, .x87, }), }; pub const corei7: CpuModel = .{ .name = "corei7", .llvm_name = "corei7", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .fxsr, .idivq_to_divl, .macrofusion, .mmx, .no_bypass_delay_mov, .nopl, .popcnt, .sahf, .sse4_2, .vzeroupper, .x87, }), }; pub const emeraldrapids: CpuModel = .{ .name = "emeraldrapids", .llvm_name = "emeraldrapids", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .amx_bf16, .amx_int8, .avx512bf16, .avx512bitalg, .avx512cd, .avx512fp16, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vnni, .avx512vpopcntdq, .avxvnni, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cx16, .enqcmd, .ermsb, .evex512, .false_deps_getmant, .false_deps_mulc, .false_deps_mullq, .false_deps_perm, .false_deps_range, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_256_bit, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .smap, .smep, .tsxldtrk, .tuning_fast_imm_vector_shift, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .wbnoinvd, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const generic: CpuModel = .{ .name = "generic", .llvm_name = "generic", .features = featureSet(&[_]Feature{ .@"64bit", .cx8, .fast_15bytenop, .fast_scalar_fsqrt, .idivq_to_divl, .macrofusion, .slow_3ops_lea, .vzeroupper, .x87, }), }; pub const geode: CpuModel = .{ .name = "geode", .llvm_name = "geode", .features = featureSet(&[_]Feature{ .@"3dnowa", .cx8, .prfchw, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const goldmont: CpuModel = .{ .name = "goldmont", .llvm_name = "goldmont", .features = featureSet(&[_]Feature{ .@"64bit", .aes, .clflushopt, .cmov, .cx16, .false_deps_popcnt, .fast_imm16, .fast_movbe, .fsgsbase, .fxsr, .mmx, .movbe, .no_bypass_delay, .nopl, .pclmul, .popcnt, .prfchw, .rdrnd, .rdseed, .sahf, .sha, .slow_incdec, .slow_lea, .slow_two_mem_ops, .smap, .smep, .sse4_2, .use_glm_div_sqrt_costs, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const goldmont_plus: CpuModel = .{ .name = "goldmont_plus", .llvm_name = "goldmont-plus", .features = featureSet(&[_]Feature{ .@"64bit", .aes, .clflushopt, .cmov, .cx16, .fast_imm16, .fast_movbe, .fsgsbase, .fxsr, .mmx, .movbe, .no_bypass_delay, .nopl, .pclmul, .popcnt, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .sha, .slow_incdec, .slow_lea, .slow_two_mem_ops, .sse4_2, .use_glm_div_sqrt_costs, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const gracemont: CpuModel = .{ .name = "gracemont", .llvm_name = "gracemont", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .avxvnni, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cx16, .f16c, .false_deps_popcnt, .fast_15bytenop, .fast_scalar_fsqrt, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .nopl, .pconfig, .pku, .popcnt, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .slow_3ops_lea, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const grandridge: CpuModel = .{ .name = "grandridge", .llvm_name = "grandridge", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .avxifma, .avxneconvert, .avxvnni, .avxvnniint8, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cmpccxadd, .cx16, .enqcmd, .f16c, .false_deps_popcnt, .fast_15bytenop, .fast_scalar_fsqrt, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .nopl, .pconfig, .pku, .popcnt, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .slow_3ops_lea, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const graniterapids: CpuModel = .{ .name = "graniterapids", .llvm_name = "graniterapids", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .amx_bf16, .amx_fp16, .amx_int8, .avx512bf16, .avx512bitalg, .avx512cd, .avx512fp16, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vnni, .avx512vpopcntdq, .avxvnni, .bmi, .bmi2, .branch_hint, .cldemote, .clflushopt, .clwb, .cmov, .cx16, .enqcmd, .ermsb, .evex512, .false_deps_getmant, .false_deps_mulc, .false_deps_mullq, .false_deps_perm, .false_deps_range, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_256_bit, .prefetchi, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .tsxldtrk, .tuning_fast_imm_vector_shift, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .wbnoinvd, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const graniterapids_d: CpuModel = .{ .name = "graniterapids_d", .llvm_name = "graniterapids-d", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .amx_bf16, .amx_complex, .amx_fp16, .amx_int8, .avx512bf16, .avx512bitalg, .avx512cd, .avx512fp16, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vnni, .avx512vpopcntdq, .avxvnni, .bmi, .bmi2, .branch_hint, .cldemote, .clflushopt, .clwb, .cmov, .cx16, .enqcmd, .ermsb, .evex512, .false_deps_getmant, .false_deps_mulc, .false_deps_mullq, .false_deps_perm, .false_deps_range, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_256_bit, .prefetchi, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .tsxldtrk, .tuning_fast_imm_vector_shift, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .wbnoinvd, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const haswell: CpuModel = .{ .name = "haswell", .llvm_name = "haswell", .features = featureSet(&[_]Feature{ .@"64bit", .allow_light_256_bit, .avx2, .bmi, .bmi2, .cmov, .cx16, .ermsb, .f16c, .false_deps_lzcnt_tzcnt, .false_deps_popcnt, .fast_15bytenop, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fma, .fsgsbase, .fxsr, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pclmul, .popcnt, .rdrnd, .sahf, .slow_3ops_lea, .smep, .vzeroupper, .x87, .xsaveopt, }), }; pub const @"i386": CpuModel = .{ .name = "i386", .llvm_name = "i386", .features = featureSet(&[_]Feature{ .bsf_bsr_0_clobbers_result, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const @"i486": CpuModel = .{ .name = "i486", .llvm_name = "i486", .features = featureSet(&[_]Feature{ .bsf_bsr_0_clobbers_result, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const @"i586": CpuModel = .{ .name = "i586", .llvm_name = "i586", .features = featureSet(&[_]Feature{ .cx8, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const @"i686": CpuModel = .{ .name = "i686", .llvm_name = "i686", .features = featureSet(&[_]Feature{ .cmov, .cx8, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const icelake_client: CpuModel = .{ .name = "icelake_client", .llvm_name = "icelake-client", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avx512bitalg, .avx512cd, .avx512dq, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vl, .avx512vnni, .avx512vpopcntdq, .bmi, .bmi2, .clflushopt, .cmov, .cx16, .ermsb, .evex512, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pku, .popcnt, .prefer_256_bit, .prfchw, .rdpid, .rdrnd, .rdseed, .sahf, .sha, .tuning_fast_imm_vector_shift, .vaes, .vpclmulqdq, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const icelake_server: CpuModel = .{ .name = "icelake_server", .llvm_name = "icelake-server", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avx512bitalg, .avx512cd, .avx512dq, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vl, .avx512vnni, .avx512vpopcntdq, .bmi, .bmi2, .clflushopt, .clwb, .cmov, .cx16, .ermsb, .evex512, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_256_bit, .prfchw, .rdpid, .rdrnd, .rdseed, .sahf, .sha, .tuning_fast_imm_vector_shift, .vaes, .vpclmulqdq, .vzeroupper, .wbnoinvd, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const ivybridge: CpuModel = .{ .name = "ivybridge", .llvm_name = "ivybridge", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .f16c, .false_deps_popcnt, .fast_15bytenop, .fast_scalar_fsqrt, .fast_shld_rotate, .fsgsbase, .fxsr, .idivq_to_divl, .macrofusion, .mmx, .no_bypass_delay_mov, .nopl, .pclmul, .popcnt, .rdrnd, .sahf, .slow_3ops_lea, .slow_unaligned_mem_32, .smep, .vzeroupper, .x87, .xsaveopt, }), }; pub const k6: CpuModel = .{ .name = "k6", .llvm_name = "k6", .features = featureSet(&[_]Feature{ .cx8, .mmx, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const k6_2: CpuModel = .{ .name = "k6_2", .llvm_name = "k6-2", .features = featureSet(&[_]Feature{ .@"3dnow", .cx8, .prfchw, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const k6_3: CpuModel = .{ .name = "k6_3", .llvm_name = "k6-3", .features = featureSet(&[_]Feature{ .@"3dnow", .cx8, .prfchw, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const k8: CpuModel = .{ .name = "k8", .llvm_name = "k8", .features = featureSet(&[_]Feature{ .@"3dnowa", .@"64bit", .cmov, .cx8, .fast_scalar_shift_masks, .fxsr, .nopl, .prfchw, .sbb_dep_breaking, .slow_shld, .slow_unaligned_mem_16, .sse2, .vzeroupper, .x87, }), }; pub const k8_sse3: CpuModel = .{ .name = "k8_sse3", .llvm_name = "k8-sse3", .features = featureSet(&[_]Feature{ .@"3dnowa", .@"64bit", .cmov, .cx16, .fast_scalar_shift_masks, .fxsr, .nopl, .prfchw, .sbb_dep_breaking, .slow_shld, .slow_unaligned_mem_16, .sse3, .vzeroupper, .x87, }), }; pub const knl: CpuModel = .{ .name = "knl", .llvm_name = "knl", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .avx512cd, .avx512er, .avx512pf, .bmi, .bmi2, .cmov, .cx16, .evex512, .fast_gather, .fast_imm16, .fast_movbe, .fsgsbase, .fxsr, .idivq_to_divl, .lzcnt, .mmx, .movbe, .nopl, .pclmul, .popcnt, .prefer_mask_registers, .prefetchwt1, .prfchw, .rdrnd, .rdseed, .sahf, .slow_3ops_lea, .slow_incdec, .slow_pmaddwd, .slow_two_mem_ops, .x87, .xsaveopt, }), }; pub const knm: CpuModel = .{ .name = "knm", .llvm_name = "knm", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .avx512cd, .avx512er, .avx512pf, .avx512vpopcntdq, .bmi, .bmi2, .cmov, .cx16, .evex512, .fast_gather, .fast_imm16, .fast_movbe, .fsgsbase, .fxsr, .idivq_to_divl, .lzcnt, .mmx, .movbe, .nopl, .pclmul, .popcnt, .prefer_mask_registers, .prefetchwt1, .prfchw, .rdrnd, .rdseed, .sahf, .slow_3ops_lea, .slow_incdec, .slow_pmaddwd, .slow_two_mem_ops, .x87, .xsaveopt, }), }; pub const lakemont: CpuModel = .{ .name = "lakemont", .llvm_name = "lakemont", .features = featureSet(&[_]Feature{ .cx8, .slow_unaligned_mem_16, .soft_float, .vzeroupper, }), }; pub const lunarlake: CpuModel = .{ .name = "lunarlake", .llvm_name = "lunarlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avxifma, .avxneconvert, .avxvnni, .avxvnniint16, .avxvnniint8, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cmpccxadd, .cx16, .enqcmd, .f16c, .false_deps_perm, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_movmsk_over_vtest, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .sha512, .shstk, .slow_3ops_lea, .sm3, .sm4, .tuning_fast_imm_vector_shift, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const meteorlake: CpuModel = .{ .name = "meteorlake", .llvm_name = "meteorlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avxvnni, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cx16, .f16c, .false_deps_perm, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_movmsk_over_vtest, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .slow_3ops_lea, .smap, .smep, .tuning_fast_imm_vector_shift, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const nehalem: CpuModel = .{ .name = "nehalem", .llvm_name = "nehalem", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .fxsr, .idivq_to_divl, .macrofusion, .mmx, .no_bypass_delay_mov, .nopl, .popcnt, .sahf, .sse4_2, .vzeroupper, .x87, }), }; pub const nocona: CpuModel = .{ .name = "nocona", .llvm_name = "nocona", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .fxsr, .mmx, .nopl, .slow_unaligned_mem_16, .sse3, .vzeroupper, .x87, }), }; pub const opteron: CpuModel = .{ .name = "opteron", .llvm_name = "opteron", .features = featureSet(&[_]Feature{ .@"3dnowa", .@"64bit", .cmov, .cx8, .fast_scalar_shift_masks, .fxsr, .nopl, .prfchw, .sbb_dep_breaking, .slow_shld, .slow_unaligned_mem_16, .sse2, .vzeroupper, .x87, }), }; pub const opteron_sse3: CpuModel = .{ .name = "opteron_sse3", .llvm_name = "opteron-sse3", .features = featureSet(&[_]Feature{ .@"3dnowa", .@"64bit", .cmov, .cx16, .fast_scalar_shift_masks, .fxsr, .nopl, .prfchw, .sbb_dep_breaking, .slow_shld, .slow_unaligned_mem_16, .sse3, .vzeroupper, .x87, }), }; pub const pantherlake: CpuModel = .{ .name = "pantherlake", .llvm_name = "pantherlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avxifma, .avxneconvert, .avxvnni, .avxvnniint16, .avxvnniint8, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cmpccxadd, .cx16, .enqcmd, .f16c, .false_deps_perm, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_movmsk_over_vtest, .prefetchi, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .sha512, .shstk, .slow_3ops_lea, .sm3, .sm4, .tuning_fast_imm_vector_shift, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const penryn: CpuModel = .{ .name = "penryn", .llvm_name = "penryn", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .fxsr, .macrofusion, .mmx, .nopl, .sahf, .slow_unaligned_mem_16, .sse4_1, .vzeroupper, .x87, }), }; pub const pentium: CpuModel = .{ .name = "pentium", .llvm_name = "pentium", .features = featureSet(&[_]Feature{ .cx8, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const pentium2: CpuModel = .{ .name = "pentium2", .llvm_name = "pentium2", .features = featureSet(&[_]Feature{ .cmov, .cx8, .fxsr, .mmx, .nopl, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const pentium3: CpuModel = .{ .name = "pentium3", .llvm_name = "pentium3", .features = featureSet(&[_]Feature{ .cmov, .cx8, .fxsr, .mmx, .nopl, .slow_unaligned_mem_16, .sse, .vzeroupper, .x87, }), }; pub const pentium3m: CpuModel = .{ .name = "pentium3m", .llvm_name = "pentium3m", .features = featureSet(&[_]Feature{ .cmov, .cx8, .fxsr, .mmx, .nopl, .slow_unaligned_mem_16, .sse, .vzeroupper, .x87, }), }; pub const pentium4: CpuModel = .{ .name = "pentium4", .llvm_name = "pentium4", .features = featureSet(&[_]Feature{ .cmov, .cx8, .fxsr, .mmx, .nopl, .slow_unaligned_mem_16, .sse2, .vzeroupper, .x87, }), }; pub const pentium_m: CpuModel = .{ .name = "pentium_m", .llvm_name = "pentium-m", .features = featureSet(&[_]Feature{ .cmov, .cx8, .fxsr, .mmx, .nopl, .slow_unaligned_mem_16, .sse2, .vzeroupper, .x87, }), }; pub const pentium_mmx: CpuModel = .{ .name = "pentium_mmx", .llvm_name = "pentium-mmx", .features = featureSet(&[_]Feature{ .cx8, .mmx, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const pentiumpro: CpuModel = .{ .name = "pentiumpro", .llvm_name = "pentiumpro", .features = featureSet(&[_]Feature{ .cmov, .cx8, .nopl, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const prescott: CpuModel = .{ .name = "prescott", .llvm_name = "prescott", .features = featureSet(&[_]Feature{ .cmov, .cx8, .fxsr, .mmx, .nopl, .slow_unaligned_mem_16, .sse3, .vzeroupper, .x87, }), }; pub const raptorlake: CpuModel = .{ .name = "raptorlake", .llvm_name = "raptorlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avxvnni, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cx16, .f16c, .false_deps_perm, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_movmsk_over_vtest, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .slow_3ops_lea, .smap, .smep, .tuning_fast_imm_vector_shift, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const rocketlake: CpuModel = .{ .name = "rocketlake", .llvm_name = "rocketlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avx512bitalg, .avx512cd, .avx512dq, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vl, .avx512vnni, .avx512vpopcntdq, .bmi, .bmi2, .clflushopt, .cmov, .cx16, .ermsb, .evex512, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pku, .popcnt, .prefer_256_bit, .prfchw, .rdpid, .rdrnd, .rdseed, .sahf, .sha, .smap, .smep, .tuning_fast_imm_vector_shift, .vaes, .vpclmulqdq, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const sandybridge: CpuModel = .{ .name = "sandybridge", .llvm_name = "sandybridge", .features = featureSet(&[_]Feature{ .@"64bit", .avx, .cmov, .cx16, .false_deps_popcnt, .fast_15bytenop, .fast_scalar_fsqrt, .fast_shld_rotate, .fxsr, .idivq_to_divl, .macrofusion, .mmx, .no_bypass_delay_mov, .nopl, .pclmul, .popcnt, .sahf, .slow_3ops_lea, .slow_unaligned_mem_32, .vzeroupper, .x87, .xsaveopt, }), }; pub const sapphirerapids: CpuModel = .{ .name = "sapphirerapids", .llvm_name = "sapphirerapids", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .amx_bf16, .amx_int8, .avx512bf16, .avx512bitalg, .avx512cd, .avx512fp16, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vnni, .avx512vpopcntdq, .avxvnni, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cx16, .enqcmd, .ermsb, .evex512, .false_deps_getmant, .false_deps_mulc, .false_deps_mullq, .false_deps_perm, .false_deps_range, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pconfig, .pku, .popcnt, .prefer_256_bit, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .smap, .smep, .tsxldtrk, .tuning_fast_imm_vector_shift, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .wbnoinvd, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const sierraforest: CpuModel = .{ .name = "sierraforest", .llvm_name = "sierraforest", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .avxifma, .avxneconvert, .avxvnni, .avxvnniint8, .bmi, .bmi2, .cldemote, .clflushopt, .clwb, .cmov, .cmpccxadd, .cx16, .enqcmd, .f16c, .false_deps_popcnt, .fast_15bytenop, .fast_scalar_fsqrt, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .gfni, .hreset, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .nopl, .pconfig, .pku, .popcnt, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .serialize, .sha, .shstk, .slow_3ops_lea, .uintr, .vaes, .vpclmulqdq, .vzeroupper, .waitpkg, .widekl, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const silvermont: CpuModel = .{ .name = "silvermont", .llvm_name = "silvermont", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .false_deps_popcnt, .fast_7bytenop, .fast_imm16, .fast_movbe, .fxsr, .idivq_to_divl, .mmx, .movbe, .no_bypass_delay, .nopl, .pclmul, .popcnt, .prfchw, .rdrnd, .sahf, .slow_incdec, .slow_lea, .slow_pmulld, .slow_two_mem_ops, .smep, .sse4_2, .use_slm_arith_costs, .vzeroupper, .x87, }), }; pub const skx: CpuModel = .{ .name = "skx", .llvm_name = "skx", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .allow_light_256_bit, .avx512bw, .avx512cd, .avx512dq, .avx512vl, .bmi, .bmi2, .clflushopt, .clwb, .cmov, .cx16, .ermsb, .evex512, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .faster_shift_than_shuffle, .fsgsbase, .fxsr, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pclmul, .pku, .popcnt, .prefer_256_bit, .prfchw, .rdrnd, .rdseed, .sahf, .slow_3ops_lea, .smap, .smep, .tuning_fast_imm_vector_shift, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const skylake: CpuModel = .{ .name = "skylake", .llvm_name = "skylake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .allow_light_256_bit, .avx2, .bmi, .bmi2, .clflushopt, .cmov, .cx16, .ermsb, .f16c, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pclmul, .popcnt, .prfchw, .rdrnd, .rdseed, .sahf, .slow_3ops_lea, .smap, .smep, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const skylake_avx512: CpuModel = .{ .name = "skylake_avx512", .llvm_name = "skylake-avx512", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .allow_light_256_bit, .avx512bw, .avx512cd, .avx512dq, .avx512vl, .bmi, .bmi2, .clflushopt, .clwb, .cmov, .cx16, .ermsb, .evex512, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .faster_shift_than_shuffle, .fsgsbase, .fxsr, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pclmul, .pku, .popcnt, .prefer_256_bit, .prfchw, .rdrnd, .rdseed, .sahf, .slow_3ops_lea, .tuning_fast_imm_vector_shift, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const slm: CpuModel = .{ .name = "slm", .llvm_name = "slm", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .false_deps_popcnt, .fast_7bytenop, .fast_imm16, .fast_movbe, .fxsr, .idivq_to_divl, .mmx, .movbe, .no_bypass_delay, .nopl, .pclmul, .popcnt, .prfchw, .rdrnd, .sahf, .slow_incdec, .slow_lea, .slow_pmulld, .slow_two_mem_ops, .sse4_2, .use_slm_arith_costs, .vzeroupper, .x87, }), }; pub const tigerlake: CpuModel = .{ .name = "tigerlake", .llvm_name = "tigerlake", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avx512bitalg, .avx512cd, .avx512dq, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vl, .avx512vnni, .avx512vp2intersect, .avx512vpopcntdq, .bmi, .bmi2, .clflushopt, .clwb, .cmov, .cx16, .ermsb, .evex512, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .no_bypass_delay_blend, .no_bypass_delay_mov, .no_bypass_delay_shuffle, .nopl, .pku, .popcnt, .prefer_256_bit, .prfchw, .rdpid, .rdrnd, .rdseed, .sahf, .sha, .shstk, .smap, .smep, .tuning_fast_imm_vector_shift, .vaes, .vpclmulqdq, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const tremont: CpuModel = .{ .name = "tremont", .llvm_name = "tremont", .features = featureSet(&[_]Feature{ .@"64bit", .aes, .clflushopt, .clwb, .cmov, .cx16, .fast_imm16, .fast_movbe, .fsgsbase, .fxsr, .gfni, .mmx, .movbe, .no_bypass_delay, .nopl, .pclmul, .popcnt, .prfchw, .ptwrite, .rdpid, .rdrnd, .rdseed, .sahf, .sha, .slow_incdec, .slow_lea, .slow_two_mem_ops, .sse4_2, .use_glm_div_sqrt_costs, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const westmere: CpuModel = .{ .name = "westmere", .llvm_name = "westmere", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .fxsr, .idivq_to_divl, .macrofusion, .mmx, .no_bypass_delay_mov, .nopl, .pclmul, .popcnt, .sahf, .sse4_2, .vzeroupper, .x87, }), }; pub const winchip2: CpuModel = .{ .name = "winchip2", .llvm_name = "winchip2", .features = featureSet(&[_]Feature{ .@"3dnow", .prfchw, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const winchip_c6: CpuModel = .{ .name = "winchip_c6", .llvm_name = "winchip-c6", .features = featureSet(&[_]Feature{ .mmx, .slow_unaligned_mem_16, .vzeroupper, .x87, }), }; pub const x86_64: CpuModel = .{ .name = "x86_64", .llvm_name = "x86-64", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx8, .fxsr, .idivq_to_divl, .macrofusion, .mmx, .nopl, .slow_3ops_lea, .slow_incdec, .sse2, .vzeroupper, .x87, }), }; pub const x86_64_v2: CpuModel = .{ .name = "x86_64_v2", .llvm_name = "x86-64-v2", .features = featureSet(&[_]Feature{ .@"64bit", .cmov, .cx16, .false_deps_popcnt, .fast_15bytenop, .fast_scalar_fsqrt, .fast_shld_rotate, .fxsr, .idivq_to_divl, .macrofusion, .mmx, .nopl, .popcnt, .sahf, .slow_3ops_lea, .slow_unaligned_mem_32, .sse4_2, .vzeroupper, .x87, }), }; pub const x86_64_v3: CpuModel = .{ .name = "x86_64_v3", .llvm_name = "x86-64-v3", .features = featureSet(&[_]Feature{ .@"64bit", .allow_light_256_bit, .avx2, .bmi, .bmi2, .cmov, .cx16, .f16c, .false_deps_lzcnt_tzcnt, .false_deps_popcnt, .fast_15bytenop, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fma, .fxsr, .idivq_to_divl, .lzcnt, .macrofusion, .mmx, .movbe, .nopl, .popcnt, .sahf, .slow_3ops_lea, .vzeroupper, .x87, .xsave, }), }; pub const x86_64_v4: CpuModel = .{ .name = "x86_64_v4", .llvm_name = "x86-64-v4", .features = featureSet(&[_]Feature{ .@"64bit", .allow_light_256_bit, .avx512bw, .avx512cd, .avx512dq, .avx512vl, .bmi, .bmi2, .cmov, .cx16, .evex512, .false_deps_popcnt, .fast_15bytenop, .fast_gather, .fast_scalar_fsqrt, .fast_shld_rotate, .fast_variable_crosslane_shuffle, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fxsr, .idivq_to_divl, .lzcnt, .macrofusion, .mmx, .movbe, .nopl, .popcnt, .prefer_256_bit, .sahf, .slow_3ops_lea, .vzeroupper, .x87, .xsave, }), }; pub const yonah: CpuModel = .{ .name = "yonah", .llvm_name = "yonah", .features = featureSet(&[_]Feature{ .cmov, .cx8, .fxsr, .mmx, .nopl, .slow_unaligned_mem_16, .sse3, .vzeroupper, .x87, }), }; pub const znver1: CpuModel = .{ .name = "znver1", .llvm_name = "znver1", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .allow_light_256_bit, .avx2, .bmi, .bmi2, .branchfusion, .clflushopt, .clzero, .cmov, .cx16, .f16c, .fast_15bytenop, .fast_bextr, .fast_imm16, .fast_lzcnt, .fast_movbe, .fast_scalar_fsqrt, .fast_scalar_shift_masks, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .idivq_to_divl, .lzcnt, .mmx, .movbe, .mwaitx, .nopl, .pclmul, .popcnt, .prfchw, .rdrnd, .rdseed, .sahf, .sbb_dep_breaking, .sha, .slow_shld, .smap, .smep, .sse4a, .vzeroupper, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const znver2: CpuModel = .{ .name = "znver2", .llvm_name = "znver2", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .aes, .allow_light_256_bit, .avx2, .bmi, .bmi2, .branchfusion, .clflushopt, .clwb, .clzero, .cmov, .cx16, .f16c, .fast_15bytenop, .fast_bextr, .fast_imm16, .fast_lzcnt, .fast_movbe, .fast_scalar_fsqrt, .fast_scalar_shift_masks, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fxsr, .idivq_to_divl, .lzcnt, .mmx, .movbe, .mwaitx, .nopl, .pclmul, .popcnt, .prfchw, .rdpid, .rdpru, .rdrnd, .rdseed, .sahf, .sbb_dep_breaking, .sha, .slow_shld, .smap, .smep, .sse4a, .vzeroupper, .wbnoinvd, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const znver3: CpuModel = .{ .name = "znver3", .llvm_name = "znver3", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .bmi, .bmi2, .branchfusion, .clflushopt, .clwb, .clzero, .cmov, .cx16, .f16c, .fast_15bytenop, .fast_bextr, .fast_imm16, .fast_lzcnt, .fast_movbe, .fast_scalar_fsqrt, .fast_scalar_shift_masks, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fma, .fsgsbase, .fsrm, .fxsr, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .mwaitx, .nopl, .pku, .popcnt, .prfchw, .rdpid, .rdpru, .rdrnd, .rdseed, .sahf, .sbb_dep_breaking, .sha, .slow_shld, .smap, .smep, .sse4a, .vaes, .vpclmulqdq, .vzeroupper, .wbnoinvd, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const znver4: CpuModel = .{ .name = "znver4", .llvm_name = "znver4", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avx512bf16, .avx512bitalg, .avx512cd, .avx512dq, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vl, .avx512vnni, .avx512vpopcntdq, .bmi, .bmi2, .branchfusion, .clflushopt, .clwb, .clzero, .cmov, .cx16, .evex512, .fast_15bytenop, .fast_bextr, .fast_dpwssd, .fast_imm16, .fast_lzcnt, .fast_movbe, .fast_scalar_fsqrt, .fast_scalar_shift_masks, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .mwaitx, .nopl, .pku, .popcnt, .prfchw, .rdpid, .rdpru, .rdrnd, .rdseed, .sahf, .sbb_dep_breaking, .sha, .shstk, .slow_shld, .smap, .smep, .sse4a, .vaes, .vpclmulqdq, .vzeroupper, .wbnoinvd, .x87, .xsavec, .xsaveopt, .xsaves, }), }; pub const znver5: CpuModel = .{ .name = "znver5", .llvm_name = "znver5", .features = featureSet(&[_]Feature{ .@"64bit", .adx, .allow_light_256_bit, .avx512bf16, .avx512bitalg, .avx512cd, .avx512dq, .avx512ifma, .avx512vbmi, .avx512vbmi2, .avx512vl, .avx512vnni, .avx512vp2intersect, .avx512vpopcntdq, .avxvnni, .bmi, .bmi2, .branchfusion, .clflushopt, .clwb, .clzero, .cmov, .cx16, .evex512, .fast_15bytenop, .fast_bextr, .fast_dpwssd, .fast_imm16, .fast_lzcnt, .fast_movbe, .fast_scalar_fsqrt, .fast_scalar_shift_masks, .fast_variable_perlane_shuffle, .fast_vector_fsqrt, .fsgsbase, .fsrm, .fxsr, .gfni, .idivq_to_divl, .invpcid, .lzcnt, .macrofusion, .mmx, .movbe, .movdir64b, .movdiri, .mwaitx, .nopl, .pku, .popcnt, .prefetchi, .prfchw, .rdpid, .rdpru, .rdrnd, .rdseed, .sahf, .sbb_dep_breaking, .sha, .shstk, .slow_shld, .smap, .smep, .sse4a, .vaes, .vpclmulqdq, .vzeroupper, .wbnoinvd, .x87, .xsavec, .xsaveopt, .xsaves, }), }; }