| author | |
| committer | |
| log | da8b7fb0c01f3b71af99eee6fcff6b1a9d216f13 |
| tree | 2e0c314c3f636e279b19455de39d5fd59db8f17a |
| parent | 662683cafd552404fb704e9d0a8caf1eaaf35af8 |
11 files changed, 2156 insertions(+), 584 deletions(-)
lib/std/Target/aarch64.zig+701-379| ... | @@ -5,15 +5,7 @@ const CpuFeature = std.Target.Cpu.Feature; | ... | @@ -5,15 +5,7 @@ const CpuFeature = std.Target.Cpu.Feature; |
| 5 | const CpuModel = std.Target.Cpu.Model; | 5 | const CpuModel = std.Target.Cpu.Model; |
| 6 | 6 | ||
| 7 | pub const Feature = enum { | 7 | pub const Feature = enum { |
| 8 | a510, | 8 | addr_lsl_slow_14, |
| 9 | a520, | ||
| 10 | a65, | ||
| 11 | a710, | ||
| 12 | a720, | ||
| 13 | a76, | ||
| 14 | a78, | ||
| 15 | a78c, | ||
| 16 | addr_lsl_fast, | ||
| 17 | aes, | 9 | aes, |
| 18 | aggressive_fma, | 10 | aggressive_fma, |
| 19 | alternate_sextload_cvt_f32_pattern, | 11 | alternate_sextload_cvt_f32_pattern, |
| ... | @@ -46,7 +38,6 @@ pub const Feature = enum { | ... | @@ -46,7 +38,6 @@ pub const Feature = enum { |
| 46 | cmp_bcc_fusion, | 38 | cmp_bcc_fusion, |
| 47 | complxnum, | 39 | complxnum, |
| 48 | contextidr_el2, | 40 | contextidr_el2, |
| 49 | cortex_r82, | ||
| 50 | cpa, | 41 | cpa, |
| 51 | crc, | 42 | crc, |
| 52 | crypto, | 43 | crypto, |
| ... | @@ -77,7 +68,7 @@ pub const Feature = enum { | ... | @@ -77,7 +68,7 @@ pub const Feature = enum { |
| 77 | fp8dot4, | 68 | fp8dot4, |
| 78 | fp8fma, | 69 | fp8fma, |
| 79 | fp_armv8, | 70 | fp_armv8, |
| 80 | fpmr, | 71 | fpac, |
| 81 | fptoint, | 72 | fptoint, |
| 82 | fullfp16, | 73 | fullfp16, |
| 83 | fuse_address, | 74 | fuse_address, |
| ... | @@ -131,6 +122,7 @@ pub const Feature = enum { | ... | @@ -131,6 +122,7 @@ pub const Feature = enum { |
| 131 | rcpc3, | 122 | rcpc3, |
| 132 | rcpc_immo, | 123 | rcpc_immo, |
| 133 | rdm, | 124 | rdm, |
| 125 | reserve_lr_for_ra, | ||
| 134 | reserve_x1, | 126 | reserve_x1, |
| 135 | reserve_x10, | 127 | reserve_x10, |
| 136 | reserve_x11, | 128 | reserve_x11, |
| ... | @@ -150,7 +142,6 @@ pub const Feature = enum { | ... | @@ -150,7 +142,6 @@ pub const Feature = enum { |
| 150 | reserve_x27, | 142 | reserve_x27, |
| 151 | reserve_x28, | 143 | reserve_x28, |
| 152 | reserve_x3, | 144 | reserve_x3, |
| 153 | reserve_x30, | ||
| 154 | reserve_x4, | 145 | reserve_x4, |
| 155 | reserve_x5, | 146 | reserve_x5, |
| 156 | reserve_x6, | 147 | reserve_x6, |
| ... | @@ -168,6 +159,7 @@ pub const Feature = enum { | ... | @@ -168,6 +159,7 @@ pub const Feature = enum { |
| 168 | sme, | 159 | sme, |
| 169 | sme2, | 160 | sme2, |
| 170 | sme2p1, | 161 | sme2p1, |
| 162 | sme_b16b16, | ||
| 171 | sme_f16f16, | 163 | sme_f16f16, |
| 172 | sme_f64f64, | 164 | sme_f64f64, |
| 173 | sme_f8f16, | 165 | sme_f8f16, |
| ... | @@ -193,6 +185,7 @@ pub const Feature = enum { | ... | @@ -193,6 +185,7 @@ pub const Feature = enum { |
| 193 | sve2_sha3, | 185 | sve2_sha3, |
| 194 | sve2_sm4, | 186 | sve2_sm4, |
| 195 | sve2p1, | 187 | sve2p1, |
| 188 | sve_b16b16, | ||
| 196 | tagged_globals, | 189 | tagged_globals, |
| 197 | the, | 190 | the, |
| 198 | tlb_rmi, | 191 | tlb_rmi, |
| ... | @@ -206,6 +199,7 @@ pub const Feature = enum { | ... | @@ -206,6 +199,7 @@ pub const Feature = enum { |
| 206 | trbe, | 199 | trbe, |
| 207 | uaops, | 200 | uaops, |
| 208 | use_experimental_zeroing_pseudos, | 201 | use_experimental_zeroing_pseudos, |
| 202 | use_fixed_over_scalable_if_equal_cost, | ||
| 209 | use_postra_scheduler, | 203 | use_postra_scheduler, |
| 210 | use_reciprocal_square_root, | 204 | use_reciprocal_square_root, |
| 211 | use_scalar_inc_vl, | 205 | use_scalar_inc_vl, |
| ... | @@ -245,112 +239,14 @@ pub const all_features = blk: { | ... | @@ -245,112 +239,14 @@ pub const all_features = blk: { |
| 245 | const len = @typeInfo(Feature).@"enum".fields.len; | 239 | const len = @typeInfo(Feature).@"enum".fields.len; |
| 246 | std.debug.assert(len <= CpuFeature.Set.needed_bit_count); | 240 | std.debug.assert(len <= CpuFeature.Set.needed_bit_count); |
| 247 | var result: [len]CpuFeature = undefined; | 241 | var result: [len]CpuFeature = undefined; |
| 248 | result[@intFromEnum(Feature.a510)] = .{ | 242 | result[@intFromEnum(Feature.addr_lsl_slow_14)] = .{ |
| 249 | .llvm_name = "a510", | 243 | .llvm_name = "addr-lsl-slow-14", |
| 250 | .description = "Cortex-A510 ARM processors", | 244 | .description = "Address operands with shift amount of 1 or 4 are slow", |
| 251 | .dependencies = featureSet(&[_]Feature{ | ||
| 252 | .fuse_adrp_add, | ||
| 253 | .fuse_aes, | ||
| 254 | .use_postra_scheduler, | ||
| 255 | }), | ||
| 256 | }; | ||
| 257 | result[@intFromEnum(Feature.a520)] = .{ | ||
| 258 | .llvm_name = "a520", | ||
| 259 | .description = "Cortex-A520 ARM processors", | ||
| 260 | .dependencies = featureSet(&[_]Feature{ | ||
| 261 | .fuse_adrp_add, | ||
| 262 | .fuse_aes, | ||
| 263 | .use_postra_scheduler, | ||
| 264 | }), | ||
| 265 | }; | ||
| 266 | result[@intFromEnum(Feature.a65)] = .{ | ||
| 267 | .llvm_name = "a65", | ||
| 268 | .description = "Cortex-A65 ARM processors", | ||
| 269 | .dependencies = featureSet(&[_]Feature{ | ||
| 270 | .enable_select_opt, | ||
| 271 | .fuse_address, | ||
| 272 | .fuse_adrp_add, | ||
| 273 | .fuse_aes, | ||
| 274 | .fuse_literals, | ||
| 275 | .predictable_select_expensive, | ||
| 276 | }), | ||
| 277 | }; | ||
| 278 | result[@intFromEnum(Feature.a710)] = .{ | ||
| 279 | .llvm_name = "a710", | ||
| 280 | .description = "Cortex-A710 ARM processors", | ||
| 281 | .dependencies = featureSet(&[_]Feature{ | ||
| 282 | .addr_lsl_fast, | ||
| 283 | .alu_lsl_fast, | ||
| 284 | .cmp_bcc_fusion, | ||
| 285 | .enable_select_opt, | ||
| 286 | .fuse_adrp_add, | ||
| 287 | .fuse_aes, | ||
| 288 | .predictable_select_expensive, | ||
| 289 | .use_postra_scheduler, | ||
| 290 | }), | ||
| 291 | }; | ||
| 292 | result[@intFromEnum(Feature.a720)] = .{ | ||
| 293 | .llvm_name = "a720", | ||
| 294 | .description = "Cortex-A720 ARM processors", | ||
| 295 | .dependencies = featureSet(&[_]Feature{ | ||
| 296 | .addr_lsl_fast, | ||
| 297 | .alu_lsl_fast, | ||
| 298 | .cmp_bcc_fusion, | ||
| 299 | .enable_select_opt, | ||
| 300 | .fuse_adrp_add, | ||
| 301 | .fuse_aes, | ||
| 302 | .predictable_select_expensive, | ||
| 303 | .use_postra_scheduler, | ||
| 304 | }), | ||
| 305 | }; | ||
| 306 | result[@intFromEnum(Feature.a76)] = .{ | ||
| 307 | .llvm_name = "a76", | ||
| 308 | .description = "Cortex-A76 ARM processors", | ||
| 309 | .dependencies = featureSet(&[_]Feature{ | ||
| 310 | .addr_lsl_fast, | ||
| 311 | .alu_lsl_fast, | ||
| 312 | .enable_select_opt, | ||
| 313 | .fuse_adrp_add, | ||
| 314 | .fuse_aes, | ||
| 315 | .predictable_select_expensive, | ||
| 316 | }), | ||
| 317 | }; | ||
| 318 | result[@intFromEnum(Feature.a78)] = .{ | ||
| 319 | .llvm_name = "a78", | ||
| 320 | .description = "Cortex-A78 ARM processors", | ||
| 321 | .dependencies = featureSet(&[_]Feature{ | ||
| 322 | .addr_lsl_fast, | ||
| 323 | .alu_lsl_fast, | ||
| 324 | .cmp_bcc_fusion, | ||
| 325 | .enable_select_opt, | ||
| 326 | .fuse_adrp_add, | ||
| 327 | .fuse_aes, | ||
| 328 | .predictable_select_expensive, | ||
| 329 | .use_postra_scheduler, | ||
| 330 | }), | ||
| 331 | }; | ||
| 332 | result[@intFromEnum(Feature.a78c)] = .{ | ||
| 333 | .llvm_name = "a78c", | ||
| 334 | .description = "Cortex-A78C ARM processors", | ||
| 335 | .dependencies = featureSet(&[_]Feature{ | ||
| 336 | .addr_lsl_fast, | ||
| 337 | .alu_lsl_fast, | ||
| 338 | .cmp_bcc_fusion, | ||
| 339 | .enable_select_opt, | ||
| 340 | .fuse_adrp_add, | ||
| 341 | .fuse_aes, | ||
| 342 | .predictable_select_expensive, | ||
| 343 | .use_postra_scheduler, | ||
| 344 | }), | ||
| 345 | }; | ||
| 346 | result[@intFromEnum(Feature.addr_lsl_fast)] = .{ | ||
| 347 | .llvm_name = "addr-lsl-fast", | ||
| 348 | .description = "Address operands with logical shift of up to 3 places are cheap", | ||
| 349 | .dependencies = featureSet(&[_]Feature{}), | 245 | .dependencies = featureSet(&[_]Feature{}), |
| 350 | }; | 246 | }; |
| 351 | result[@intFromEnum(Feature.aes)] = .{ | 247 | result[@intFromEnum(Feature.aes)] = .{ |
| 352 | .llvm_name = "aes", | 248 | .llvm_name = "aes", |
| 353 | .description = "Enable AES support (FEAT_AES, FEAT_PMULL)", | 249 | .description = "Enable AES support", |
| 354 | .dependencies = featureSet(&[_]Feature{ | 250 | .dependencies = featureSet(&[_]Feature{ |
| 355 | .neon, | 251 | .neon, |
| 356 | }), | 252 | }), |
| ... | @@ -367,7 +263,7 @@ pub const all_features = blk: { | ... | @@ -367,7 +263,7 @@ pub const all_features = blk: { |
| 367 | }; | 263 | }; |
| 368 | result[@intFromEnum(Feature.altnzcv)] = .{ | 264 | result[@intFromEnum(Feature.altnzcv)] = .{ |
| 369 | .llvm_name = "altnzcv", | 265 | .llvm_name = "altnzcv", |
| 370 | .description = "Enable alternative NZCV format for floating point comparisons (FEAT_FlagM2)", | 266 | .description = "Enable alternative NZCV format for floating point comparisons", |
| 371 | .dependencies = featureSet(&[_]Feature{}), | 267 | .dependencies = featureSet(&[_]Feature{}), |
| 372 | }; | 268 | }; |
| 373 | result[@intFromEnum(Feature.alu_lsl_fast)] = .{ | 269 | result[@intFromEnum(Feature.alu_lsl_fast)] = .{ |
| ... | @@ -377,12 +273,12 @@ pub const all_features = blk: { | ... | @@ -377,12 +273,12 @@ pub const all_features = blk: { |
| 377 | }; | 273 | }; |
| 378 | result[@intFromEnum(Feature.am)] = .{ | 274 | result[@intFromEnum(Feature.am)] = .{ |
| 379 | .llvm_name = "am", | 275 | .llvm_name = "am", |
| 380 | .description = "Enable v8.4-A Activity Monitors extension (FEAT_AMUv1)", | 276 | .description = "Enable Armv8.4-A Activity Monitors extension", |
| 381 | .dependencies = featureSet(&[_]Feature{}), | 277 | .dependencies = featureSet(&[_]Feature{}), |
| 382 | }; | 278 | }; |
| 383 | result[@intFromEnum(Feature.amvs)] = .{ | 279 | result[@intFromEnum(Feature.amvs)] = .{ |
| 384 | .llvm_name = "amvs", | 280 | .llvm_name = "amvs", |
| 385 | .description = "Enable v8.6-A Activity Monitors Virtualization support (FEAT_AMUv1p1)", | 281 | .description = "Enable Armv8.6-A Activity Monitors Virtualization support", |
| 386 | .dependencies = featureSet(&[_]Feature{ | 282 | .dependencies = featureSet(&[_]Feature{ |
| 387 | .am, | 283 | .am, |
| 388 | }), | 284 | }), |
| ... | @@ -404,7 +300,7 @@ pub const all_features = blk: { | ... | @@ -404,7 +300,7 @@ pub const all_features = blk: { |
| 404 | }; | 300 | }; |
| 405 | result[@intFromEnum(Feature.b16b16)] = .{ | 301 | result[@intFromEnum(Feature.b16b16)] = .{ |
| 406 | .llvm_name = "b16b16", | 302 | .llvm_name = "b16b16", |
| 407 | .description = "Enable SVE2.1 or SME2.1 non-widening BFloat16 to BFloat16 instructions (FEAT_B16B16)", | 303 | .description = "Enable SVE2.1 or SME2.1 non-widening BFloat16 to BFloat16 instructions", |
| 408 | .dependencies = featureSet(&[_]Feature{ | 304 | .dependencies = featureSet(&[_]Feature{ |
| 409 | .bf16, | 305 | .bf16, |
| 410 | }), | 306 | }), |
| ... | @@ -416,17 +312,17 @@ pub const all_features = blk: { | ... | @@ -416,17 +312,17 @@ pub const all_features = blk: { |
| 416 | }; | 312 | }; |
| 417 | result[@intFromEnum(Feature.bf16)] = .{ | 313 | result[@intFromEnum(Feature.bf16)] = .{ |
| 418 | .llvm_name = "bf16", | 314 | .llvm_name = "bf16", |
| 419 | .description = "Enable BFloat16 Extension (FEAT_BF16)", | 315 | .description = "Enable BFloat16 Extension", |
| 420 | .dependencies = featureSet(&[_]Feature{}), | 316 | .dependencies = featureSet(&[_]Feature{}), |
| 421 | }; | 317 | }; |
| 422 | result[@intFromEnum(Feature.brbe)] = .{ | 318 | result[@intFromEnum(Feature.brbe)] = .{ |
| 423 | .llvm_name = "brbe", | 319 | .llvm_name = "brbe", |
| 424 | .description = "Enable Branch Record Buffer Extension (FEAT_BRBE)", | 320 | .description = "Enable Branch Record Buffer Extension", |
| 425 | .dependencies = featureSet(&[_]Feature{}), | 321 | .dependencies = featureSet(&[_]Feature{}), |
| 426 | }; | 322 | }; |
| 427 | result[@intFromEnum(Feature.bti)] = .{ | 323 | result[@intFromEnum(Feature.bti)] = .{ |
| 428 | .llvm_name = "bti", | 324 | .llvm_name = "bti", |
| 429 | .description = "Enable Branch Target Identification (FEAT_BTI)", | 325 | .description = "Enable Branch Target Identification", |
| 430 | .dependencies = featureSet(&[_]Feature{}), | 326 | .dependencies = featureSet(&[_]Feature{}), |
| 431 | }; | 327 | }; |
| 432 | result[@intFromEnum(Feature.call_saved_x10)] = .{ | 328 | result[@intFromEnum(Feature.call_saved_x10)] = .{ |
| ... | @@ -476,27 +372,27 @@ pub const all_features = blk: { | ... | @@ -476,27 +372,27 @@ pub const all_features = blk: { |
| 476 | }; | 372 | }; |
| 477 | result[@intFromEnum(Feature.ccdp)] = .{ | 373 | result[@intFromEnum(Feature.ccdp)] = .{ |
| 478 | .llvm_name = "ccdp", | 374 | .llvm_name = "ccdp", |
| 479 | .description = "Enable v8.5 Cache Clean to Point of Deep Persistence (FEAT_DPB2)", | 375 | .description = "Enable Armv8.5-A Cache Clean to Point of Deep Persistence", |
| 480 | .dependencies = featureSet(&[_]Feature{}), | 376 | .dependencies = featureSet(&[_]Feature{}), |
| 481 | }; | 377 | }; |
| 482 | result[@intFromEnum(Feature.ccidx)] = .{ | 378 | result[@intFromEnum(Feature.ccidx)] = .{ |
| 483 | .llvm_name = "ccidx", | 379 | .llvm_name = "ccidx", |
| 484 | .description = "Enable v8.3-A Extend of the CCSIDR number of sets (FEAT_CCIDX)", | 380 | .description = "Enable Armv8.3-A Extend of the CCSIDR number of sets", |
| 485 | .dependencies = featureSet(&[_]Feature{}), | 381 | .dependencies = featureSet(&[_]Feature{}), |
| 486 | }; | 382 | }; |
| 487 | result[@intFromEnum(Feature.ccpp)] = .{ | 383 | result[@intFromEnum(Feature.ccpp)] = .{ |
| 488 | .llvm_name = "ccpp", | 384 | .llvm_name = "ccpp", |
| 489 | .description = "Enable v8.2 data Cache Clean to Point of Persistence (FEAT_DPB)", | 385 | .description = "Enable Armv8.2-A data Cache Clean to Point of Persistence", |
| 490 | .dependencies = featureSet(&[_]Feature{}), | 386 | .dependencies = featureSet(&[_]Feature{}), |
| 491 | }; | 387 | }; |
| 492 | result[@intFromEnum(Feature.chk)] = .{ | 388 | result[@intFromEnum(Feature.chk)] = .{ |
| 493 | .llvm_name = "chk", | 389 | .llvm_name = "chk", |
| 494 | .description = "Enable Armv8.0-A Check Feature Status Extension (FEAT_CHK)", | 390 | .description = "Enable Armv8.0-A Check Feature Status Extension", |
| 495 | .dependencies = featureSet(&[_]Feature{}), | 391 | .dependencies = featureSet(&[_]Feature{}), |
| 496 | }; | 392 | }; |
| 497 | result[@intFromEnum(Feature.clrbhb)] = .{ | 393 | result[@intFromEnum(Feature.clrbhb)] = .{ |
| 498 | .llvm_name = "clrbhb", | 394 | .llvm_name = "clrbhb", |
| 499 | .description = "Enable Clear BHB instruction (FEAT_CLRBHB)", | 395 | .description = "Enable Clear BHB instruction", |
| 500 | .dependencies = featureSet(&[_]Feature{}), | 396 | .dependencies = featureSet(&[_]Feature{}), |
| 501 | }; | 397 | }; |
| 502 | result[@intFromEnum(Feature.cmp_bcc_fusion)] = .{ | 398 | result[@intFromEnum(Feature.cmp_bcc_fusion)] = .{ |
| ... | @@ -506,7 +402,7 @@ pub const all_features = blk: { | ... | @@ -506,7 +402,7 @@ pub const all_features = blk: { |
| 506 | }; | 402 | }; |
| 507 | result[@intFromEnum(Feature.complxnum)] = .{ | 403 | result[@intFromEnum(Feature.complxnum)] = .{ |
| 508 | .llvm_name = "complxnum", | 404 | .llvm_name = "complxnum", |
| 509 | .description = "Enable v8.3-A Floating-point complex number support (FEAT_FCMA)", | 405 | .description = "Enable Armv8.3-A Floating-point complex number support", |
| 510 | .dependencies = featureSet(&[_]Feature{ | 406 | .dependencies = featureSet(&[_]Feature{ |
| 511 | .neon, | 407 | .neon, |
| 512 | }), | 408 | }), |
| ... | @@ -516,21 +412,14 @@ pub const all_features = blk: { | ... | @@ -516,21 +412,14 @@ pub const all_features = blk: { |
| 516 | .description = "Enable RW operand Context ID Register (EL2)", | 412 | .description = "Enable RW operand Context ID Register (EL2)", |
| 517 | .dependencies = featureSet(&[_]Feature{}), | 413 | .dependencies = featureSet(&[_]Feature{}), |
| 518 | }; | 414 | }; |
| 519 | result[@intFromEnum(Feature.cortex_r82)] = .{ | ||
| 520 | .llvm_name = "cortex-r82", | ||
| 521 | .description = "Cortex-R82 ARM processors", | ||
| 522 | .dependencies = featureSet(&[_]Feature{ | ||
| 523 | .use_postra_scheduler, | ||
| 524 | }), | ||
| 525 | }; | ||
| 526 | result[@intFromEnum(Feature.cpa)] = .{ | 415 | result[@intFromEnum(Feature.cpa)] = .{ |
| 527 | .llvm_name = "cpa", | 416 | .llvm_name = "cpa", |
| 528 | .description = "Enable Armv9.5-A Checked Pointer Arithmetic (FEAT_CPA)", | 417 | .description = "Enable Armv9.5-A Checked Pointer Arithmetic", |
| 529 | .dependencies = featureSet(&[_]Feature{}), | 418 | .dependencies = featureSet(&[_]Feature{}), |
| 530 | }; | 419 | }; |
| 531 | result[@intFromEnum(Feature.crc)] = .{ | 420 | result[@intFromEnum(Feature.crc)] = .{ |
| 532 | .llvm_name = "crc", | 421 | .llvm_name = "crc", |
| 533 | .description = "Enable ARMv8 CRC-32 checksum instructions (FEAT_CRC32)", | 422 | .description = "Enable Armv8.0-A CRC-32 checksum instructions", |
| 534 | .dependencies = featureSet(&[_]Feature{}), | 423 | .dependencies = featureSet(&[_]Feature{}), |
| 535 | }; | 424 | }; |
| 536 | result[@intFromEnum(Feature.crypto)] = .{ | 425 | result[@intFromEnum(Feature.crypto)] = .{ |
| ... | @@ -543,12 +432,12 @@ pub const all_features = blk: { | ... | @@ -543,12 +432,12 @@ pub const all_features = blk: { |
| 543 | }; | 432 | }; |
| 544 | result[@intFromEnum(Feature.cssc)] = .{ | 433 | result[@intFromEnum(Feature.cssc)] = .{ |
| 545 | .llvm_name = "cssc", | 434 | .llvm_name = "cssc", |
| 546 | .description = "Enable Common Short Sequence Compression (CSSC) instructions (FEAT_CSSC)", | 435 | .description = "Enable Common Short Sequence Compression (CSSC) instructions", |
| 547 | .dependencies = featureSet(&[_]Feature{}), | 436 | .dependencies = featureSet(&[_]Feature{}), |
| 548 | }; | 437 | }; |
| 549 | result[@intFromEnum(Feature.d128)] = .{ | 438 | result[@intFromEnum(Feature.d128)] = .{ |
| 550 | .llvm_name = "d128", | 439 | .llvm_name = "d128", |
| 551 | .description = "Enable Armv9.4-A 128-bit Page Table Descriptors, System Registers and Instructions (FEAT_D128, FEAT_LVA3, FEAT_SYSREG128, FEAT_SYSINSTR128)", | 440 | .description = "Enable Armv9.4-A 128-bit Page Table Descriptors, System Registers and instructions", |
| 552 | .dependencies = featureSet(&[_]Feature{ | 441 | .dependencies = featureSet(&[_]Feature{ |
| 553 | .lse128, | 442 | .lse128, |
| 554 | }), | 443 | }), |
| ... | @@ -570,17 +459,19 @@ pub const all_features = blk: { | ... | @@ -570,17 +459,19 @@ pub const all_features = blk: { |
| 570 | }; | 459 | }; |
| 571 | result[@intFromEnum(Feature.dit)] = .{ | 460 | result[@intFromEnum(Feature.dit)] = .{ |
| 572 | .llvm_name = "dit", | 461 | .llvm_name = "dit", |
| 573 | .description = "Enable v8.4-A Data Independent Timing instructions (FEAT_DIT)", | 462 | .description = "Enable Armv8.4-A Data Independent Timing instructions", |
| 574 | .dependencies = featureSet(&[_]Feature{}), | 463 | .dependencies = featureSet(&[_]Feature{}), |
| 575 | }; | 464 | }; |
| 576 | result[@intFromEnum(Feature.dotprod)] = .{ | 465 | result[@intFromEnum(Feature.dotprod)] = .{ |
| 577 | .llvm_name = "dotprod", | 466 | .llvm_name = "dotprod", |
| 578 | .description = "Enable dot product support (FEAT_DotProd)", | 467 | .description = "Enable dot product support", |
| 579 | .dependencies = featureSet(&[_]Feature{}), | 468 | .dependencies = featureSet(&[_]Feature{ |
| 469 | .neon, | ||
| 470 | }), | ||
| 580 | }; | 471 | }; |
| 581 | result[@intFromEnum(Feature.ecv)] = .{ | 472 | result[@intFromEnum(Feature.ecv)] = .{ |
| 582 | .llvm_name = "ecv", | 473 | .llvm_name = "ecv", |
| 583 | .description = "Enable enhanced counter virtualization extension (FEAT_ECV)", | 474 | .description = "Enable enhanced counter virtualization extension", |
| 584 | .dependencies = featureSet(&[_]Feature{}), | 475 | .dependencies = featureSet(&[_]Feature{}), |
| 585 | }; | 476 | }; |
| 586 | result[@intFromEnum(Feature.el2vmsa)] = .{ | 477 | result[@intFromEnum(Feature.el2vmsa)] = .{ |
| ... | @@ -600,7 +491,7 @@ pub const all_features = blk: { | ... | @@ -600,7 +491,7 @@ pub const all_features = blk: { |
| 600 | }; | 491 | }; |
| 601 | result[@intFromEnum(Feature.ete)] = .{ | 492 | result[@intFromEnum(Feature.ete)] = .{ |
| 602 | .llvm_name = "ete", | 493 | .llvm_name = "ete", |
| 603 | .description = "Enable Embedded Trace Extension (FEAT_ETE)", | 494 | .description = "Enable Embedded Trace Extension", |
| 604 | .dependencies = featureSet(&[_]Feature{ | 495 | .dependencies = featureSet(&[_]Feature{ |
| 605 | .trbe, | 496 | .trbe, |
| 606 | }), | 497 | }), |
| ... | @@ -612,26 +503,26 @@ pub const all_features = blk: { | ... | @@ -612,26 +503,26 @@ pub const all_features = blk: { |
| 612 | }; | 503 | }; |
| 613 | result[@intFromEnum(Feature.f32mm)] = .{ | 504 | result[@intFromEnum(Feature.f32mm)] = .{ |
| 614 | .llvm_name = "f32mm", | 505 | .llvm_name = "f32mm", |
| 615 | .description = "Enable Matrix Multiply FP32 Extension (FEAT_F32MM)", | 506 | .description = "Enable Matrix Multiply FP32 Extension", |
| 616 | .dependencies = featureSet(&[_]Feature{ | 507 | .dependencies = featureSet(&[_]Feature{ |
| 617 | .sve, | 508 | .sve, |
| 618 | }), | 509 | }), |
| 619 | }; | 510 | }; |
| 620 | result[@intFromEnum(Feature.f64mm)] = .{ | 511 | result[@intFromEnum(Feature.f64mm)] = .{ |
| 621 | .llvm_name = "f64mm", | 512 | .llvm_name = "f64mm", |
| 622 | .description = "Enable Matrix Multiply FP64 Extension (FEAT_F64MM)", | 513 | .description = "Enable Matrix Multiply FP64 Extension", |
| 623 | .dependencies = featureSet(&[_]Feature{ | 514 | .dependencies = featureSet(&[_]Feature{ |
| 624 | .sve, | 515 | .sve, |
| 625 | }), | 516 | }), |
| 626 | }; | 517 | }; |
| 627 | result[@intFromEnum(Feature.faminmax)] = .{ | 518 | result[@intFromEnum(Feature.faminmax)] = .{ |
| 628 | .llvm_name = "faminmax", | 519 | .llvm_name = "faminmax", |
| 629 | .description = "Enable FAMIN and FAMAX instructions (FEAT_FAMINMAX)", | 520 | .description = "Enable FAMIN and FAMAX instructions", |
| 630 | .dependencies = featureSet(&[_]Feature{}), | 521 | .dependencies = featureSet(&[_]Feature{}), |
| 631 | }; | 522 | }; |
| 632 | result[@intFromEnum(Feature.fgt)] = .{ | 523 | result[@intFromEnum(Feature.fgt)] = .{ |
| 633 | .llvm_name = "fgt", | 524 | .llvm_name = "fgt", |
| 634 | .description = "Enable fine grained virtualization traps extension (FEAT_FGT)", | 525 | .description = "Enable fine grained virtualization traps extension", |
| 635 | .dependencies = featureSet(&[_]Feature{}), | 526 | .dependencies = featureSet(&[_]Feature{}), |
| 636 | }; | 527 | }; |
| 637 | result[@intFromEnum(Feature.fix_cortex_a53_835769)] = .{ | 528 | result[@intFromEnum(Feature.fix_cortex_a53_835769)] = .{ |
| ... | @@ -641,7 +532,7 @@ pub const all_features = blk: { | ... | @@ -641,7 +532,7 @@ pub const all_features = blk: { |
| 641 | }; | 532 | }; |
| 642 | result[@intFromEnum(Feature.flagm)] = .{ | 533 | result[@intFromEnum(Feature.flagm)] = .{ |
| 643 | .llvm_name = "flagm", | 534 | .llvm_name = "flagm", |
| 644 | .description = "Enable v8.4-A Flag Manipulation Instructions (FEAT_FlagM)", | 535 | .description = "Enable Armv8.4-A Flag Manipulation instructions", |
| 645 | .dependencies = featureSet(&[_]Feature{}), | 536 | .dependencies = featureSet(&[_]Feature{}), |
| 646 | }; | 537 | }; |
| 647 | result[@intFromEnum(Feature.fmv)] = .{ | 538 | result[@intFromEnum(Feature.fmv)] = .{ |
| ... | @@ -656,49 +547,59 @@ pub const all_features = blk: { | ... | @@ -656,49 +547,59 @@ pub const all_features = blk: { |
| 656 | }; | 547 | }; |
| 657 | result[@intFromEnum(Feature.fp16fml)] = .{ | 548 | result[@intFromEnum(Feature.fp16fml)] = .{ |
| 658 | .llvm_name = "fp16fml", | 549 | .llvm_name = "fp16fml", |
| 659 | .description = "Enable FP16 FML instructions (FEAT_FHM)", | 550 | .description = "Enable FP16 FML instructions", |
| 660 | .dependencies = featureSet(&[_]Feature{ | 551 | .dependencies = featureSet(&[_]Feature{ |
| 661 | .fullfp16, | 552 | .fullfp16, |
| 662 | }), | 553 | }), |
| 663 | }; | 554 | }; |
| 664 | result[@intFromEnum(Feature.fp8)] = .{ | 555 | result[@intFromEnum(Feature.fp8)] = .{ |
| 665 | .llvm_name = "fp8", | 556 | .llvm_name = "fp8", |
| 666 | .description = "Enable FP8 instructions (FEAT_FP8)", | 557 | .description = "Enable FP8 instructions", |
| 667 | .dependencies = featureSet(&[_]Feature{}), | 558 | .dependencies = featureSet(&[_]Feature{ |
| 559 | .bf16, | ||
| 560 | .faminmax, | ||
| 561 | .lut, | ||
| 562 | }), | ||
| 668 | }; | 563 | }; |
| 669 | result[@intFromEnum(Feature.fp8dot2)] = .{ | 564 | result[@intFromEnum(Feature.fp8dot2)] = .{ |
| 670 | .llvm_name = "fp8dot2", | 565 | .llvm_name = "fp8dot2", |
| 671 | .description = "Enable fp8 2-way dot instructions (FEAT_FP8DOT2)", | 566 | .description = "Enable FP8 2-way dot instructions", |
| 672 | .dependencies = featureSet(&[_]Feature{}), | 567 | .dependencies = featureSet(&[_]Feature{ |
| 568 | .fp8dot4, | ||
| 569 | }), | ||
| 673 | }; | 570 | }; |
| 674 | result[@intFromEnum(Feature.fp8dot4)] = .{ | 571 | result[@intFromEnum(Feature.fp8dot4)] = .{ |
| 675 | .llvm_name = "fp8dot4", | 572 | .llvm_name = "fp8dot4", |
| 676 | .description = "Enable fp8 4-way dot instructions (FEAT_FP8DOT4)", | 573 | .description = "Enable FP8 4-way dot instructions", |
| 677 | .dependencies = featureSet(&[_]Feature{}), | 574 | .dependencies = featureSet(&[_]Feature{ |
| 575 | .fp8fma, | ||
| 576 | }), | ||
| 678 | }; | 577 | }; |
| 679 | result[@intFromEnum(Feature.fp8fma)] = .{ | 578 | result[@intFromEnum(Feature.fp8fma)] = .{ |
| 680 | .llvm_name = "fp8fma", | 579 | .llvm_name = "fp8fma", |
| 681 | .description = "Enable fp8 multiply-add instructions (FEAT_FP8FMA)", | 580 | .description = "Enable Armv9.5-A FP8 multiply-add instructions", |
| 682 | .dependencies = featureSet(&[_]Feature{}), | 581 | .dependencies = featureSet(&[_]Feature{ |
| 582 | .fp8, | ||
| 583 | }), | ||
| 683 | }; | 584 | }; |
| 684 | result[@intFromEnum(Feature.fp_armv8)] = .{ | 585 | result[@intFromEnum(Feature.fp_armv8)] = .{ |
| 685 | .llvm_name = "fp-armv8", | 586 | .llvm_name = "fp-armv8", |
| 686 | .description = "Enable ARMv8 FP (FEAT_FP)", | 587 | .description = "Enable Armv8.0-A Floating Point Extensions", |
| 687 | .dependencies = featureSet(&[_]Feature{}), | 588 | .dependencies = featureSet(&[_]Feature{}), |
| 688 | }; | 589 | }; |
| 689 | result[@intFromEnum(Feature.fpmr)] = .{ | 590 | result[@intFromEnum(Feature.fpac)] = .{ |
| 690 | .llvm_name = "fpmr", | 591 | .llvm_name = "fpac", |
| 691 | .description = "Enable FPMR Register (FEAT_FPMR)", | 592 | .description = "Enable v8.3-A Pointer Authentication Faulting enhancement", |
| 692 | .dependencies = featureSet(&[_]Feature{}), | 593 | .dependencies = featureSet(&[_]Feature{}), |
| 693 | }; | 594 | }; |
| 694 | result[@intFromEnum(Feature.fptoint)] = .{ | 595 | result[@intFromEnum(Feature.fptoint)] = .{ |
| 695 | .llvm_name = "fptoint", | 596 | .llvm_name = "fptoint", |
| 696 | .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 (FEAT_FRINTTS)", | 597 | .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", |
| 697 | .dependencies = featureSet(&[_]Feature{}), | 598 | .dependencies = featureSet(&[_]Feature{}), |
| 698 | }; | 599 | }; |
| 699 | result[@intFromEnum(Feature.fullfp16)] = .{ | 600 | result[@intFromEnum(Feature.fullfp16)] = .{ |
| 700 | .llvm_name = "fullfp16", | 601 | .llvm_name = "fullfp16", |
| 701 | .description = "Full FP16 (FEAT_FP16)", | 602 | .description = "Enable half-precision floating-point data processing", |
| 702 | .dependencies = featureSet(&[_]Feature{ | 603 | .dependencies = featureSet(&[_]Feature{ |
| 703 | .fp_armv8, | 604 | .fp_armv8, |
| 704 | }), | 605 | }), |
| ... | @@ -767,29 +668,29 @@ pub const all_features = blk: { | ... | @@ -767,29 +668,29 @@ pub const all_features = blk: { |
| 767 | }; | 668 | }; |
| 768 | result[@intFromEnum(Feature.hbc)] = .{ | 669 | result[@intFromEnum(Feature.hbc)] = .{ |
| 769 | .llvm_name = "hbc", | 670 | .llvm_name = "hbc", |
| 770 | .description = "Enable Armv8.8-A Hinted Conditional Branches Extension (FEAT_HBC)", | 671 | .description = "Enable Armv8.8-A Hinted Conditional Branches Extension", |
| 771 | .dependencies = featureSet(&[_]Feature{}), | 672 | .dependencies = featureSet(&[_]Feature{}), |
| 772 | }; | 673 | }; |
| 773 | result[@intFromEnum(Feature.hcx)] = .{ | 674 | result[@intFromEnum(Feature.hcx)] = .{ |
| 774 | .llvm_name = "hcx", | 675 | .llvm_name = "hcx", |
| 775 | .description = "Enable Armv8.7-A HCRX_EL2 system register (FEAT_HCX)", | 676 | .description = "Enable Armv8.7-A HCRX_EL2 system register", |
| 776 | .dependencies = featureSet(&[_]Feature{}), | 677 | .dependencies = featureSet(&[_]Feature{}), |
| 777 | }; | 678 | }; |
| 778 | result[@intFromEnum(Feature.i8mm)] = .{ | 679 | result[@intFromEnum(Feature.i8mm)] = .{ |
| 779 | .llvm_name = "i8mm", | 680 | .llvm_name = "i8mm", |
| 780 | .description = "Enable Matrix Multiply Int8 Extension (FEAT_I8MM)", | 681 | .description = "Enable Matrix Multiply Int8 Extension", |
| 781 | .dependencies = featureSet(&[_]Feature{}), | 682 | .dependencies = featureSet(&[_]Feature{}), |
| 782 | }; | 683 | }; |
| 783 | result[@intFromEnum(Feature.ite)] = .{ | 684 | result[@intFromEnum(Feature.ite)] = .{ |
| 784 | .llvm_name = "ite", | 685 | .llvm_name = "ite", |
| 785 | .description = "Enable Armv9.4-A Instrumentation Extension FEAT_ITE", | 686 | .description = "Enable Armv9.4-A Instrumentation Extension", |
| 786 | .dependencies = featureSet(&[_]Feature{ | 687 | .dependencies = featureSet(&[_]Feature{ |
| 787 | .ete, | 688 | .ete, |
| 788 | }), | 689 | }), |
| 789 | }; | 690 | }; |
| 790 | result[@intFromEnum(Feature.jsconv)] = .{ | 691 | result[@intFromEnum(Feature.jsconv)] = .{ |
| 791 | .llvm_name = "jsconv", | 692 | .llvm_name = "jsconv", |
| 792 | .description = "Enable v8.3-A JavaScript FP conversion instructions (FEAT_JSCVT)", | 693 | .description = "Enable Armv8.3-A JavaScript FP conversion instructions", |
| 793 | .dependencies = featureSet(&[_]Feature{ | 694 | .dependencies = featureSet(&[_]Feature{ |
| 794 | .fp_armv8, | 695 | .fp_armv8, |
| 795 | }), | 696 | }), |
| ... | @@ -801,34 +702,34 @@ pub const all_features = blk: { | ... | @@ -801,34 +702,34 @@ pub const all_features = blk: { |
| 801 | }; | 702 | }; |
| 802 | result[@intFromEnum(Feature.lor)] = .{ | 703 | result[@intFromEnum(Feature.lor)] = .{ |
| 803 | .llvm_name = "lor", | 704 | .llvm_name = "lor", |
| 804 | .description = "Enables ARM v8.1 Limited Ordering Regions extension (FEAT_LOR)", | 705 | .description = "Enable Armv8.1-A Limited Ordering Regions extension", |
| 805 | .dependencies = featureSet(&[_]Feature{}), | 706 | .dependencies = featureSet(&[_]Feature{}), |
| 806 | }; | 707 | }; |
| 807 | result[@intFromEnum(Feature.ls64)] = .{ | 708 | result[@intFromEnum(Feature.ls64)] = .{ |
| 808 | .llvm_name = "ls64", | 709 | .llvm_name = "ls64", |
| 809 | .description = "Enable Armv8.7-A LD64B/ST64B Accelerator Extension (FEAT_LS64, FEAT_LS64_V, FEAT_LS64_ACCDATA)", | 710 | .description = "Enable Armv8.7-A LD64B/ST64B Accelerator Extension", |
| 810 | .dependencies = featureSet(&[_]Feature{}), | 711 | .dependencies = featureSet(&[_]Feature{}), |
| 811 | }; | 712 | }; |
| 812 | result[@intFromEnum(Feature.lse)] = .{ | 713 | result[@intFromEnum(Feature.lse)] = .{ |
| 813 | .llvm_name = "lse", | 714 | .llvm_name = "lse", |
| 814 | .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions (FEAT_LSE)", | 715 | .description = "Enable Armv8.1-A Large System Extension (LSE) atomic instructions", |
| 815 | .dependencies = featureSet(&[_]Feature{}), | 716 | .dependencies = featureSet(&[_]Feature{}), |
| 816 | }; | 717 | }; |
| 817 | result[@intFromEnum(Feature.lse128)] = .{ | 718 | result[@intFromEnum(Feature.lse128)] = .{ |
| 818 | .llvm_name = "lse128", | 719 | .llvm_name = "lse128", |
| 819 | .description = "Enable Armv9.4-A 128-bit Atomic Instructions (FEAT_LSE128)", | 720 | .description = "Enable Armv9.4-A 128-bit Atomic instructions", |
| 820 | .dependencies = featureSet(&[_]Feature{ | 721 | .dependencies = featureSet(&[_]Feature{ |
| 821 | .lse, | 722 | .lse, |
| 822 | }), | 723 | }), |
| 823 | }; | 724 | }; |
| 824 | result[@intFromEnum(Feature.lse2)] = .{ | 725 | result[@intFromEnum(Feature.lse2)] = .{ |
| 825 | .llvm_name = "lse2", | 726 | .llvm_name = "lse2", |
| 826 | .description = "Enable ARMv8.4 Large System Extension 2 (LSE2) atomicity rules (FEAT_LSE2)", | 727 | .description = "Enable Armv8.4-A Large System Extension 2 (LSE2) atomicity rules", |
| 827 | .dependencies = featureSet(&[_]Feature{}), | 728 | .dependencies = featureSet(&[_]Feature{}), |
| 828 | }; | 729 | }; |
| 829 | result[@intFromEnum(Feature.lut)] = .{ | 730 | result[@intFromEnum(Feature.lut)] = .{ |
| 830 | .llvm_name = "lut", | 731 | .llvm_name = "lut", |
| 831 | .description = "Enable Lookup Table instructions (FEAT_LUT)", | 732 | .description = "Enable Lookup Table instructions", |
| 832 | .dependencies = featureSet(&[_]Feature{}), | 733 | .dependencies = featureSet(&[_]Feature{}), |
| 833 | }; | 734 | }; |
| 834 | result[@intFromEnum(Feature.mec)] = .{ | 735 | result[@intFromEnum(Feature.mec)] = .{ |
| ... | @@ -840,29 +741,29 @@ pub const all_features = blk: { | ... | @@ -840,29 +741,29 @@ pub const all_features = blk: { |
| 840 | }; | 741 | }; |
| 841 | result[@intFromEnum(Feature.mops)] = .{ | 742 | result[@intFromEnum(Feature.mops)] = .{ |
| 842 | .llvm_name = "mops", | 743 | .llvm_name = "mops", |
| 843 | .description = "Enable Armv8.8-A memcpy and memset acceleration instructions (FEAT_MOPS)", | 744 | .description = "Enable Armv8.8-A memcpy and memset acceleration instructions", |
| 844 | .dependencies = featureSet(&[_]Feature{}), | 745 | .dependencies = featureSet(&[_]Feature{}), |
| 845 | }; | 746 | }; |
| 846 | result[@intFromEnum(Feature.mpam)] = .{ | 747 | result[@intFromEnum(Feature.mpam)] = .{ |
| 847 | .llvm_name = "mpam", | 748 | .llvm_name = "mpam", |
| 848 | .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension (FEAT_MPAM)", | 749 | .description = "Enable Armv8.4-A Memory system Partitioning and Monitoring extension", |
| 849 | .dependencies = featureSet(&[_]Feature{}), | 750 | .dependencies = featureSet(&[_]Feature{}), |
| 850 | }; | 751 | }; |
| 851 | result[@intFromEnum(Feature.mte)] = .{ | 752 | result[@intFromEnum(Feature.mte)] = .{ |
| 852 | .llvm_name = "mte", | 753 | .llvm_name = "mte", |
| 853 | .description = "Enable Memory Tagging Extension (FEAT_MTE, FEAT_MTE2)", | 754 | .description = "Enable Memory Tagging Extension", |
| 854 | .dependencies = featureSet(&[_]Feature{}), | 755 | .dependencies = featureSet(&[_]Feature{}), |
| 855 | }; | 756 | }; |
| 856 | result[@intFromEnum(Feature.neon)] = .{ | 757 | result[@intFromEnum(Feature.neon)] = .{ |
| 857 | .llvm_name = "neon", | 758 | .llvm_name = "neon", |
| 858 | .description = "Enable Advanced SIMD instructions (FEAT_AdvSIMD)", | 759 | .description = "Enable Advanced SIMD instructions", |
| 859 | .dependencies = featureSet(&[_]Feature{ | 760 | .dependencies = featureSet(&[_]Feature{ |
| 860 | .fp_armv8, | 761 | .fp_armv8, |
| 861 | }), | 762 | }), |
| 862 | }; | 763 | }; |
| 863 | result[@intFromEnum(Feature.nmi)] = .{ | 764 | result[@intFromEnum(Feature.nmi)] = .{ |
| 864 | .llvm_name = "nmi", | 765 | .llvm_name = "nmi", |
| 865 | .description = "Enable Armv8.8-A Non-maskable Interrupts (FEAT_NMI, FEAT_GICv3_NMI)", | 766 | .description = "Enable Armv8.8-A Non-maskable Interrupts", |
| 866 | .dependencies = featureSet(&[_]Feature{}), | 767 | .dependencies = featureSet(&[_]Feature{}), |
| 867 | }; | 768 | }; |
| 868 | result[@intFromEnum(Feature.no_bti_at_return_twice)] = .{ | 769 | result[@intFromEnum(Feature.no_bti_at_return_twice)] = .{ |
| ... | @@ -887,7 +788,7 @@ pub const all_features = blk: { | ... | @@ -887,7 +788,7 @@ pub const all_features = blk: { |
| 887 | }; | 788 | }; |
| 888 | result[@intFromEnum(Feature.nv)] = .{ | 789 | result[@intFromEnum(Feature.nv)] = .{ |
| 889 | .llvm_name = "nv", | 790 | .llvm_name = "nv", |
| 890 | .description = "Enable v8.4-A Nested Virtualization Enhancement (FEAT_NV, FEAT_NV2)", | 791 | .description = "Enable Armv8.4-A Nested Virtualization Enchancement", |
| 891 | .dependencies = featureSet(&[_]Feature{}), | 792 | .dependencies = featureSet(&[_]Feature{}), |
| 892 | }; | 793 | }; |
| 893 | result[@intFromEnum(Feature.outline_atomics)] = .{ | 794 | result[@intFromEnum(Feature.outline_atomics)] = .{ |
| ... | @@ -897,29 +798,29 @@ pub const all_features = blk: { | ... | @@ -897,29 +798,29 @@ pub const all_features = blk: { |
| 897 | }; | 798 | }; |
| 898 | result[@intFromEnum(Feature.pan)] = .{ | 799 | result[@intFromEnum(Feature.pan)] = .{ |
| 899 | .llvm_name = "pan", | 800 | .llvm_name = "pan", |
| 900 | .description = "Enables ARM v8.1 Privileged Access-Never extension (FEAT_PAN)", | 801 | .description = "Enable Armv8.1-A Privileged Access-Never extension", |
| 901 | .dependencies = featureSet(&[_]Feature{}), | 802 | .dependencies = featureSet(&[_]Feature{}), |
| 902 | }; | 803 | }; |
| 903 | result[@intFromEnum(Feature.pan_rwv)] = .{ | 804 | result[@intFromEnum(Feature.pan_rwv)] = .{ |
| 904 | .llvm_name = "pan-rwv", | 805 | .llvm_name = "pan-rwv", |
| 905 | .description = "Enable v8.2 PAN s1e1R and s1e1W Variants (FEAT_PAN2)", | 806 | .description = "Enable Armv8.2-A PAN s1e1R and s1e1W Variants", |
| 906 | .dependencies = featureSet(&[_]Feature{ | 807 | .dependencies = featureSet(&[_]Feature{ |
| 907 | .pan, | 808 | .pan, |
| 908 | }), | 809 | }), |
| 909 | }; | 810 | }; |
| 910 | result[@intFromEnum(Feature.pauth)] = .{ | 811 | result[@intFromEnum(Feature.pauth)] = .{ |
| 911 | .llvm_name = "pauth", | 812 | .llvm_name = "pauth", |
| 912 | .description = "Enable v8.3-A Pointer Authentication extension (FEAT_PAuth)", | 813 | .description = "Enable Armv8.3-A Pointer Authentication extension", |
| 913 | .dependencies = featureSet(&[_]Feature{}), | 814 | .dependencies = featureSet(&[_]Feature{}), |
| 914 | }; | 815 | }; |
| 915 | result[@intFromEnum(Feature.pauth_lr)] = .{ | 816 | result[@intFromEnum(Feature.pauth_lr)] = .{ |
| 916 | .llvm_name = "pauth-lr", | 817 | .llvm_name = "pauth-lr", |
| 917 | .description = "Enable Armv9.5-A PAC enhancements (FEAT_PAuth_LR)", | 818 | .description = "Enable Armv9.5-A PAC enhancements", |
| 918 | .dependencies = featureSet(&[_]Feature{}), | 819 | .dependencies = featureSet(&[_]Feature{}), |
| 919 | }; | 820 | }; |
| 920 | result[@intFromEnum(Feature.perfmon)] = .{ | 821 | result[@intFromEnum(Feature.perfmon)] = .{ |
| 921 | .llvm_name = "perfmon", | 822 | .llvm_name = "perfmon", |
| 922 | .description = "Enable Code Generation for ARMv8 PMUv3 Performance Monitors extension (FEAT_PMUv3)", | 823 | .description = "Enable Armv8.0-A PMUv3 Performance Monitors extension", |
| 923 | .dependencies = featureSet(&[_]Feature{}), | 824 | .dependencies = featureSet(&[_]Feature{}), |
| 924 | }; | 825 | }; |
| 925 | result[@intFromEnum(Feature.predictable_select_expensive)] = .{ | 826 | result[@intFromEnum(Feature.predictable_select_expensive)] = .{ |
| ... | @@ -929,7 +830,7 @@ pub const all_features = blk: { | ... | @@ -929,7 +830,7 @@ pub const all_features = blk: { |
| 929 | }; | 830 | }; |
| 930 | result[@intFromEnum(Feature.predres)] = .{ | 831 | result[@intFromEnum(Feature.predres)] = .{ |
| 931 | .llvm_name = "predres", | 832 | .llvm_name = "predres", |
| 932 | .description = "Enable v8.5a execution and data prediction invalidation instructions (FEAT_SPECRES)", | 833 | .description = "Enable Armv8.5-A execution and data prediction invalidation instructions", |
| 933 | .dependencies = featureSet(&[_]Feature{}), | 834 | .dependencies = featureSet(&[_]Feature{}), |
| 934 | }; | 835 | }; |
| 935 | result[@intFromEnum(Feature.prfm_slc_target)] = .{ | 836 | result[@intFromEnum(Feature.prfm_slc_target)] = .{ |
| ... | @@ -939,43 +840,50 @@ pub const all_features = blk: { | ... | @@ -939,43 +840,50 @@ pub const all_features = blk: { |
| 939 | }; | 840 | }; |
| 940 | result[@intFromEnum(Feature.rand)] = .{ | 841 | result[@intFromEnum(Feature.rand)] = .{ |
| 941 | .llvm_name = "rand", | 842 | .llvm_name = "rand", |
| 942 | .description = "Enable Random Number generation instructions (FEAT_RNG)", | 843 | .description = "Enable Random Number generation instructions", |
| 943 | .dependencies = featureSet(&[_]Feature{}), | 844 | .dependencies = featureSet(&[_]Feature{}), |
| 944 | }; | 845 | }; |
| 945 | result[@intFromEnum(Feature.ras)] = .{ | 846 | result[@intFromEnum(Feature.ras)] = .{ |
| 946 | .llvm_name = "ras", | 847 | .llvm_name = "ras", |
| 947 | .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions (FEAT_RAS, FEAT_RASv1p1)", | 848 | .description = "Enable Armv8.0-A Reliability, Availability and Serviceability Extensions", |
| 948 | .dependencies = featureSet(&[_]Feature{}), | 849 | .dependencies = featureSet(&[_]Feature{}), |
| 949 | }; | 850 | }; |
| 950 | result[@intFromEnum(Feature.rasv2)] = .{ | 851 | result[@intFromEnum(Feature.rasv2)] = .{ |
| 951 | .llvm_name = "rasv2", | 852 | .llvm_name = "rasv2", |
| 952 | .description = "Enable ARMv8.9-A Reliability, Availability and Serviceability Extensions (FEAT_RASv2)", | 853 | .description = "Enable Armv8.9-A Reliability, Availability and Serviceability Extensions", |
| 953 | .dependencies = featureSet(&[_]Feature{ | 854 | .dependencies = featureSet(&[_]Feature{ |
| 954 | .ras, | 855 | .ras, |
| 955 | }), | 856 | }), |
| 956 | }; | 857 | }; |
| 957 | result[@intFromEnum(Feature.rcpc)] = .{ | 858 | result[@intFromEnum(Feature.rcpc)] = .{ |
| 958 | .llvm_name = "rcpc", | 859 | .llvm_name = "rcpc", |
| 959 | .description = "Enable support for RCPC extension (FEAT_LRCPC)", | 860 | .description = "Enable support for RCPC extension", |
| 960 | .dependencies = featureSet(&[_]Feature{}), | 861 | .dependencies = featureSet(&[_]Feature{}), |
| 961 | }; | 862 | }; |
| 962 | result[@intFromEnum(Feature.rcpc3)] = .{ | 863 | result[@intFromEnum(Feature.rcpc3)] = .{ |
| 963 | .llvm_name = "rcpc3", | 864 | .llvm_name = "rcpc3", |
| 964 | .description = "Enable Armv8.9-A RCPC instructions for A64 and Advanced SIMD and floating-point instruction set (FEAT_LRCPC3)", | 865 | .description = "Enable Armv8.9-A RCPC instructions for A64 and Advanced SIMD and floating-point instruction set", |
| 965 | .dependencies = featureSet(&[_]Feature{ | 866 | .dependencies = featureSet(&[_]Feature{ |
| 966 | .rcpc_immo, | 867 | .rcpc_immo, |
| 967 | }), | 868 | }), |
| 968 | }; | 869 | }; |
| 969 | result[@intFromEnum(Feature.rcpc_immo)] = .{ | 870 | result[@intFromEnum(Feature.rcpc_immo)] = .{ |
| 970 | .llvm_name = "rcpc-immo", | 871 | .llvm_name = "rcpc-immo", |
| 971 | .description = "Enable v8.4-A RCPC instructions with Immediate Offsets (FEAT_LRCPC2)", | 872 | .description = "Enable Armv8.4-A RCPC instructions with Immediate Offsets", |
| 972 | .dependencies = featureSet(&[_]Feature{ | 873 | .dependencies = featureSet(&[_]Feature{ |
| 973 | .rcpc, | 874 | .rcpc, |
| 974 | }), | 875 | }), |
| 975 | }; | 876 | }; |
| 976 | result[@intFromEnum(Feature.rdm)] = .{ | 877 | result[@intFromEnum(Feature.rdm)] = .{ |
| 977 | .llvm_name = "rdm", | 878 | .llvm_name = "rdm", |
| 978 | .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions (FEAT_RDM)", | 879 | .description = "Enable Armv8.1-A Rounding Double Multiply Add/Subtract instructions", |
| 880 | .dependencies = featureSet(&[_]Feature{ | ||
| 881 | .neon, | ||
| 882 | }), | ||
| 883 | }; | ||
| 884 | result[@intFromEnum(Feature.reserve_lr_for_ra)] = .{ | ||
| 885 | .llvm_name = "reserve-lr-for-ra", | ||
| 886 | .description = "Reserve LR for call use only", | ||
| 979 | .dependencies = featureSet(&[_]Feature{}), | 887 | .dependencies = featureSet(&[_]Feature{}), |
| 980 | }; | 888 | }; |
| 981 | result[@intFromEnum(Feature.reserve_x1)] = .{ | 889 | result[@intFromEnum(Feature.reserve_x1)] = .{ |
| ... | @@ -1073,11 +981,6 @@ pub const all_features = blk: { | ... | @@ -1073,11 +981,6 @@ pub const all_features = blk: { |
| 1073 | .description = "Reserve X3, making it unavailable as a GPR", | 981 | .description = "Reserve X3, making it unavailable as a GPR", |
| 1074 | .dependencies = featureSet(&[_]Feature{}), | 982 | .dependencies = featureSet(&[_]Feature{}), |
| 1075 | }; | 983 | }; |
| 1076 | result[@intFromEnum(Feature.reserve_x30)] = .{ | ||
| 1077 | .llvm_name = "reserve-x30", | ||
| 1078 | .description = "Reserve X30, making it unavailable as a GPR", | ||
| 1079 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1080 | }; | ||
| 1081 | result[@intFromEnum(Feature.reserve_x4)] = .{ | 984 | result[@intFromEnum(Feature.reserve_x4)] = .{ |
| 1082 | .llvm_name = "reserve-x4", | 985 | .llvm_name = "reserve-x4", |
| 1083 | .description = "Reserve X4, making it unavailable as a GPR", | 986 | .description = "Reserve X4, making it unavailable as a GPR", |
| ... | @@ -1105,29 +1008,29 @@ pub const all_features = blk: { | ... | @@ -1105,29 +1008,29 @@ pub const all_features = blk: { |
| 1105 | }; | 1008 | }; |
| 1106 | result[@intFromEnum(Feature.rme)] = .{ | 1009 | result[@intFromEnum(Feature.rme)] = .{ |
| 1107 | .llvm_name = "rme", | 1010 | .llvm_name = "rme", |
| 1108 | .description = "Enable Realm Management Extension (FEAT_RME)", | 1011 | .description = "Enable Realm Management Extension", |
| 1109 | .dependencies = featureSet(&[_]Feature{}), | 1012 | .dependencies = featureSet(&[_]Feature{}), |
| 1110 | }; | 1013 | }; |
| 1111 | result[@intFromEnum(Feature.sb)] = .{ | 1014 | result[@intFromEnum(Feature.sb)] = .{ |
| 1112 | .llvm_name = "sb", | 1015 | .llvm_name = "sb", |
| 1113 | .description = "Enable v8.5 Speculation Barrier (FEAT_SB)", | 1016 | .description = "Enable Armv8.5-A Speculation Barrier", |
| 1114 | .dependencies = featureSet(&[_]Feature{}), | 1017 | .dependencies = featureSet(&[_]Feature{}), |
| 1115 | }; | 1018 | }; |
| 1116 | result[@intFromEnum(Feature.sel2)] = .{ | 1019 | result[@intFromEnum(Feature.sel2)] = .{ |
| 1117 | .llvm_name = "sel2", | 1020 | .llvm_name = "sel2", |
| 1118 | .description = "Enable v8.4-A Secure Exception Level 2 extension (FEAT_SEL2)", | 1021 | .description = "Enable Armv8.4-A Secure Exception Level 2 extension", |
| 1119 | .dependencies = featureSet(&[_]Feature{}), | 1022 | .dependencies = featureSet(&[_]Feature{}), |
| 1120 | }; | 1023 | }; |
| 1121 | result[@intFromEnum(Feature.sha2)] = .{ | 1024 | result[@intFromEnum(Feature.sha2)] = .{ |
| 1122 | .llvm_name = "sha2", | 1025 | .llvm_name = "sha2", |
| 1123 | .description = "Enable SHA1 and SHA256 support (FEAT_SHA1, FEAT_SHA256)", | 1026 | .description = "Enable SHA1 and SHA256 support", |
| 1124 | .dependencies = featureSet(&[_]Feature{ | 1027 | .dependencies = featureSet(&[_]Feature{ |
| 1125 | .neon, | 1028 | .neon, |
| 1126 | }), | 1029 | }), |
| 1127 | }; | 1030 | }; |
| 1128 | result[@intFromEnum(Feature.sha3)] = .{ | 1031 | result[@intFromEnum(Feature.sha3)] = .{ |
| 1129 | .llvm_name = "sha3", | 1032 | .llvm_name = "sha3", |
| 1130 | .description = "Enable SHA512 and SHA3 support (FEAT_SHA3, FEAT_SHA512)", | 1033 | .description = "Enable SHA512 and SHA3 support", |
| 1131 | .dependencies = featureSet(&[_]Feature{ | 1034 | .dependencies = featureSet(&[_]Feature{ |
| 1132 | .sha2, | 1035 | .sha2, |
| 1133 | }), | 1036 | }), |
| ... | @@ -1149,14 +1052,14 @@ pub const all_features = blk: { | ... | @@ -1149,14 +1052,14 @@ pub const all_features = blk: { |
| 1149 | }; | 1052 | }; |
| 1150 | result[@intFromEnum(Feature.sm4)] = .{ | 1053 | result[@intFromEnum(Feature.sm4)] = .{ |
| 1151 | .llvm_name = "sm4", | 1054 | .llvm_name = "sm4", |
| 1152 | .description = "Enable SM3 and SM4 support (FEAT_SM4, FEAT_SM3)", | 1055 | .description = "Enable SM3 and SM4 support", |
| 1153 | .dependencies = featureSet(&[_]Feature{ | 1056 | .dependencies = featureSet(&[_]Feature{ |
| 1154 | .neon, | 1057 | .neon, |
| 1155 | }), | 1058 | }), |
| 1156 | }; | 1059 | }; |
| 1157 | result[@intFromEnum(Feature.sme)] = .{ | 1060 | result[@intFromEnum(Feature.sme)] = .{ |
| 1158 | .llvm_name = "sme", | 1061 | .llvm_name = "sme", |
| 1159 | .description = "Enable Scalable Matrix Extension (SME) (FEAT_SME)", | 1062 | .description = "Enable Scalable Matrix Extension (SME)", |
| 1160 | .dependencies = featureSet(&[_]Feature{ | 1063 | .dependencies = featureSet(&[_]Feature{ |
| 1161 | .bf16, | 1064 | .bf16, |
| 1162 | .use_scalar_inc_vl, | 1065 | .use_scalar_inc_vl, |
| ... | @@ -1171,34 +1074,43 @@ pub const all_features = blk: { | ... | @@ -1171,34 +1074,43 @@ pub const all_features = blk: { |
| 1171 | }; | 1074 | }; |
| 1172 | result[@intFromEnum(Feature.sme2p1)] = .{ | 1075 | result[@intFromEnum(Feature.sme2p1)] = .{ |
| 1173 | .llvm_name = "sme2p1", | 1076 | .llvm_name = "sme2p1", |
| 1174 | .description = "Enable Scalable Matrix Extension 2.1 (FEAT_SME2p1) instructions", | 1077 | .description = "Enable Scalable Matrix Extension 2.1 instructions", |
| 1078 | .dependencies = featureSet(&[_]Feature{ | ||
| 1079 | .sme2, | ||
| 1080 | }), | ||
| 1081 | }; | ||
| 1082 | result[@intFromEnum(Feature.sme_b16b16)] = .{ | ||
| 1083 | .llvm_name = "sme-b16b16", | ||
| 1084 | .description = "Enable SME2.1 ZA-targeting non-widening BFloat16 instructions", | ||
| 1175 | .dependencies = featureSet(&[_]Feature{ | 1085 | .dependencies = featureSet(&[_]Feature{ |
| 1086 | .b16b16, | ||
| 1176 | .sme2, | 1087 | .sme2, |
| 1177 | }), | 1088 | }), |
| 1178 | }; | 1089 | }; |
| 1179 | result[@intFromEnum(Feature.sme_f16f16)] = .{ | 1090 | result[@intFromEnum(Feature.sme_f16f16)] = .{ |
| 1180 | .llvm_name = "sme-f16f16", | 1091 | .llvm_name = "sme-f16f16", |
| 1181 | .description = "Enable SME2.1 non-widening Float16 instructions (FEAT_SME_F16F16)", | 1092 | .description = "Enable SME non-widening Float16 instructions", |
| 1182 | .dependencies = featureSet(&[_]Feature{}), | 1093 | .dependencies = featureSet(&[_]Feature{ |
| 1094 | .sme2, | ||
| 1095 | }), | ||
| 1183 | }; | 1096 | }; |
| 1184 | result[@intFromEnum(Feature.sme_f64f64)] = .{ | 1097 | result[@intFromEnum(Feature.sme_f64f64)] = .{ |
| 1185 | .llvm_name = "sme-f64f64", | 1098 | .llvm_name = "sme-f64f64", |
| 1186 | .description = "Enable Scalable Matrix Extension (SME) F64F64 instructions (FEAT_SME_F64F64)", | 1099 | .description = "Enable Scalable Matrix Extension (SME) F64F64 instructions", |
| 1187 | .dependencies = featureSet(&[_]Feature{ | 1100 | .dependencies = featureSet(&[_]Feature{ |
| 1188 | .sme, | 1101 | .sme, |
| 1189 | }), | 1102 | }), |
| 1190 | }; | 1103 | }; |
| 1191 | result[@intFromEnum(Feature.sme_f8f16)] = .{ | 1104 | result[@intFromEnum(Feature.sme_f8f16)] = .{ |
| 1192 | .llvm_name = "sme-f8f16", | 1105 | .llvm_name = "sme-f8f16", |
| 1193 | .description = "Enable Scalable Matrix Extension (SME) F8F16 instructions(FEAT_SME_F8F16)", | 1106 | .description = "Enable Scalable Matrix Extension (SME) F8F16 instructions", |
| 1194 | .dependencies = featureSet(&[_]Feature{ | 1107 | .dependencies = featureSet(&[_]Feature{ |
| 1195 | .fp8, | 1108 | .sme_f8f32, |
| 1196 | .sme2, | ||
| 1197 | }), | 1109 | }), |
| 1198 | }; | 1110 | }; |
| 1199 | result[@intFromEnum(Feature.sme_f8f32)] = .{ | 1111 | result[@intFromEnum(Feature.sme_f8f32)] = .{ |
| 1200 | .llvm_name = "sme-f8f32", | 1112 | .llvm_name = "sme-f8f32", |
| 1201 | .description = "Enable Scalable Matrix Extension (SME) F8F32 instructions (FEAT_SME_F8F32)", | 1113 | .description = "Enable Scalable Matrix Extension (SME) F8F32 instructions", |
| 1202 | .dependencies = featureSet(&[_]Feature{ | 1114 | .dependencies = featureSet(&[_]Feature{ |
| 1203 | .fp8, | 1115 | .fp8, |
| 1204 | .sme2, | 1116 | .sme2, |
| ... | @@ -1206,7 +1118,7 @@ pub const all_features = blk: { | ... | @@ -1206,7 +1118,7 @@ pub const all_features = blk: { |
| 1206 | }; | 1118 | }; |
| 1207 | result[@intFromEnum(Feature.sme_fa64)] = .{ | 1119 | result[@intFromEnum(Feature.sme_fa64)] = .{ |
| 1208 | .llvm_name = "sme-fa64", | 1120 | .llvm_name = "sme-fa64", |
| 1209 | .description = "Enable the full A64 instruction set in streaming SVE mode (FEAT_SME_FA64)", | 1121 | .description = "Enable the full A64 instruction set in streaming SVE mode", |
| 1210 | .dependencies = featureSet(&[_]Feature{ | 1122 | .dependencies = featureSet(&[_]Feature{ |
| 1211 | .sme, | 1123 | .sme, |
| 1212 | .sve2, | 1124 | .sve2, |
| ... | @@ -1214,61 +1126,62 @@ pub const all_features = blk: { | ... | @@ -1214,61 +1126,62 @@ pub const all_features = blk: { |
| 1214 | }; | 1126 | }; |
| 1215 | result[@intFromEnum(Feature.sme_i16i64)] = .{ | 1127 | result[@intFromEnum(Feature.sme_i16i64)] = .{ |
| 1216 | .llvm_name = "sme-i16i64", | 1128 | .llvm_name = "sme-i16i64", |
| 1217 | .description = "Enable Scalable Matrix Extension (SME) I16I64 instructions (FEAT_SME_I16I64)", | 1129 | .description = "Enable Scalable Matrix Extension (SME) I16I64 instructions", |
| 1218 | .dependencies = featureSet(&[_]Feature{ | 1130 | .dependencies = featureSet(&[_]Feature{ |
| 1219 | .sme, | 1131 | .sme, |
| 1220 | }), | 1132 | }), |
| 1221 | }; | 1133 | }; |
| 1222 | result[@intFromEnum(Feature.sme_lutv2)] = .{ | 1134 | result[@intFromEnum(Feature.sme_lutv2)] = .{ |
| 1223 | .llvm_name = "sme-lutv2", | 1135 | .llvm_name = "sme-lutv2", |
| 1224 | .description = "Enable Scalable Matrix Extension (SME) LUTv2 instructions (FEAT_SME_LUTv2)", | 1136 | .description = "Enable Scalable Matrix Extension (SME) LUTv2 instructions", |
| 1225 | .dependencies = featureSet(&[_]Feature{}), | 1137 | .dependencies = featureSet(&[_]Feature{}), |
| 1226 | }; | 1138 | }; |
| 1227 | result[@intFromEnum(Feature.spe)] = .{ | 1139 | result[@intFromEnum(Feature.spe)] = .{ |
| 1228 | .llvm_name = "spe", | 1140 | .llvm_name = "spe", |
| 1229 | .description = "Enable Statistical Profiling extension (FEAT_SPE)", | 1141 | .description = "Enable Statistical Profiling extension", |
| 1230 | .dependencies = featureSet(&[_]Feature{}), | 1142 | .dependencies = featureSet(&[_]Feature{}), |
| 1231 | }; | 1143 | }; |
| 1232 | result[@intFromEnum(Feature.spe_eef)] = .{ | 1144 | result[@intFromEnum(Feature.spe_eef)] = .{ |
| 1233 | .llvm_name = "spe-eef", | 1145 | .llvm_name = "spe-eef", |
| 1234 | .description = "Enable extra register in the Statistical Profiling Extension (FEAT_SPEv1p2)", | 1146 | .description = "Enable extra register in the Statistical Profiling Extension", |
| 1235 | .dependencies = featureSet(&[_]Feature{}), | 1147 | .dependencies = featureSet(&[_]Feature{}), |
| 1236 | }; | 1148 | }; |
| 1237 | result[@intFromEnum(Feature.specres2)] = .{ | 1149 | result[@intFromEnum(Feature.specres2)] = .{ |
| 1238 | .llvm_name = "specres2", | 1150 | .llvm_name = "specres2", |
| 1239 | .description = "Enable Speculation Restriction Instruction (FEAT_SPECRES2)", | 1151 | .description = "Enable Speculation Restriction Instruction", |
| 1240 | .dependencies = featureSet(&[_]Feature{ | 1152 | .dependencies = featureSet(&[_]Feature{ |
| 1241 | .predres, | 1153 | .predres, |
| 1242 | }), | 1154 | }), |
| 1243 | }; | 1155 | }; |
| 1244 | result[@intFromEnum(Feature.specrestrict)] = .{ | 1156 | result[@intFromEnum(Feature.specrestrict)] = .{ |
| 1245 | .llvm_name = "specrestrict", | 1157 | .llvm_name = "specrestrict", |
| 1246 | .description = "Enable architectural speculation restriction (FEAT_CSV2_2)", | 1158 | .description = "Enable architectural speculation restriction", |
| 1247 | .dependencies = featureSet(&[_]Feature{}), | 1159 | .dependencies = featureSet(&[_]Feature{}), |
| 1248 | }; | 1160 | }; |
| 1249 | result[@intFromEnum(Feature.ssbs)] = .{ | 1161 | result[@intFromEnum(Feature.ssbs)] = .{ |
| 1250 | .llvm_name = "ssbs", | 1162 | .llvm_name = "ssbs", |
| 1251 | .description = "Enable Speculative Store Bypass Safe bit (FEAT_SSBS, FEAT_SSBS2)", | 1163 | .description = "Enable Speculative Store Bypass Safe bit", |
| 1252 | .dependencies = featureSet(&[_]Feature{}), | 1164 | .dependencies = featureSet(&[_]Feature{}), |
| 1253 | }; | 1165 | }; |
| 1254 | result[@intFromEnum(Feature.ssve_fp8dot2)] = .{ | 1166 | result[@intFromEnum(Feature.ssve_fp8dot2)] = .{ |
| 1255 | .llvm_name = "ssve-fp8dot2", | 1167 | .llvm_name = "ssve-fp8dot2", |
| 1256 | .description = "Enable SVE2 fp8 2-way dot product instructions (FEAT_SSVE_FP8DOT2)", | 1168 | .description = "Enable SVE2 FP8 2-way dot product instructions", |
| 1257 | .dependencies = featureSet(&[_]Feature{ | 1169 | .dependencies = featureSet(&[_]Feature{ |
| 1258 | .sme2, | 1170 | .ssve_fp8dot4, |
| 1259 | }), | 1171 | }), |
| 1260 | }; | 1172 | }; |
| 1261 | result[@intFromEnum(Feature.ssve_fp8dot4)] = .{ | 1173 | result[@intFromEnum(Feature.ssve_fp8dot4)] = .{ |
| 1262 | .llvm_name = "ssve-fp8dot4", | 1174 | .llvm_name = "ssve-fp8dot4", |
| 1263 | .description = "Enable SVE2 fp8 4-way dot product instructions (FEAT_SSVE_FP8DOT4)", | 1175 | .description = "Enable SVE2 FP8 4-way dot product instructions", |
| 1264 | .dependencies = featureSet(&[_]Feature{ | 1176 | .dependencies = featureSet(&[_]Feature{ |
| 1265 | .sme2, | 1177 | .ssve_fp8fma, |
| 1266 | }), | 1178 | }), |
| 1267 | }; | 1179 | }; |
| 1268 | result[@intFromEnum(Feature.ssve_fp8fma)] = .{ | 1180 | result[@intFromEnum(Feature.ssve_fp8fma)] = .{ |
| 1269 | .llvm_name = "ssve-fp8fma", | 1181 | .llvm_name = "ssve-fp8fma", |
| 1270 | .description = "Enable SVE2 fp8 multiply-add instructions (FEAT_SSVE_FP8FMA)", | 1182 | .description = "Enable SVE2 FP8 multiply-add instructions", |
| 1271 | .dependencies = featureSet(&[_]Feature{ | 1183 | .dependencies = featureSet(&[_]Feature{ |
| 1184 | .fp8, | ||
| 1272 | .sme2, | 1185 | .sme2, |
| 1273 | }), | 1186 | }), |
| 1274 | }; | 1187 | }; |
| ... | @@ -1289,14 +1202,14 @@ pub const all_features = blk: { | ... | @@ -1289,14 +1202,14 @@ pub const all_features = blk: { |
| 1289 | }; | 1202 | }; |
| 1290 | result[@intFromEnum(Feature.sve)] = .{ | 1203 | result[@intFromEnum(Feature.sve)] = .{ |
| 1291 | .llvm_name = "sve", | 1204 | .llvm_name = "sve", |
| 1292 | .description = "Enable Scalable Vector Extension (SVE) instructions (FEAT_SVE)", | 1205 | .description = "Enable Scalable Vector Extension (SVE) instructions", |
| 1293 | .dependencies = featureSet(&[_]Feature{ | 1206 | .dependencies = featureSet(&[_]Feature{ |
| 1294 | .fullfp16, | 1207 | .fullfp16, |
| 1295 | }), | 1208 | }), |
| 1296 | }; | 1209 | }; |
| 1297 | result[@intFromEnum(Feature.sve2)] = .{ | 1210 | result[@intFromEnum(Feature.sve2)] = .{ |
| 1298 | .llvm_name = "sve2", | 1211 | .llvm_name = "sve2", |
| 1299 | .description = "Enable Scalable Vector Extension 2 (SVE2) instructions (FEAT_SVE2)", | 1212 | .description = "Enable Scalable Vector Extension 2 (SVE2) instructions", |
| 1300 | .dependencies = featureSet(&[_]Feature{ | 1213 | .dependencies = featureSet(&[_]Feature{ |
| 1301 | .sve, | 1214 | .sve, |
| 1302 | .use_scalar_inc_vl, | 1215 | .use_scalar_inc_vl, |
| ... | @@ -1304,7 +1217,7 @@ pub const all_features = blk: { | ... | @@ -1304,7 +1217,7 @@ pub const all_features = blk: { |
| 1304 | }; | 1217 | }; |
| 1305 | result[@intFromEnum(Feature.sve2_aes)] = .{ | 1218 | result[@intFromEnum(Feature.sve2_aes)] = .{ |
| 1306 | .llvm_name = "sve2-aes", | 1219 | .llvm_name = "sve2-aes", |
| 1307 | .description = "Enable AES SVE2 instructions (FEAT_SVE_AES, FEAT_SVE_PMULL128)", | 1220 | .description = "Enable AES SVE2 instructions", |
| 1308 | .dependencies = featureSet(&[_]Feature{ | 1221 | .dependencies = featureSet(&[_]Feature{ |
| 1309 | .aes, | 1222 | .aes, |
| 1310 | .sve2, | 1223 | .sve2, |
| ... | @@ -1312,14 +1225,14 @@ pub const all_features = blk: { | ... | @@ -1312,14 +1225,14 @@ pub const all_features = blk: { |
| 1312 | }; | 1225 | }; |
| 1313 | result[@intFromEnum(Feature.sve2_bitperm)] = .{ | 1226 | result[@intFromEnum(Feature.sve2_bitperm)] = .{ |
| 1314 | .llvm_name = "sve2-bitperm", | 1227 | .llvm_name = "sve2-bitperm", |
| 1315 | .description = "Enable bit permutation SVE2 instructions (FEAT_SVE_BitPerm)", | 1228 | .description = "Enable bit permutation SVE2 instructions", |
| 1316 | .dependencies = featureSet(&[_]Feature{ | 1229 | .dependencies = featureSet(&[_]Feature{ |
| 1317 | .sve2, | 1230 | .sve2, |
| 1318 | }), | 1231 | }), |
| 1319 | }; | 1232 | }; |
| 1320 | result[@intFromEnum(Feature.sve2_sha3)] = .{ | 1233 | result[@intFromEnum(Feature.sve2_sha3)] = .{ |
| 1321 | .llvm_name = "sve2-sha3", | 1234 | .llvm_name = "sve2-sha3", |
| 1322 | .description = "Enable SHA3 SVE2 instructions (FEAT_SVE_SHA3)", | 1235 | .description = "Enable SHA3 SVE2 instructions", |
| 1323 | .dependencies = featureSet(&[_]Feature{ | 1236 | .dependencies = featureSet(&[_]Feature{ |
| 1324 | .sha3, | 1237 | .sha3, |
| 1325 | .sve2, | 1238 | .sve2, |
| ... | @@ -1327,7 +1240,7 @@ pub const all_features = blk: { | ... | @@ -1327,7 +1240,7 @@ pub const all_features = blk: { |
| 1327 | }; | 1240 | }; |
| 1328 | result[@intFromEnum(Feature.sve2_sm4)] = .{ | 1241 | result[@intFromEnum(Feature.sve2_sm4)] = .{ |
| 1329 | .llvm_name = "sve2-sm4", | 1242 | .llvm_name = "sve2-sm4", |
| 1330 | .description = "Enable SM4 SVE2 instructions (FEAT_SVE_SM4)", | 1243 | .description = "Enable SM4 SVE2 instructions", |
| 1331 | .dependencies = featureSet(&[_]Feature{ | 1244 | .dependencies = featureSet(&[_]Feature{ |
| 1332 | .sm4, | 1245 | .sm4, |
| 1333 | .sve2, | 1246 | .sve2, |
| ... | @@ -1340,6 +1253,13 @@ pub const all_features = blk: { | ... | @@ -1340,6 +1253,13 @@ pub const all_features = blk: { |
| 1340 | .sve2, | 1253 | .sve2, |
| 1341 | }), | 1254 | }), |
| 1342 | }; | 1255 | }; |
| 1256 | result[@intFromEnum(Feature.sve_b16b16)] = .{ | ||
| 1257 | .llvm_name = "sve-b16b16", | ||
| 1258 | .description = "Enable SVE2 non-widening and SME2 Z-targeting non-widening BFloat16 instructions", | ||
| 1259 | .dependencies = featureSet(&[_]Feature{ | ||
| 1260 | .b16b16, | ||
| 1261 | }), | ||
| 1262 | }; | ||
| 1343 | result[@intFromEnum(Feature.tagged_globals)] = .{ | 1263 | result[@intFromEnum(Feature.tagged_globals)] = .{ |
| 1344 | .llvm_name = "tagged-globals", | 1264 | .llvm_name = "tagged-globals", |
| 1345 | .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits", | 1265 | .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits", |
| ... | @@ -1347,22 +1267,22 @@ pub const all_features = blk: { | ... | @@ -1347,22 +1267,22 @@ pub const all_features = blk: { |
| 1347 | }; | 1267 | }; |
| 1348 | result[@intFromEnum(Feature.the)] = .{ | 1268 | result[@intFromEnum(Feature.the)] = .{ |
| 1349 | .llvm_name = "the", | 1269 | .llvm_name = "the", |
| 1350 | .description = "Enable Armv8.9-A Translation Hardening Extension (FEAT_THE)", | 1270 | .description = "Enable Armv8.9-A Translation Hardening Extension", |
| 1351 | .dependencies = featureSet(&[_]Feature{}), | 1271 | .dependencies = featureSet(&[_]Feature{}), |
| 1352 | }; | 1272 | }; |
| 1353 | result[@intFromEnum(Feature.tlb_rmi)] = .{ | 1273 | result[@intFromEnum(Feature.tlb_rmi)] = .{ |
| 1354 | .llvm_name = "tlb-rmi", | 1274 | .llvm_name = "tlb-rmi", |
| 1355 | .description = "Enable v8.4-A TLB Range and Maintenance Instructions (FEAT_TLBIOS, FEAT_TLBIRANGE)", | 1275 | .description = "Enable Armv8.4-A TLB Range and Maintenance instructions", |
| 1356 | .dependencies = featureSet(&[_]Feature{}), | 1276 | .dependencies = featureSet(&[_]Feature{}), |
| 1357 | }; | 1277 | }; |
| 1358 | result[@intFromEnum(Feature.tlbiw)] = .{ | 1278 | result[@intFromEnum(Feature.tlbiw)] = .{ |
| 1359 | .llvm_name = "tlbiw", | 1279 | .llvm_name = "tlbiw", |
| 1360 | .description = "Enable ARMv9.5-A TLBI VMALL for Dirty State (FEAT_TLBIW)", | 1280 | .description = "Enable Armv9.5-A TLBI VMALL for Dirty State", |
| 1361 | .dependencies = featureSet(&[_]Feature{}), | 1281 | .dependencies = featureSet(&[_]Feature{}), |
| 1362 | }; | 1282 | }; |
| 1363 | result[@intFromEnum(Feature.tme)] = .{ | 1283 | result[@intFromEnum(Feature.tme)] = .{ |
| 1364 | .llvm_name = "tme", | 1284 | .llvm_name = "tme", |
| 1365 | .description = "Enable Transactional Memory Extension (FEAT_TME)", | 1285 | .description = "Enable Transactional Memory Extension", |
| 1366 | .dependencies = featureSet(&[_]Feature{}), | 1286 | .dependencies = featureSet(&[_]Feature{}), |
| 1367 | }; | 1287 | }; |
| 1368 | result[@intFromEnum(Feature.tpidr_el1)] = .{ | 1288 | result[@intFromEnum(Feature.tpidr_el1)] = .{ |
| ... | @@ -1387,17 +1307,17 @@ pub const all_features = blk: { | ... | @@ -1387,17 +1307,17 @@ pub const all_features = blk: { |
| 1387 | }; | 1307 | }; |
| 1388 | result[@intFromEnum(Feature.tracev8_4)] = .{ | 1308 | result[@intFromEnum(Feature.tracev8_4)] = .{ |
| 1389 | .llvm_name = "tracev8.4", | 1309 | .llvm_name = "tracev8.4", |
| 1390 | .description = "Enable v8.4-A Trace extension (FEAT_TRF)", | 1310 | .description = "Enable Armv8.4-A Trace extension", |
| 1391 | .dependencies = featureSet(&[_]Feature{}), | 1311 | .dependencies = featureSet(&[_]Feature{}), |
| 1392 | }; | 1312 | }; |
| 1393 | result[@intFromEnum(Feature.trbe)] = .{ | 1313 | result[@intFromEnum(Feature.trbe)] = .{ |
| 1394 | .llvm_name = "trbe", | 1314 | .llvm_name = "trbe", |
| 1395 | .description = "Enable Trace Buffer Extension (FEAT_TRBE)", | 1315 | .description = "Enable Trace Buffer Extension", |
| 1396 | .dependencies = featureSet(&[_]Feature{}), | 1316 | .dependencies = featureSet(&[_]Feature{}), |
| 1397 | }; | 1317 | }; |
| 1398 | result[@intFromEnum(Feature.uaops)] = .{ | 1318 | result[@intFromEnum(Feature.uaops)] = .{ |
| 1399 | .llvm_name = "uaops", | 1319 | .llvm_name = "uaops", |
| 1400 | .description = "Enable v8.2 UAO PState (FEAT_UAO)", | 1320 | .description = "Enable Armv8.2-A UAO PState", |
| 1401 | .dependencies = featureSet(&[_]Feature{}), | 1321 | .dependencies = featureSet(&[_]Feature{}), |
| 1402 | }; | 1322 | }; |
| 1403 | result[@intFromEnum(Feature.use_experimental_zeroing_pseudos)] = .{ | 1323 | result[@intFromEnum(Feature.use_experimental_zeroing_pseudos)] = .{ |
| ... | @@ -1405,6 +1325,11 @@ pub const all_features = blk: { | ... | @@ -1405,6 +1325,11 @@ pub const all_features = blk: { |
| 1405 | .description = "Hint to the compiler that the MOVPRFX instruction is merged with destructive operations", | 1325 | .description = "Hint to the compiler that the MOVPRFX instruction is merged with destructive operations", |
| 1406 | .dependencies = featureSet(&[_]Feature{}), | 1326 | .dependencies = featureSet(&[_]Feature{}), |
| 1407 | }; | 1327 | }; |
| 1328 | result[@intFromEnum(Feature.use_fixed_over_scalable_if_equal_cost)] = .{ | ||
| 1329 | .llvm_name = "use-fixed-over-scalable-if-equal-cost", | ||
| 1330 | .description = "Prefer fixed width loop vectorization over scalable if the cost-model assigns equal costs", | ||
| 1331 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1332 | }; | ||
| 1408 | result[@intFromEnum(Feature.use_postra_scheduler)] = .{ | 1333 | result[@intFromEnum(Feature.use_postra_scheduler)] = .{ |
| 1409 | .llvm_name = "use-postra-scheduler", | 1334 | .llvm_name = "use-postra-scheduler", |
| 1410 | .description = "Schedule again after register allocation", | 1335 | .description = "Schedule again after register allocation", |
| ... | @@ -1422,7 +1347,7 @@ pub const all_features = blk: { | ... | @@ -1422,7 +1347,7 @@ pub const all_features = blk: { |
| 1422 | }; | 1347 | }; |
| 1423 | result[@intFromEnum(Feature.v8_1a)] = .{ | 1348 | result[@intFromEnum(Feature.v8_1a)] = .{ |
| 1424 | .llvm_name = "v8.1a", | 1349 | .llvm_name = "v8.1a", |
| 1425 | .description = "Support ARM v8.1a instructions", | 1350 | .description = "Support ARM v8.1a architecture", |
| 1426 | .dependencies = featureSet(&[_]Feature{ | 1351 | .dependencies = featureSet(&[_]Feature{ |
| 1427 | .crc, | 1352 | .crc, |
| 1428 | .lor, | 1353 | .lor, |
| ... | @@ -1435,7 +1360,7 @@ pub const all_features = blk: { | ... | @@ -1435,7 +1360,7 @@ pub const all_features = blk: { |
| 1435 | }; | 1360 | }; |
| 1436 | result[@intFromEnum(Feature.v8_2a)] = .{ | 1361 | result[@intFromEnum(Feature.v8_2a)] = .{ |
| 1437 | .llvm_name = "v8.2a", | 1362 | .llvm_name = "v8.2a", |
| 1438 | .description = "Support ARM v8.2a instructions", | 1363 | .description = "Support ARM v8.2a architecture", |
| 1439 | .dependencies = featureSet(&[_]Feature{ | 1364 | .dependencies = featureSet(&[_]Feature{ |
| 1440 | .ccpp, | 1365 | .ccpp, |
| 1441 | .pan_rwv, | 1366 | .pan_rwv, |
| ... | @@ -1446,9 +1371,8 @@ pub const all_features = blk: { | ... | @@ -1446,9 +1371,8 @@ pub const all_features = blk: { |
| 1446 | }; | 1371 | }; |
| 1447 | result[@intFromEnum(Feature.v8_3a)] = .{ | 1372 | result[@intFromEnum(Feature.v8_3a)] = .{ |
| 1448 | .llvm_name = "v8.3a", | 1373 | .llvm_name = "v8.3a", |
| 1449 | .description = "Support ARM v8.3a instructions", | 1374 | .description = "Support ARM v8.3a architecture", |
| 1450 | .dependencies = featureSet(&[_]Feature{ | 1375 | .dependencies = featureSet(&[_]Feature{ |
| 1451 | .ccidx, | ||
| 1452 | .complxnum, | 1376 | .complxnum, |
| 1453 | .jsconv, | 1377 | .jsconv, |
| 1454 | .pauth, | 1378 | .pauth, |
| ... | @@ -1458,7 +1382,7 @@ pub const all_features = blk: { | ... | @@ -1458,7 +1382,7 @@ pub const all_features = blk: { |
| 1458 | }; | 1382 | }; |
| 1459 | result[@intFromEnum(Feature.v8_4a)] = .{ | 1383 | result[@intFromEnum(Feature.v8_4a)] = .{ |
| 1460 | .llvm_name = "v8.4a", | 1384 | .llvm_name = "v8.4a", |
| 1461 | .description = "Support ARM v8.4a instructions", | 1385 | .description = "Support ARM v8.4a architecture", |
| 1462 | .dependencies = featureSet(&[_]Feature{ | 1386 | .dependencies = featureSet(&[_]Feature{ |
| 1463 | .am, | 1387 | .am, |
| 1464 | .dit, | 1388 | .dit, |
| ... | @@ -1476,7 +1400,7 @@ pub const all_features = blk: { | ... | @@ -1476,7 +1400,7 @@ pub const all_features = blk: { |
| 1476 | }; | 1400 | }; |
| 1477 | result[@intFromEnum(Feature.v8_5a)] = .{ | 1401 | result[@intFromEnum(Feature.v8_5a)] = .{ |
| 1478 | .llvm_name = "v8.5a", | 1402 | .llvm_name = "v8.5a", |
| 1479 | .description = "Support ARM v8.5a instructions", | 1403 | .description = "Support ARM v8.5a architecture", |
| 1480 | .dependencies = featureSet(&[_]Feature{ | 1404 | .dependencies = featureSet(&[_]Feature{ |
| 1481 | .altnzcv, | 1405 | .altnzcv, |
| 1482 | .bti, | 1406 | .bti, |
| ... | @@ -1485,13 +1409,12 @@ pub const all_features = blk: { | ... | @@ -1485,13 +1409,12 @@ pub const all_features = blk: { |
| 1485 | .predres, | 1409 | .predres, |
| 1486 | .sb, | 1410 | .sb, |
| 1487 | .specrestrict, | 1411 | .specrestrict, |
| 1488 | .ssbs, | ||
| 1489 | .v8_4a, | 1412 | .v8_4a, |
| 1490 | }), | 1413 | }), |
| 1491 | }; | 1414 | }; |
| 1492 | result[@intFromEnum(Feature.v8_6a)] = .{ | 1415 | result[@intFromEnum(Feature.v8_6a)] = .{ |
| 1493 | .llvm_name = "v8.6a", | 1416 | .llvm_name = "v8.6a", |
| 1494 | .description = "Support ARM v8.6a instructions", | 1417 | .description = "Support ARM v8.6a architecture", |
| 1495 | .dependencies = featureSet(&[_]Feature{ | 1418 | .dependencies = featureSet(&[_]Feature{ |
| 1496 | .amvs, | 1419 | .amvs, |
| 1497 | .bf16, | 1420 | .bf16, |
| ... | @@ -1503,7 +1426,7 @@ pub const all_features = blk: { | ... | @@ -1503,7 +1426,7 @@ pub const all_features = blk: { |
| 1503 | }; | 1426 | }; |
| 1504 | result[@intFromEnum(Feature.v8_7a)] = .{ | 1427 | result[@intFromEnum(Feature.v8_7a)] = .{ |
| 1505 | .llvm_name = "v8.7a", | 1428 | .llvm_name = "v8.7a", |
| 1506 | .description = "Support ARM v8.7a instructions", | 1429 | .description = "Support ARM v8.7a architecture", |
| 1507 | .dependencies = featureSet(&[_]Feature{ | 1430 | .dependencies = featureSet(&[_]Feature{ |
| 1508 | .hcx, | 1431 | .hcx, |
| 1509 | .v8_6a, | 1432 | .v8_6a, |
| ... | @@ -1513,7 +1436,7 @@ pub const all_features = blk: { | ... | @@ -1513,7 +1436,7 @@ pub const all_features = blk: { |
| 1513 | }; | 1436 | }; |
| 1514 | result[@intFromEnum(Feature.v8_8a)] = .{ | 1437 | result[@intFromEnum(Feature.v8_8a)] = .{ |
| 1515 | .llvm_name = "v8.8a", | 1438 | .llvm_name = "v8.8a", |
| 1516 | .description = "Support ARM v8.8a instructions", | 1439 | .description = "Support ARM v8.8a architecture", |
| 1517 | .dependencies = featureSet(&[_]Feature{ | 1440 | .dependencies = featureSet(&[_]Feature{ |
| 1518 | .hbc, | 1441 | .hbc, |
| 1519 | .mops, | 1442 | .mops, |
| ... | @@ -1523,7 +1446,7 @@ pub const all_features = blk: { | ... | @@ -1523,7 +1446,7 @@ pub const all_features = blk: { |
| 1523 | }; | 1446 | }; |
| 1524 | result[@intFromEnum(Feature.v8_9a)] = .{ | 1447 | result[@intFromEnum(Feature.v8_9a)] = .{ |
| 1525 | .llvm_name = "v8.9a", | 1448 | .llvm_name = "v8.9a", |
| 1526 | .description = "Support ARM v8.9a instructions", | 1449 | .description = "Support ARM v8.9a architecture", |
| 1527 | .dependencies = featureSet(&[_]Feature{ | 1450 | .dependencies = featureSet(&[_]Feature{ |
| 1528 | .chk, | 1451 | .chk, |
| 1529 | .clrbhb, | 1452 | .clrbhb, |
| ... | @@ -1536,7 +1459,7 @@ pub const all_features = blk: { | ... | @@ -1536,7 +1459,7 @@ pub const all_features = blk: { |
| 1536 | }; | 1459 | }; |
| 1537 | result[@intFromEnum(Feature.v8a)] = .{ | 1460 | result[@intFromEnum(Feature.v8a)] = .{ |
| 1538 | .llvm_name = "v8a", | 1461 | .llvm_name = "v8a", |
| 1539 | .description = "Support ARM v8.0a instructions", | 1462 | .description = "Support ARM v8a architecture", |
| 1540 | .dependencies = featureSet(&[_]Feature{ | 1463 | .dependencies = featureSet(&[_]Feature{ |
| 1541 | .el2vmsa, | 1464 | .el2vmsa, |
| 1542 | .el3, | 1465 | .el3, |
| ... | @@ -1545,23 +1468,18 @@ pub const all_features = blk: { | ... | @@ -1545,23 +1468,18 @@ pub const all_features = blk: { |
| 1545 | }; | 1468 | }; |
| 1546 | result[@intFromEnum(Feature.v8r)] = .{ | 1469 | result[@intFromEnum(Feature.v8r)] = .{ |
| 1547 | .llvm_name = "v8r", | 1470 | .llvm_name = "v8r", |
| 1548 | .description = "Support ARM v8r instructions", | 1471 | .description = "Support ARM v8r architecture", |
| 1549 | .dependencies = featureSet(&[_]Feature{ | 1472 | .dependencies = featureSet(&[_]Feature{ |
| 1550 | .ccidx, | ||
| 1551 | .ccpp, | 1473 | .ccpp, |
| 1552 | .complxnum, | ||
| 1553 | .contextidr_el2, | 1474 | .contextidr_el2, |
| 1554 | .crc, | 1475 | .crc, |
| 1555 | .dit, | 1476 | .dit, |
| 1556 | .dotprod, | ||
| 1557 | .flagm, | 1477 | .flagm, |
| 1558 | .jsconv, | ||
| 1559 | .lse, | 1478 | .lse, |
| 1560 | .pan_rwv, | 1479 | .pan_rwv, |
| 1561 | .pauth, | 1480 | .pauth, |
| 1562 | .ras, | 1481 | .ras, |
| 1563 | .rcpc_immo, | 1482 | .rcpc_immo, |
| 1564 | .rdm, | ||
| 1565 | .sel2, | 1483 | .sel2, |
| 1566 | .specrestrict, | 1484 | .specrestrict, |
| 1567 | .tlb_rmi, | 1485 | .tlb_rmi, |
| ... | @@ -1571,7 +1489,7 @@ pub const all_features = blk: { | ... | @@ -1571,7 +1489,7 @@ pub const all_features = blk: { |
| 1571 | }; | 1489 | }; |
| 1572 | result[@intFromEnum(Feature.v9_1a)] = .{ | 1490 | result[@intFromEnum(Feature.v9_1a)] = .{ |
| 1573 | .llvm_name = "v9.1a", | 1491 | .llvm_name = "v9.1a", |
| 1574 | .description = "Support ARM v9.1a instructions", | 1492 | .description = "Support ARM v9.1a architecture", |
| 1575 | .dependencies = featureSet(&[_]Feature{ | 1493 | .dependencies = featureSet(&[_]Feature{ |
| 1576 | .v8_6a, | 1494 | .v8_6a, |
| 1577 | .v9a, | 1495 | .v9a, |
| ... | @@ -1579,7 +1497,7 @@ pub const all_features = blk: { | ... | @@ -1579,7 +1497,7 @@ pub const all_features = blk: { |
| 1579 | }; | 1497 | }; |
| 1580 | result[@intFromEnum(Feature.v9_2a)] = .{ | 1498 | result[@intFromEnum(Feature.v9_2a)] = .{ |
| 1581 | .llvm_name = "v9.2a", | 1499 | .llvm_name = "v9.2a", |
| 1582 | .description = "Support ARM v9.2a instructions", | 1500 | .description = "Support ARM v9.2a architecture", |
| 1583 | .dependencies = featureSet(&[_]Feature{ | 1501 | .dependencies = featureSet(&[_]Feature{ |
| 1584 | .v8_7a, | 1502 | .v8_7a, |
| 1585 | .v9_1a, | 1503 | .v9_1a, |
| ... | @@ -1587,7 +1505,7 @@ pub const all_features = blk: { | ... | @@ -1587,7 +1505,7 @@ pub const all_features = blk: { |
| 1587 | }; | 1505 | }; |
| 1588 | result[@intFromEnum(Feature.v9_3a)] = .{ | 1506 | result[@intFromEnum(Feature.v9_3a)] = .{ |
| 1589 | .llvm_name = "v9.3a", | 1507 | .llvm_name = "v9.3a", |
| 1590 | .description = "Support ARM v9.3a instructions", | 1508 | .description = "Support ARM v9.3a architecture", |
| 1591 | .dependencies = featureSet(&[_]Feature{ | 1509 | .dependencies = featureSet(&[_]Feature{ |
| 1592 | .v8_8a, | 1510 | .v8_8a, |
| 1593 | .v9_2a, | 1511 | .v9_2a, |
| ... | @@ -1595,7 +1513,7 @@ pub const all_features = blk: { | ... | @@ -1595,7 +1513,7 @@ pub const all_features = blk: { |
| 1595 | }; | 1513 | }; |
| 1596 | result[@intFromEnum(Feature.v9_4a)] = .{ | 1514 | result[@intFromEnum(Feature.v9_4a)] = .{ |
| 1597 | .llvm_name = "v9.4a", | 1515 | .llvm_name = "v9.4a", |
| 1598 | .description = "Support ARM v9.4a instructions", | 1516 | .description = "Support ARM v9.4a architecture", |
| 1599 | .dependencies = featureSet(&[_]Feature{ | 1517 | .dependencies = featureSet(&[_]Feature{ |
| 1600 | .v8_9a, | 1518 | .v8_9a, |
| 1601 | .v9_3a, | 1519 | .v9_3a, |
| ... | @@ -1603,7 +1521,7 @@ pub const all_features = blk: { | ... | @@ -1603,7 +1521,7 @@ pub const all_features = blk: { |
| 1603 | }; | 1521 | }; |
| 1604 | result[@intFromEnum(Feature.v9_5a)] = .{ | 1522 | result[@intFromEnum(Feature.v9_5a)] = .{ |
| 1605 | .llvm_name = "v9.5a", | 1523 | .llvm_name = "v9.5a", |
| 1606 | .description = "Support ARM v9.5a instructions", | 1524 | .description = "Support ARM v9.5a architecture", |
| 1607 | .dependencies = featureSet(&[_]Feature{ | 1525 | .dependencies = featureSet(&[_]Feature{ |
| 1608 | .cpa, | 1526 | .cpa, |
| 1609 | .v9_4a, | 1527 | .v9_4a, |
| ... | @@ -1611,28 +1529,26 @@ pub const all_features = blk: { | ... | @@ -1611,28 +1529,26 @@ pub const all_features = blk: { |
| 1611 | }; | 1529 | }; |
| 1612 | result[@intFromEnum(Feature.v9a)] = .{ | 1530 | result[@intFromEnum(Feature.v9a)] = .{ |
| 1613 | .llvm_name = "v9a", | 1531 | .llvm_name = "v9a", |
| 1614 | .description = "Support ARM v9a instructions", | 1532 | .description = "Support ARM v9a architecture", |
| 1615 | .dependencies = featureSet(&[_]Feature{ | 1533 | .dependencies = featureSet(&[_]Feature{ |
| 1616 | .mec, | ||
| 1617 | .sve2, | ||
| 1618 | .v8_5a, | 1534 | .v8_5a, |
| 1619 | }), | 1535 | }), |
| 1620 | }; | 1536 | }; |
| 1621 | result[@intFromEnum(Feature.vh)] = .{ | 1537 | result[@intFromEnum(Feature.vh)] = .{ |
| 1622 | .llvm_name = "vh", | 1538 | .llvm_name = "vh", |
| 1623 | .description = "Enables ARM v8.1 Virtual Host extension (FEAT_VHE)", | 1539 | .description = "Enable Armv8.1-A Virtual Host extension", |
| 1624 | .dependencies = featureSet(&[_]Feature{ | 1540 | .dependencies = featureSet(&[_]Feature{ |
| 1625 | .contextidr_el2, | 1541 | .contextidr_el2, |
| 1626 | }), | 1542 | }), |
| 1627 | }; | 1543 | }; |
| 1628 | result[@intFromEnum(Feature.wfxt)] = .{ | 1544 | result[@intFromEnum(Feature.wfxt)] = .{ |
| 1629 | .llvm_name = "wfxt", | 1545 | .llvm_name = "wfxt", |
| 1630 | .description = "Enable Armv8.7-A WFET and WFIT instruction (FEAT_WFxT)", | 1546 | .description = "Enable Armv8.7-A WFET and WFIT instruction", |
| 1631 | .dependencies = featureSet(&[_]Feature{}), | 1547 | .dependencies = featureSet(&[_]Feature{}), |
| 1632 | }; | 1548 | }; |
| 1633 | result[@intFromEnum(Feature.xs)] = .{ | 1549 | result[@intFromEnum(Feature.xs)] = .{ |
| 1634 | .llvm_name = "xs", | 1550 | .llvm_name = "xs", |
| 1635 | .description = "Enable Armv8.7-A limited-TLB-maintenance instruction (FEAT_XS)", | 1551 | .description = "Enable Armv8.7-A limited-TLB-maintenance instruction", |
| 1636 | .dependencies = featureSet(&[_]Feature{}), | 1552 | .dependencies = featureSet(&[_]Feature{}), |
| 1637 | }; | 1553 | }; |
| 1638 | result[@intFromEnum(Feature.zcm)] = .{ | 1554 | result[@intFromEnum(Feature.zcm)] = .{ |
| ... | @@ -1670,6 +1586,7 @@ pub const cpu = struct { | ... | @@ -1670,6 +1586,7 @@ pub const cpu = struct { |
| 1670 | .name = "a64fx", | 1586 | .name = "a64fx", |
| 1671 | .llvm_name = "a64fx", | 1587 | .llvm_name = "a64fx", |
| 1672 | .features = featureSet(&[_]Feature{ | 1588 | .features = featureSet(&[_]Feature{ |
| 1589 | .aes, | ||
| 1673 | .aggressive_fma, | 1590 | .aggressive_fma, |
| 1674 | .arith_bcc_fusion, | 1591 | .arith_bcc_fusion, |
| 1675 | .complxnum, | 1592 | .complxnum, |
| ... | @@ -1686,19 +1603,22 @@ pub const cpu = struct { | ... | @@ -1686,19 +1603,22 @@ pub const cpu = struct { |
| 1686 | .name = "ampere1", | 1603 | .name = "ampere1", |
| 1687 | .llvm_name = "ampere1", | 1604 | .llvm_name = "ampere1", |
| 1688 | .features = featureSet(&[_]Feature{ | 1605 | .features = featureSet(&[_]Feature{ |
| 1689 | .addr_lsl_fast, | ||
| 1690 | .aes, | 1606 | .aes, |
| 1691 | .aggressive_fma, | 1607 | .aggressive_fma, |
| 1692 | .alu_lsl_fast, | 1608 | .alu_lsl_fast, |
| 1693 | .arith_bcc_fusion, | 1609 | .arith_bcc_fusion, |
| 1610 | .ccidx, | ||
| 1694 | .cmp_bcc_fusion, | 1611 | .cmp_bcc_fusion, |
| 1612 | .fullfp16, | ||
| 1695 | .fuse_address, | 1613 | .fuse_address, |
| 1614 | .fuse_adrp_add, | ||
| 1696 | .fuse_aes, | 1615 | .fuse_aes, |
| 1697 | .fuse_literals, | 1616 | .fuse_literals, |
| 1698 | .ldp_aligned_only, | 1617 | .ldp_aligned_only, |
| 1699 | .perfmon, | 1618 | .perfmon, |
| 1700 | .rand, | 1619 | .rand, |
| 1701 | .sha3, | 1620 | .sha3, |
| 1621 | .ssbs, | ||
| 1702 | .store_pair_suppress, | 1622 | .store_pair_suppress, |
| 1703 | .stp_aligned_only, | 1623 | .stp_aligned_only, |
| 1704 | .use_postra_scheduler, | 1624 | .use_postra_scheduler, |
| ... | @@ -1709,13 +1629,16 @@ pub const cpu = struct { | ... | @@ -1709,13 +1629,16 @@ pub const cpu = struct { |
| 1709 | .name = "ampere1a", | 1629 | .name = "ampere1a", |
| 1710 | .llvm_name = "ampere1a", | 1630 | .llvm_name = "ampere1a", |
| 1711 | .features = featureSet(&[_]Feature{ | 1631 | .features = featureSet(&[_]Feature{ |
| 1712 | .addr_lsl_fast, | ||
| 1713 | .aes, | 1632 | .aes, |
| 1714 | .aggressive_fma, | 1633 | .aggressive_fma, |
| 1715 | .alu_lsl_fast, | 1634 | .alu_lsl_fast, |
| 1716 | .arith_bcc_fusion, | 1635 | .arith_bcc_fusion, |
| 1636 | .ccidx, | ||
| 1717 | .cmp_bcc_fusion, | 1637 | .cmp_bcc_fusion, |
| 1638 | .fullfp16, | ||
| 1718 | .fuse_address, | 1639 | .fuse_address, |
| 1640 | .fuse_addsub_2reg_const1, | ||
| 1641 | .fuse_adrp_add, | ||
| 1719 | .fuse_aes, | 1642 | .fuse_aes, |
| 1720 | .fuse_literals, | 1643 | .fuse_literals, |
| 1721 | .ldp_aligned_only, | 1644 | .ldp_aligned_only, |
| ... | @@ -1724,6 +1647,7 @@ pub const cpu = struct { | ... | @@ -1724,6 +1647,7 @@ pub const cpu = struct { |
| 1724 | .rand, | 1647 | .rand, |
| 1725 | .sha3, | 1648 | .sha3, |
| 1726 | .sm4, | 1649 | .sm4, |
| 1650 | .ssbs, | ||
| 1727 | .store_pair_suppress, | 1651 | .store_pair_suppress, |
| 1728 | .stp_aligned_only, | 1652 | .stp_aligned_only, |
| 1729 | .use_postra_scheduler, | 1653 | .use_postra_scheduler, |
| ... | @@ -1734,11 +1658,11 @@ pub const cpu = struct { | ... | @@ -1734,11 +1658,11 @@ pub const cpu = struct { |
| 1734 | .name = "ampere1b", | 1658 | .name = "ampere1b", |
| 1735 | .llvm_name = "ampere1b", | 1659 | .llvm_name = "ampere1b", |
| 1736 | .features = featureSet(&[_]Feature{ | 1660 | .features = featureSet(&[_]Feature{ |
| 1737 | .addr_lsl_fast, | ||
| 1738 | .aes, | 1661 | .aes, |
| 1739 | .aggressive_fma, | 1662 | .aggressive_fma, |
| 1740 | .alu_lsl_fast, | 1663 | .alu_lsl_fast, |
| 1741 | .arith_bcc_fusion, | 1664 | .arith_bcc_fusion, |
| 1665 | .ccidx, | ||
| 1742 | .cmp_bcc_fusion, | 1666 | .cmp_bcc_fusion, |
| 1743 | .cssc, | 1667 | .cssc, |
| 1744 | .enable_select_opt, | 1668 | .enable_select_opt, |
| ... | @@ -1754,6 +1678,7 @@ pub const cpu = struct { | ... | @@ -1754,6 +1678,7 @@ pub const cpu = struct { |
| 1754 | .rand, | 1678 | .rand, |
| 1755 | .sha3, | 1679 | .sha3, |
| 1756 | .sm4, | 1680 | .sm4, |
| 1681 | .ssbs, | ||
| 1757 | .store_pair_suppress, | 1682 | .store_pair_suppress, |
| 1758 | .stp_aligned_only, | 1683 | .stp_aligned_only, |
| 1759 | .use_postra_scheduler, | 1684 | .use_postra_scheduler, |
| ... | @@ -1764,11 +1689,11 @@ pub const cpu = struct { | ... | @@ -1764,11 +1689,11 @@ pub const cpu = struct { |
| 1764 | .name = "apple_a10", | 1689 | .name = "apple_a10", |
| 1765 | .llvm_name = "apple-a10", | 1690 | .llvm_name = "apple-a10", |
| 1766 | .features = featureSet(&[_]Feature{ | 1691 | .features = featureSet(&[_]Feature{ |
| 1692 | .aes, | ||
| 1767 | .alternate_sextload_cvt_f32_pattern, | 1693 | .alternate_sextload_cvt_f32_pattern, |
| 1768 | .arith_bcc_fusion, | 1694 | .arith_bcc_fusion, |
| 1769 | .arith_cbz_fusion, | 1695 | .arith_cbz_fusion, |
| 1770 | .crc, | 1696 | .crc, |
| 1771 | .crypto, | ||
| 1772 | .disable_latency_sched_heuristic, | 1697 | .disable_latency_sched_heuristic, |
| 1773 | .fuse_aes, | 1698 | .fuse_aes, |
| 1774 | .fuse_crypto_eor, | 1699 | .fuse_crypto_eor, |
| ... | @@ -1776,6 +1701,7 @@ pub const cpu = struct { | ... | @@ -1776,6 +1701,7 @@ pub const cpu = struct { |
| 1776 | .pan, | 1701 | .pan, |
| 1777 | .perfmon, | 1702 | .perfmon, |
| 1778 | .rdm, | 1703 | .rdm, |
| 1704 | .sha2, | ||
| 1779 | .store_pair_suppress, | 1705 | .store_pair_suppress, |
| 1780 | .v8a, | 1706 | .v8a, |
| 1781 | .vh, | 1707 | .vh, |
| ... | @@ -1787,15 +1713,16 @@ pub const cpu = struct { | ... | @@ -1787,15 +1713,16 @@ pub const cpu = struct { |
| 1787 | .name = "apple_a11", | 1713 | .name = "apple_a11", |
| 1788 | .llvm_name = "apple-a11", | 1714 | .llvm_name = "apple-a11", |
| 1789 | .features = featureSet(&[_]Feature{ | 1715 | .features = featureSet(&[_]Feature{ |
| 1716 | .aes, | ||
| 1790 | .alternate_sextload_cvt_f32_pattern, | 1717 | .alternate_sextload_cvt_f32_pattern, |
| 1791 | .arith_bcc_fusion, | 1718 | .arith_bcc_fusion, |
| 1792 | .arith_cbz_fusion, | 1719 | .arith_cbz_fusion, |
| 1793 | .crypto, | ||
| 1794 | .disable_latency_sched_heuristic, | 1720 | .disable_latency_sched_heuristic, |
| 1795 | .fullfp16, | 1721 | .fullfp16, |
| 1796 | .fuse_aes, | 1722 | .fuse_aes, |
| 1797 | .fuse_crypto_eor, | 1723 | .fuse_crypto_eor, |
| 1798 | .perfmon, | 1724 | .perfmon, |
| 1725 | .sha2, | ||
| 1799 | .store_pair_suppress, | 1726 | .store_pair_suppress, |
| 1800 | .v8_2a, | 1727 | .v8_2a, |
| 1801 | .zcm, | 1728 | .zcm, |
| ... | @@ -1806,15 +1733,16 @@ pub const cpu = struct { | ... | @@ -1806,15 +1733,16 @@ pub const cpu = struct { |
| 1806 | .name = "apple_a12", | 1733 | .name = "apple_a12", |
| 1807 | .llvm_name = "apple-a12", | 1734 | .llvm_name = "apple-a12", |
| 1808 | .features = featureSet(&[_]Feature{ | 1735 | .features = featureSet(&[_]Feature{ |
| 1736 | .aes, | ||
| 1809 | .alternate_sextload_cvt_f32_pattern, | 1737 | .alternate_sextload_cvt_f32_pattern, |
| 1810 | .arith_bcc_fusion, | 1738 | .arith_bcc_fusion, |
| 1811 | .arith_cbz_fusion, | 1739 | .arith_cbz_fusion, |
| 1812 | .crypto, | ||
| 1813 | .disable_latency_sched_heuristic, | 1740 | .disable_latency_sched_heuristic, |
| 1814 | .fullfp16, | 1741 | .fullfp16, |
| 1815 | .fuse_aes, | 1742 | .fuse_aes, |
| 1816 | .fuse_crypto_eor, | 1743 | .fuse_crypto_eor, |
| 1817 | .perfmon, | 1744 | .perfmon, |
| 1745 | .sha2, | ||
| 1818 | .store_pair_suppress, | 1746 | .store_pair_suppress, |
| 1819 | .v8_3a, | 1747 | .v8_3a, |
| 1820 | .zcm, | 1748 | .zcm, |
| ... | @@ -1825,10 +1753,10 @@ pub const cpu = struct { | ... | @@ -1825,10 +1753,10 @@ pub const cpu = struct { |
| 1825 | .name = "apple_a13", | 1753 | .name = "apple_a13", |
| 1826 | .llvm_name = "apple-a13", | 1754 | .llvm_name = "apple-a13", |
| 1827 | .features = featureSet(&[_]Feature{ | 1755 | .features = featureSet(&[_]Feature{ |
| 1756 | .aes, | ||
| 1828 | .alternate_sextload_cvt_f32_pattern, | 1757 | .alternate_sextload_cvt_f32_pattern, |
| 1829 | .arith_bcc_fusion, | 1758 | .arith_bcc_fusion, |
| 1830 | .arith_cbz_fusion, | 1759 | .arith_cbz_fusion, |
| 1831 | .crypto, | ||
| 1832 | .disable_latency_sched_heuristic, | 1760 | .disable_latency_sched_heuristic, |
| 1833 | .fp16fml, | 1761 | .fp16fml, |
| 1834 | .fuse_aes, | 1762 | .fuse_aes, |
| ... | @@ -1845,18 +1773,17 @@ pub const cpu = struct { | ... | @@ -1845,18 +1773,17 @@ pub const cpu = struct { |
| 1845 | .name = "apple_a14", | 1773 | .name = "apple_a14", |
| 1846 | .llvm_name = "apple-a14", | 1774 | .llvm_name = "apple-a14", |
| 1847 | .features = featureSet(&[_]Feature{ | 1775 | .features = featureSet(&[_]Feature{ |
| 1776 | .aes, | ||
| 1848 | .aggressive_fma, | 1777 | .aggressive_fma, |
| 1849 | .alternate_sextload_cvt_f32_pattern, | 1778 | .alternate_sextload_cvt_f32_pattern, |
| 1850 | .altnzcv, | 1779 | .altnzcv, |
| 1851 | .arith_bcc_fusion, | 1780 | .arith_bcc_fusion, |
| 1852 | .arith_cbz_fusion, | 1781 | .arith_cbz_fusion, |
| 1853 | .ccdp, | 1782 | .ccdp, |
| 1854 | .crypto, | ||
| 1855 | .disable_latency_sched_heuristic, | 1783 | .disable_latency_sched_heuristic, |
| 1856 | .fp16fml, | 1784 | .fp16fml, |
| 1857 | .fptoint, | 1785 | .fptoint, |
| 1858 | .fuse_address, | 1786 | .fuse_address, |
| 1859 | .fuse_adrp_add, | ||
| 1860 | .fuse_aes, | 1787 | .fuse_aes, |
| 1861 | .fuse_arith_logic, | 1788 | .fuse_arith_logic, |
| 1862 | .fuse_crypto_eor, | 1789 | .fuse_crypto_eor, |
| ... | @@ -1878,10 +1805,10 @@ pub const cpu = struct { | ... | @@ -1878,10 +1805,10 @@ pub const cpu = struct { |
| 1878 | .name = "apple_a15", | 1805 | .name = "apple_a15", |
| 1879 | .llvm_name = "apple-a15", | 1806 | .llvm_name = "apple-a15", |
| 1880 | .features = featureSet(&[_]Feature{ | 1807 | .features = featureSet(&[_]Feature{ |
| 1808 | .aes, | ||
| 1881 | .alternate_sextload_cvt_f32_pattern, | 1809 | .alternate_sextload_cvt_f32_pattern, |
| 1882 | .arith_bcc_fusion, | 1810 | .arith_bcc_fusion, |
| 1883 | .arith_cbz_fusion, | 1811 | .arith_cbz_fusion, |
| 1884 | .crypto, | ||
| 1885 | .disable_latency_sched_heuristic, | 1812 | .disable_latency_sched_heuristic, |
| 1886 | .fp16fml, | 1813 | .fp16fml, |
| 1887 | .fuse_address, | 1814 | .fuse_address, |
| ... | @@ -1892,6 +1819,7 @@ pub const cpu = struct { | ... | @@ -1892,6 +1819,7 @@ pub const cpu = struct { |
| 1892 | .fuse_literals, | 1819 | .fuse_literals, |
| 1893 | .perfmon, | 1820 | .perfmon, |
| 1894 | .sha3, | 1821 | .sha3, |
| 1822 | .ssbs, | ||
| 1895 | .store_pair_suppress, | 1823 | .store_pair_suppress, |
| 1896 | .v8_6a, | 1824 | .v8_6a, |
| 1897 | .zcm, | 1825 | .zcm, |
| ... | @@ -1902,13 +1830,14 @@ pub const cpu = struct { | ... | @@ -1902,13 +1830,14 @@ pub const cpu = struct { |
| 1902 | .name = "apple_a16", | 1830 | .name = "apple_a16", |
| 1903 | .llvm_name = "apple-a16", | 1831 | .llvm_name = "apple-a16", |
| 1904 | .features = featureSet(&[_]Feature{ | 1832 | .features = featureSet(&[_]Feature{ |
| 1833 | .aes, | ||
| 1905 | .alternate_sextload_cvt_f32_pattern, | 1834 | .alternate_sextload_cvt_f32_pattern, |
| 1906 | .arith_bcc_fusion, | 1835 | .arith_bcc_fusion, |
| 1907 | .arith_cbz_fusion, | 1836 | .arith_cbz_fusion, |
| 1908 | .crypto, | ||
| 1909 | .disable_latency_sched_heuristic, | 1837 | .disable_latency_sched_heuristic, |
| 1910 | .fp16fml, | 1838 | .fp16fml, |
| 1911 | .fuse_address, | 1839 | .fuse_address, |
| 1840 | .fuse_adrp_add, | ||
| 1912 | .fuse_aes, | 1841 | .fuse_aes, |
| 1913 | .fuse_arith_logic, | 1842 | .fuse_arith_logic, |
| 1914 | .fuse_crypto_eor, | 1843 | .fuse_crypto_eor, |
| ... | @@ -1917,6 +1846,7 @@ pub const cpu = struct { | ... | @@ -1917,6 +1846,7 @@ pub const cpu = struct { |
| 1917 | .hcx, | 1846 | .hcx, |
| 1918 | .perfmon, | 1847 | .perfmon, |
| 1919 | .sha3, | 1848 | .sha3, |
| 1849 | .ssbs, | ||
| 1920 | .store_pair_suppress, | 1850 | .store_pair_suppress, |
| 1921 | .v8_6a, | 1851 | .v8_6a, |
| 1922 | .zcm, | 1852 | .zcm, |
| ... | @@ -1927,13 +1857,14 @@ pub const cpu = struct { | ... | @@ -1927,13 +1857,14 @@ pub const cpu = struct { |
| 1927 | .name = "apple_a17", | 1857 | .name = "apple_a17", |
| 1928 | .llvm_name = "apple-a17", | 1858 | .llvm_name = "apple-a17", |
| 1929 | .features = featureSet(&[_]Feature{ | 1859 | .features = featureSet(&[_]Feature{ |
| 1860 | .aes, | ||
| 1930 | .alternate_sextload_cvt_f32_pattern, | 1861 | .alternate_sextload_cvt_f32_pattern, |
| 1931 | .arith_bcc_fusion, | 1862 | .arith_bcc_fusion, |
| 1932 | .arith_cbz_fusion, | 1863 | .arith_cbz_fusion, |
| 1933 | .crypto, | ||
| 1934 | .disable_latency_sched_heuristic, | 1864 | .disable_latency_sched_heuristic, |
| 1935 | .fp16fml, | 1865 | .fp16fml, |
| 1936 | .fuse_address, | 1866 | .fuse_address, |
| 1867 | .fuse_adrp_add, | ||
| 1937 | .fuse_aes, | 1868 | .fuse_aes, |
| 1938 | .fuse_arith_logic, | 1869 | .fuse_arith_logic, |
| 1939 | .fuse_crypto_eor, | 1870 | .fuse_crypto_eor, |
| ... | @@ -1942,6 +1873,7 @@ pub const cpu = struct { | ... | @@ -1942,6 +1873,7 @@ pub const cpu = struct { |
| 1942 | .hcx, | 1873 | .hcx, |
| 1943 | .perfmon, | 1874 | .perfmon, |
| 1944 | .sha3, | 1875 | .sha3, |
| 1876 | .ssbs, | ||
| 1945 | .store_pair_suppress, | 1877 | .store_pair_suppress, |
| 1946 | .v8_6a, | 1878 | .v8_6a, |
| 1947 | .zcm, | 1879 | .zcm, |
| ... | @@ -1952,14 +1884,15 @@ pub const cpu = struct { | ... | @@ -1952,14 +1884,15 @@ pub const cpu = struct { |
| 1952 | .name = "apple_a7", | 1884 | .name = "apple_a7", |
| 1953 | .llvm_name = "apple-a7", | 1885 | .llvm_name = "apple-a7", |
| 1954 | .features = featureSet(&[_]Feature{ | 1886 | .features = featureSet(&[_]Feature{ |
| 1887 | .aes, | ||
| 1955 | .alternate_sextload_cvt_f32_pattern, | 1888 | .alternate_sextload_cvt_f32_pattern, |
| 1956 | .arith_bcc_fusion, | 1889 | .arith_bcc_fusion, |
| 1957 | .arith_cbz_fusion, | 1890 | .arith_cbz_fusion, |
| 1958 | .crypto, | ||
| 1959 | .disable_latency_sched_heuristic, | 1891 | .disable_latency_sched_heuristic, |
| 1960 | .fuse_aes, | 1892 | .fuse_aes, |
| 1961 | .fuse_crypto_eor, | 1893 | .fuse_crypto_eor, |
| 1962 | .perfmon, | 1894 | .perfmon, |
| 1895 | .sha2, | ||
| 1963 | .store_pair_suppress, | 1896 | .store_pair_suppress, |
| 1964 | .v8a, | 1897 | .v8a, |
| 1965 | .zcm, | 1898 | .zcm, |
| ... | @@ -1971,14 +1904,15 @@ pub const cpu = struct { | ... | @@ -1971,14 +1904,15 @@ pub const cpu = struct { |
| 1971 | .name = "apple_a8", | 1904 | .name = "apple_a8", |
| 1972 | .llvm_name = "apple-a8", | 1905 | .llvm_name = "apple-a8", |
| 1973 | .features = featureSet(&[_]Feature{ | 1906 | .features = featureSet(&[_]Feature{ |
| 1907 | .aes, | ||
| 1974 | .alternate_sextload_cvt_f32_pattern, | 1908 | .alternate_sextload_cvt_f32_pattern, |
| 1975 | .arith_bcc_fusion, | 1909 | .arith_bcc_fusion, |
| 1976 | .arith_cbz_fusion, | 1910 | .arith_cbz_fusion, |
| 1977 | .crypto, | ||
| 1978 | .disable_latency_sched_heuristic, | 1911 | .disable_latency_sched_heuristic, |
| 1979 | .fuse_aes, | 1912 | .fuse_aes, |
| 1980 | .fuse_crypto_eor, | 1913 | .fuse_crypto_eor, |
| 1981 | .perfmon, | 1914 | .perfmon, |
| 1915 | .sha2, | ||
| 1982 | .store_pair_suppress, | 1916 | .store_pair_suppress, |
| 1983 | .v8a, | 1917 | .v8a, |
| 1984 | .zcm, | 1918 | .zcm, |
| ... | @@ -1990,14 +1924,15 @@ pub const cpu = struct { | ... | @@ -1990,14 +1924,15 @@ pub const cpu = struct { |
| 1990 | .name = "apple_a9", | 1924 | .name = "apple_a9", |
| 1991 | .llvm_name = "apple-a9", | 1925 | .llvm_name = "apple-a9", |
| 1992 | .features = featureSet(&[_]Feature{ | 1926 | .features = featureSet(&[_]Feature{ |
| 1927 | .aes, | ||
| 1993 | .alternate_sextload_cvt_f32_pattern, | 1928 | .alternate_sextload_cvt_f32_pattern, |
| 1994 | .arith_bcc_fusion, | 1929 | .arith_bcc_fusion, |
| 1995 | .arith_cbz_fusion, | 1930 | .arith_cbz_fusion, |
| 1996 | .crypto, | ||
| 1997 | .disable_latency_sched_heuristic, | 1931 | .disable_latency_sched_heuristic, |
| 1998 | .fuse_aes, | 1932 | .fuse_aes, |
| 1999 | .fuse_crypto_eor, | 1933 | .fuse_crypto_eor, |
| 2000 | .perfmon, | 1934 | .perfmon, |
| 1935 | .sha2, | ||
| 2001 | .store_pair_suppress, | 1936 | .store_pair_suppress, |
| 2002 | .v8a, | 1937 | .v8a, |
| 2003 | .zcm, | 1938 | .zcm, |
| ... | @@ -2005,47 +1940,21 @@ pub const cpu = struct { | ... | @@ -2005,47 +1940,21 @@ pub const cpu = struct { |
| 2005 | .zcz_fp_workaround, | 1940 | .zcz_fp_workaround, |
| 2006 | }), | 1941 | }), |
| 2007 | }; | 1942 | }; |
| 2008 | pub const apple_latest = CpuModel{ | ||
| 2009 | .name = "apple_latest", | ||
| 2010 | .llvm_name = "apple-latest", | ||
| 2011 | .features = featureSet(&[_]Feature{ | ||
| 2012 | .alternate_sextload_cvt_f32_pattern, | ||
| 2013 | .arith_bcc_fusion, | ||
| 2014 | .arith_cbz_fusion, | ||
| 2015 | .crypto, | ||
| 2016 | .disable_latency_sched_heuristic, | ||
| 2017 | .fp16fml, | ||
| 2018 | .fuse_address, | ||
| 2019 | .fuse_aes, | ||
| 2020 | .fuse_arith_logic, | ||
| 2021 | .fuse_crypto_eor, | ||
| 2022 | .fuse_csel, | ||
| 2023 | .fuse_literals, | ||
| 2024 | .hcx, | ||
| 2025 | .perfmon, | ||
| 2026 | .sha3, | ||
| 2027 | .store_pair_suppress, | ||
| 2028 | .v8_6a, | ||
| 2029 | .zcm, | ||
| 2030 | .zcz, | ||
| 2031 | }), | ||
| 2032 | }; | ||
| 2033 | pub const apple_m1 = CpuModel{ | 1943 | pub const apple_m1 = CpuModel{ |
| 2034 | .name = "apple_m1", | 1944 | .name = "apple_m1", |
| 2035 | .llvm_name = "apple-m1", | 1945 | .llvm_name = "apple-m1", |
| 2036 | .features = featureSet(&[_]Feature{ | 1946 | .features = featureSet(&[_]Feature{ |
| 1947 | .aes, | ||
| 2037 | .aggressive_fma, | 1948 | .aggressive_fma, |
| 2038 | .alternate_sextload_cvt_f32_pattern, | 1949 | .alternate_sextload_cvt_f32_pattern, |
| 2039 | .altnzcv, | 1950 | .altnzcv, |
| 2040 | .arith_bcc_fusion, | 1951 | .arith_bcc_fusion, |
| 2041 | .arith_cbz_fusion, | 1952 | .arith_cbz_fusion, |
| 2042 | .ccdp, | 1953 | .ccdp, |
| 2043 | .crypto, | ||
| 2044 | .disable_latency_sched_heuristic, | 1954 | .disable_latency_sched_heuristic, |
| 2045 | .fp16fml, | 1955 | .fp16fml, |
| 2046 | .fptoint, | 1956 | .fptoint, |
| 2047 | .fuse_address, | 1957 | .fuse_address, |
| 2048 | .fuse_adrp_add, | ||
| 2049 | .fuse_aes, | 1958 | .fuse_aes, |
| 2050 | .fuse_arith_logic, | 1959 | .fuse_arith_logic, |
| 2051 | .fuse_crypto_eor, | 1960 | .fuse_crypto_eor, |
| ... | @@ -2067,10 +1976,10 @@ pub const cpu = struct { | ... | @@ -2067,10 +1976,10 @@ pub const cpu = struct { |
| 2067 | .name = "apple_m2", | 1976 | .name = "apple_m2", |
| 2068 | .llvm_name = "apple-m2", | 1977 | .llvm_name = "apple-m2", |
| 2069 | .features = featureSet(&[_]Feature{ | 1978 | .features = featureSet(&[_]Feature{ |
| 1979 | .aes, | ||
| 2070 | .alternate_sextload_cvt_f32_pattern, | 1980 | .alternate_sextload_cvt_f32_pattern, |
| 2071 | .arith_bcc_fusion, | 1981 | .arith_bcc_fusion, |
| 2072 | .arith_cbz_fusion, | 1982 | .arith_cbz_fusion, |
| 2073 | .crypto, | ||
| 2074 | .disable_latency_sched_heuristic, | 1983 | .disable_latency_sched_heuristic, |
| 2075 | .fp16fml, | 1984 | .fp16fml, |
| 2076 | .fuse_address, | 1985 | .fuse_address, |
| ... | @@ -2081,6 +1990,7 @@ pub const cpu = struct { | ... | @@ -2081,6 +1990,7 @@ pub const cpu = struct { |
| 2081 | .fuse_literals, | 1990 | .fuse_literals, |
| 2082 | .perfmon, | 1991 | .perfmon, |
| 2083 | .sha3, | 1992 | .sha3, |
| 1993 | .ssbs, | ||
| 2084 | .store_pair_suppress, | 1994 | .store_pair_suppress, |
| 2085 | .v8_6a, | 1995 | .v8_6a, |
| 2086 | .zcm, | 1996 | .zcm, |
| ... | @@ -2091,13 +2001,14 @@ pub const cpu = struct { | ... | @@ -2091,13 +2001,14 @@ pub const cpu = struct { |
| 2091 | .name = "apple_m3", | 2001 | .name = "apple_m3", |
| 2092 | .llvm_name = "apple-m3", | 2002 | .llvm_name = "apple-m3", |
| 2093 | .features = featureSet(&[_]Feature{ | 2003 | .features = featureSet(&[_]Feature{ |
| 2004 | .aes, | ||
| 2094 | .alternate_sextload_cvt_f32_pattern, | 2005 | .alternate_sextload_cvt_f32_pattern, |
| 2095 | .arith_bcc_fusion, | 2006 | .arith_bcc_fusion, |
| 2096 | .arith_cbz_fusion, | 2007 | .arith_cbz_fusion, |
| 2097 | .crypto, | ||
| 2098 | .disable_latency_sched_heuristic, | 2008 | .disable_latency_sched_heuristic, |
| 2099 | .fp16fml, | 2009 | .fp16fml, |
| 2100 | .fuse_address, | 2010 | .fuse_address, |
| 2011 | .fuse_adrp_add, | ||
| 2101 | .fuse_aes, | 2012 | .fuse_aes, |
| 2102 | .fuse_arith_logic, | 2013 | .fuse_arith_logic, |
| 2103 | .fuse_crypto_eor, | 2014 | .fuse_crypto_eor, |
| ... | @@ -2106,25 +2017,53 @@ pub const cpu = struct { | ... | @@ -2106,25 +2017,53 @@ pub const cpu = struct { |
| 2106 | .hcx, | 2017 | .hcx, |
| 2107 | .perfmon, | 2018 | .perfmon, |
| 2108 | .sha3, | 2019 | .sha3, |
| 2020 | .ssbs, | ||
| 2109 | .store_pair_suppress, | 2021 | .store_pair_suppress, |
| 2110 | .v8_6a, | 2022 | .v8_6a, |
| 2111 | .zcm, | 2023 | .zcm, |
| 2112 | .zcz, | 2024 | .zcz, |
| 2113 | }), | 2025 | }), |
| 2114 | }; | 2026 | }; |
| 2027 | pub const apple_m4 = CpuModel{ | ||
| 2028 | .name = "apple_m4", | ||
| 2029 | .llvm_name = "apple-m4", | ||
| 2030 | .features = featureSet(&[_]Feature{ | ||
| 2031 | .aes, | ||
| 2032 | .alternate_sextload_cvt_f32_pattern, | ||
| 2033 | .arith_bcc_fusion, | ||
| 2034 | .arith_cbz_fusion, | ||
| 2035 | .disable_latency_sched_heuristic, | ||
| 2036 | .fp16fml, | ||
| 2037 | .fuse_address, | ||
| 2038 | .fuse_aes, | ||
| 2039 | .fuse_arith_logic, | ||
| 2040 | .fuse_crypto_eor, | ||
| 2041 | .fuse_csel, | ||
| 2042 | .fuse_literals, | ||
| 2043 | .perfmon, | ||
| 2044 | .sha3, | ||
| 2045 | .sme2, | ||
| 2046 | .sme_f64f64, | ||
| 2047 | .sme_i16i64, | ||
| 2048 | .v9_2a, | ||
| 2049 | .zcm, | ||
| 2050 | .zcz, | ||
| 2051 | }), | ||
| 2052 | }; | ||
| 2115 | pub const apple_s4 = CpuModel{ | 2053 | pub const apple_s4 = CpuModel{ |
| 2116 | .name = "apple_s4", | 2054 | .name = "apple_s4", |
| 2117 | .llvm_name = "apple-s4", | 2055 | .llvm_name = "apple-s4", |
| 2118 | .features = featureSet(&[_]Feature{ | 2056 | .features = featureSet(&[_]Feature{ |
| 2057 | .aes, | ||
| 2119 | .alternate_sextload_cvt_f32_pattern, | 2058 | .alternate_sextload_cvt_f32_pattern, |
| 2120 | .arith_bcc_fusion, | 2059 | .arith_bcc_fusion, |
| 2121 | .arith_cbz_fusion, | 2060 | .arith_cbz_fusion, |
| 2122 | .crypto, | ||
| 2123 | .disable_latency_sched_heuristic, | 2061 | .disable_latency_sched_heuristic, |
| 2124 | .fullfp16, | 2062 | .fullfp16, |
| 2125 | .fuse_aes, | 2063 | .fuse_aes, |
| 2126 | .fuse_crypto_eor, | 2064 | .fuse_crypto_eor, |
| 2127 | .perfmon, | 2065 | .perfmon, |
| 2066 | .sha2, | ||
| 2128 | .store_pair_suppress, | 2067 | .store_pair_suppress, |
| 2129 | .v8_3a, | 2068 | .v8_3a, |
| 2130 | .zcm, | 2069 | .zcm, |
| ... | @@ -2135,15 +2074,16 @@ pub const cpu = struct { | ... | @@ -2135,15 +2074,16 @@ pub const cpu = struct { |
| 2135 | .name = "apple_s5", | 2074 | .name = "apple_s5", |
| 2136 | .llvm_name = "apple-s5", | 2075 | .llvm_name = "apple-s5", |
| 2137 | .features = featureSet(&[_]Feature{ | 2076 | .features = featureSet(&[_]Feature{ |
| 2077 | .aes, | ||
| 2138 | .alternate_sextload_cvt_f32_pattern, | 2078 | .alternate_sextload_cvt_f32_pattern, |
| 2139 | .arith_bcc_fusion, | 2079 | .arith_bcc_fusion, |
| 2140 | .arith_cbz_fusion, | 2080 | .arith_cbz_fusion, |
| 2141 | .crypto, | ||
| 2142 | .disable_latency_sched_heuristic, | 2081 | .disable_latency_sched_heuristic, |
| 2143 | .fullfp16, | 2082 | .fullfp16, |
| 2144 | .fuse_aes, | 2083 | .fuse_aes, |
| 2145 | .fuse_crypto_eor, | 2084 | .fuse_crypto_eor, |
| 2146 | .perfmon, | 2085 | .perfmon, |
| 2086 | .sha2, | ||
| 2147 | .store_pair_suppress, | 2087 | .store_pair_suppress, |
| 2148 | .v8_3a, | 2088 | .v8_3a, |
| 2149 | .zcm, | 2089 | .zcm, |
| ... | @@ -2154,18 +2094,42 @@ pub const cpu = struct { | ... | @@ -2154,18 +2094,42 @@ pub const cpu = struct { |
| 2154 | .name = "carmel", | 2094 | .name = "carmel", |
| 2155 | .llvm_name = "carmel", | 2095 | .llvm_name = "carmel", |
| 2156 | .features = featureSet(&[_]Feature{ | 2096 | .features = featureSet(&[_]Feature{ |
| 2157 | .crypto, | 2097 | .aes, |
| 2158 | .fullfp16, | 2098 | .fullfp16, |
| 2099 | .sha2, | ||
| 2159 | .v8_2a, | 2100 | .v8_2a, |
| 2160 | }), | 2101 | }), |
| 2161 | }; | 2102 | }; |
| 2103 | pub const cobalt_100 = CpuModel{ | ||
| 2104 | .name = "cobalt_100", | ||
| 2105 | .llvm_name = "cobalt-100", | ||
| 2106 | .features = featureSet(&[_]Feature{ | ||
| 2107 | .alu_lsl_fast, | ||
| 2108 | .bf16, | ||
| 2109 | .ccidx, | ||
| 2110 | .enable_select_opt, | ||
| 2111 | .ete, | ||
| 2112 | .fp16fml, | ||
| 2113 | .fuse_adrp_add, | ||
| 2114 | .fuse_aes, | ||
| 2115 | .i8mm, | ||
| 2116 | .mte, | ||
| 2117 | .perfmon, | ||
| 2118 | .predictable_select_expensive, | ||
| 2119 | .ssbs, | ||
| 2120 | .sve2_bitperm, | ||
| 2121 | .use_postra_scheduler, | ||
| 2122 | .v9a, | ||
| 2123 | }), | ||
| 2124 | }; | ||
| 2162 | pub const cortex_a34 = CpuModel{ | 2125 | pub const cortex_a34 = CpuModel{ |
| 2163 | .name = "cortex_a34", | 2126 | .name = "cortex_a34", |
| 2164 | .llvm_name = "cortex-a34", | 2127 | .llvm_name = "cortex-a34", |
| 2165 | .features = featureSet(&[_]Feature{ | 2128 | .features = featureSet(&[_]Feature{ |
| 2129 | .aes, | ||
| 2166 | .crc, | 2130 | .crc, |
| 2167 | .crypto, | ||
| 2168 | .perfmon, | 2131 | .perfmon, |
| 2132 | .sha2, | ||
| 2169 | .v8a, | 2133 | .v8a, |
| 2170 | }), | 2134 | }), |
| 2171 | }; | 2135 | }; |
| ... | @@ -2173,9 +2137,10 @@ pub const cpu = struct { | ... | @@ -2173,9 +2137,10 @@ pub const cpu = struct { |
| 2173 | .name = "cortex_a35", | 2137 | .name = "cortex_a35", |
| 2174 | .llvm_name = "cortex-a35", | 2138 | .llvm_name = "cortex-a35", |
| 2175 | .features = featureSet(&[_]Feature{ | 2139 | .features = featureSet(&[_]Feature{ |
| 2140 | .aes, | ||
| 2176 | .crc, | 2141 | .crc, |
| 2177 | .crypto, | ||
| 2178 | .perfmon, | 2142 | .perfmon, |
| 2143 | .sha2, | ||
| 2179 | .v8a, | 2144 | .v8a, |
| 2180 | }), | 2145 | }), |
| 2181 | }; | 2146 | }; |
| ... | @@ -2183,14 +2148,18 @@ pub const cpu = struct { | ... | @@ -2183,14 +2148,18 @@ pub const cpu = struct { |
| 2183 | .name = "cortex_a510", | 2148 | .name = "cortex_a510", |
| 2184 | .llvm_name = "cortex-a510", | 2149 | .llvm_name = "cortex-a510", |
| 2185 | .features = featureSet(&[_]Feature{ | 2150 | .features = featureSet(&[_]Feature{ |
| 2186 | .a510, | ||
| 2187 | .bf16, | 2151 | .bf16, |
| 2152 | .ccidx, | ||
| 2188 | .ete, | 2153 | .ete, |
| 2189 | .fp16fml, | 2154 | .fp16fml, |
| 2155 | .fuse_adrp_add, | ||
| 2156 | .fuse_aes, | ||
| 2190 | .i8mm, | 2157 | .i8mm, |
| 2191 | .mte, | 2158 | .mte, |
| 2192 | .perfmon, | 2159 | .perfmon, |
| 2160 | .ssbs, | ||
| 2193 | .sve2_bitperm, | 2161 | .sve2_bitperm, |
| 2162 | .use_postra_scheduler, | ||
| 2194 | .v9a, | 2163 | .v9a, |
| 2195 | }), | 2164 | }), |
| 2196 | }; | 2165 | }; |
| ... | @@ -2198,12 +2167,33 @@ pub const cpu = struct { | ... | @@ -2198,12 +2167,33 @@ pub const cpu = struct { |
| 2198 | .name = "cortex_a520", | 2167 | .name = "cortex_a520", |
| 2199 | .llvm_name = "cortex-a520", | 2168 | .llvm_name = "cortex-a520", |
| 2200 | .features = featureSet(&[_]Feature{ | 2169 | .features = featureSet(&[_]Feature{ |
| 2201 | .a520, | 2170 | .ccidx, |
| 2202 | .ete, | 2171 | .ete, |
| 2203 | .fp16fml, | 2172 | .fp16fml, |
| 2173 | .fuse_adrp_add, | ||
| 2174 | .fuse_aes, | ||
| 2204 | .mte, | 2175 | .mte, |
| 2205 | .perfmon, | 2176 | .perfmon, |
| 2177 | .ssbs, | ||
| 2206 | .sve2_bitperm, | 2178 | .sve2_bitperm, |
| 2179 | .use_postra_scheduler, | ||
| 2180 | .v9_2a, | ||
| 2181 | }), | ||
| 2182 | }; | ||
| 2183 | pub const cortex_a520ae = CpuModel{ | ||
| 2184 | .name = "cortex_a520ae", | ||
| 2185 | .llvm_name = "cortex-a520ae", | ||
| 2186 | .features = featureSet(&[_]Feature{ | ||
| 2187 | .ccidx, | ||
| 2188 | .ete, | ||
| 2189 | .fp16fml, | ||
| 2190 | .fuse_adrp_add, | ||
| 2191 | .fuse_aes, | ||
| 2192 | .mte, | ||
| 2193 | .perfmon, | ||
| 2194 | .ssbs, | ||
| 2195 | .sve2_bitperm, | ||
| 2196 | .use_postra_scheduler, | ||
| 2207 | .v9_2a, | 2197 | .v9_2a, |
| 2208 | }), | 2198 | }), |
| 2209 | }; | 2199 | }; |
| ... | @@ -2211,12 +2201,13 @@ pub const cpu = struct { | ... | @@ -2211,12 +2201,13 @@ pub const cpu = struct { |
| 2211 | .name = "cortex_a53", | 2201 | .name = "cortex_a53", |
| 2212 | .llvm_name = "cortex-a53", | 2202 | .llvm_name = "cortex-a53", |
| 2213 | .features = featureSet(&[_]Feature{ | 2203 | .features = featureSet(&[_]Feature{ |
| 2204 | .aes, | ||
| 2214 | .balance_fp_ops, | 2205 | .balance_fp_ops, |
| 2215 | .crc, | 2206 | .crc, |
| 2216 | .crypto, | ||
| 2217 | .fuse_adrp_add, | 2207 | .fuse_adrp_add, |
| 2218 | .fuse_aes, | 2208 | .fuse_aes, |
| 2219 | .perfmon, | 2209 | .perfmon, |
| 2210 | .sha2, | ||
| 2220 | .use_postra_scheduler, | 2211 | .use_postra_scheduler, |
| 2221 | .v8a, | 2212 | .v8a, |
| 2222 | }), | 2213 | }), |
| ... | @@ -2225,7 +2216,7 @@ pub const cpu = struct { | ... | @@ -2225,7 +2216,7 @@ pub const cpu = struct { |
| 2225 | .name = "cortex_a55", | 2216 | .name = "cortex_a55", |
| 2226 | .llvm_name = "cortex-a55", | 2217 | .llvm_name = "cortex-a55", |
| 2227 | .features = featureSet(&[_]Feature{ | 2218 | .features = featureSet(&[_]Feature{ |
| 2228 | .crypto, | 2219 | .aes, |
| 2229 | .dotprod, | 2220 | .dotprod, |
| 2230 | .fullfp16, | 2221 | .fullfp16, |
| 2231 | .fuse_address, | 2222 | .fuse_address, |
| ... | @@ -2233,6 +2224,7 @@ pub const cpu = struct { | ... | @@ -2233,6 +2224,7 @@ pub const cpu = struct { |
| 2233 | .fuse_aes, | 2224 | .fuse_aes, |
| 2234 | .perfmon, | 2225 | .perfmon, |
| 2235 | .rcpc, | 2226 | .rcpc, |
| 2227 | .sha2, | ||
| 2236 | .use_postra_scheduler, | 2228 | .use_postra_scheduler, |
| 2237 | .v8_2a, | 2229 | .v8_2a, |
| 2238 | }), | 2230 | }), |
| ... | @@ -2241,15 +2233,17 @@ pub const cpu = struct { | ... | @@ -2241,15 +2233,17 @@ pub const cpu = struct { |
| 2241 | .name = "cortex_a57", | 2233 | .name = "cortex_a57", |
| 2242 | .llvm_name = "cortex-a57", | 2234 | .llvm_name = "cortex-a57", |
| 2243 | .features = featureSet(&[_]Feature{ | 2235 | .features = featureSet(&[_]Feature{ |
| 2236 | .addr_lsl_slow_14, | ||
| 2237 | .aes, | ||
| 2244 | .balance_fp_ops, | 2238 | .balance_fp_ops, |
| 2245 | .crc, | 2239 | .crc, |
| 2246 | .crypto, | ||
| 2247 | .enable_select_opt, | 2240 | .enable_select_opt, |
| 2248 | .fuse_adrp_add, | 2241 | .fuse_adrp_add, |
| 2249 | .fuse_aes, | 2242 | .fuse_aes, |
| 2250 | .fuse_literals, | 2243 | .fuse_literals, |
| 2251 | .perfmon, | 2244 | .perfmon, |
| 2252 | .predictable_select_expensive, | 2245 | .predictable_select_expensive, |
| 2246 | .sha2, | ||
| 2253 | .use_postra_scheduler, | 2247 | .use_postra_scheduler, |
| 2254 | .v8a, | 2248 | .v8a, |
| 2255 | }), | 2249 | }), |
| ... | @@ -2258,12 +2252,18 @@ pub const cpu = struct { | ... | @@ -2258,12 +2252,18 @@ pub const cpu = struct { |
| 2258 | .name = "cortex_a65", | 2252 | .name = "cortex_a65", |
| 2259 | .llvm_name = "cortex-a65", | 2253 | .llvm_name = "cortex-a65", |
| 2260 | .features = featureSet(&[_]Feature{ | 2254 | .features = featureSet(&[_]Feature{ |
| 2261 | .a65, | 2255 | .aes, |
| 2262 | .crypto, | ||
| 2263 | .dotprod, | 2256 | .dotprod, |
| 2257 | .enable_select_opt, | ||
| 2264 | .fullfp16, | 2258 | .fullfp16, |
| 2259 | .fuse_address, | ||
| 2260 | .fuse_adrp_add, | ||
| 2261 | .fuse_aes, | ||
| 2262 | .fuse_literals, | ||
| 2265 | .perfmon, | 2263 | .perfmon, |
| 2264 | .predictable_select_expensive, | ||
| 2266 | .rcpc, | 2265 | .rcpc, |
| 2266 | .sha2, | ||
| 2267 | .ssbs, | 2267 | .ssbs, |
| 2268 | .v8_2a, | 2268 | .v8_2a, |
| 2269 | }), | 2269 | }), |
| ... | @@ -2272,12 +2272,18 @@ pub const cpu = struct { | ... | @@ -2272,12 +2272,18 @@ pub const cpu = struct { |
| 2272 | .name = "cortex_a65ae", | 2272 | .name = "cortex_a65ae", |
| 2273 | .llvm_name = "cortex-a65ae", | 2273 | .llvm_name = "cortex-a65ae", |
| 2274 | .features = featureSet(&[_]Feature{ | 2274 | .features = featureSet(&[_]Feature{ |
| 2275 | .a65, | 2275 | .aes, |
| 2276 | .crypto, | ||
| 2277 | .dotprod, | 2276 | .dotprod, |
| 2277 | .enable_select_opt, | ||
| 2278 | .fullfp16, | 2278 | .fullfp16, |
| 2279 | .fuse_address, | ||
| 2280 | .fuse_adrp_add, | ||
| 2281 | .fuse_aes, | ||
| 2282 | .fuse_literals, | ||
| 2279 | .perfmon, | 2283 | .perfmon, |
| 2284 | .predictable_select_expensive, | ||
| 2280 | .rcpc, | 2285 | .rcpc, |
| 2286 | .sha2, | ||
| 2281 | .ssbs, | 2287 | .ssbs, |
| 2282 | .v8_2a, | 2288 | .v8_2a, |
| 2283 | }), | 2289 | }), |
| ... | @@ -2286,14 +2292,22 @@ pub const cpu = struct { | ... | @@ -2286,14 +2292,22 @@ pub const cpu = struct { |
| 2286 | .name = "cortex_a710", | 2292 | .name = "cortex_a710", |
| 2287 | .llvm_name = "cortex-a710", | 2293 | .llvm_name = "cortex-a710", |
| 2288 | .features = featureSet(&[_]Feature{ | 2294 | .features = featureSet(&[_]Feature{ |
| 2289 | .a710, | 2295 | .alu_lsl_fast, |
| 2290 | .bf16, | 2296 | .bf16, |
| 2297 | .ccidx, | ||
| 2298 | .cmp_bcc_fusion, | ||
| 2299 | .enable_select_opt, | ||
| 2291 | .ete, | 2300 | .ete, |
| 2292 | .fp16fml, | 2301 | .fp16fml, |
| 2302 | .fuse_adrp_add, | ||
| 2303 | .fuse_aes, | ||
| 2293 | .i8mm, | 2304 | .i8mm, |
| 2294 | .mte, | 2305 | .mte, |
| 2295 | .perfmon, | 2306 | .perfmon, |
| 2307 | .predictable_select_expensive, | ||
| 2308 | .ssbs, | ||
| 2296 | .sve2_bitperm, | 2309 | .sve2_bitperm, |
| 2310 | .use_postra_scheduler, | ||
| 2297 | .v9a, | 2311 | .v9a, |
| 2298 | }), | 2312 | }), |
| 2299 | }; | 2313 | }; |
| ... | @@ -2301,9 +2315,9 @@ pub const cpu = struct { | ... | @@ -2301,9 +2315,9 @@ pub const cpu = struct { |
| 2301 | .name = "cortex_a715", | 2315 | .name = "cortex_a715", |
| 2302 | .llvm_name = "cortex-a715", | 2316 | .llvm_name = "cortex-a715", |
| 2303 | .features = featureSet(&[_]Feature{ | 2317 | .features = featureSet(&[_]Feature{ |
| 2304 | .addr_lsl_fast, | ||
| 2305 | .alu_lsl_fast, | 2318 | .alu_lsl_fast, |
| 2306 | .bf16, | 2319 | .bf16, |
| 2320 | .ccidx, | ||
| 2307 | .cmp_bcc_fusion, | 2321 | .cmp_bcc_fusion, |
| 2308 | .enable_select_opt, | 2322 | .enable_select_opt, |
| 2309 | .ete, | 2323 | .ete, |
| ... | @@ -2315,6 +2329,7 @@ pub const cpu = struct { | ... | @@ -2315,6 +2329,7 @@ pub const cpu = struct { |
| 2315 | .perfmon, | 2329 | .perfmon, |
| 2316 | .predictable_select_expensive, | 2330 | .predictable_select_expensive, |
| 2317 | .spe, | 2331 | .spe, |
| 2332 | .ssbs, | ||
| 2318 | .sve2_bitperm, | 2333 | .sve2_bitperm, |
| 2319 | .use_postra_scheduler, | 2334 | .use_postra_scheduler, |
| 2320 | .v9a, | 2335 | .v9a, |
| ... | @@ -2324,14 +2339,16 @@ pub const cpu = struct { | ... | @@ -2324,14 +2339,16 @@ pub const cpu = struct { |
| 2324 | .name = "cortex_a72", | 2339 | .name = "cortex_a72", |
| 2325 | .llvm_name = "cortex-a72", | 2340 | .llvm_name = "cortex-a72", |
| 2326 | .features = featureSet(&[_]Feature{ | 2341 | .features = featureSet(&[_]Feature{ |
| 2342 | .addr_lsl_slow_14, | ||
| 2343 | .aes, | ||
| 2327 | .crc, | 2344 | .crc, |
| 2328 | .crypto, | ||
| 2329 | .enable_select_opt, | 2345 | .enable_select_opt, |
| 2330 | .fuse_adrp_add, | 2346 | .fuse_adrp_add, |
| 2331 | .fuse_aes, | 2347 | .fuse_aes, |
| 2332 | .fuse_literals, | 2348 | .fuse_literals, |
| 2333 | .perfmon, | 2349 | .perfmon, |
| 2334 | .predictable_select_expensive, | 2350 | .predictable_select_expensive, |
| 2351 | .sha2, | ||
| 2335 | .v8a, | 2352 | .v8a, |
| 2336 | }), | 2353 | }), |
| 2337 | }; | 2354 | }; |
| ... | @@ -2339,14 +2356,68 @@ pub const cpu = struct { | ... | @@ -2339,14 +2356,68 @@ pub const cpu = struct { |
| 2339 | .name = "cortex_a720", | 2356 | .name = "cortex_a720", |
| 2340 | .llvm_name = "cortex-a720", | 2357 | .llvm_name = "cortex-a720", |
| 2341 | .features = featureSet(&[_]Feature{ | 2358 | .features = featureSet(&[_]Feature{ |
| 2342 | .a720, | 2359 | .alu_lsl_fast, |
| 2360 | .ccidx, | ||
| 2361 | .cmp_bcc_fusion, | ||
| 2362 | .enable_select_opt, | ||
| 2363 | .ete, | ||
| 2364 | .fp16fml, | ||
| 2365 | .fuse_adrp_add, | ||
| 2366 | .fuse_aes, | ||
| 2367 | .mte, | ||
| 2368 | .perfmon, | ||
| 2369 | .predictable_select_expensive, | ||
| 2370 | .spe, | ||
| 2371 | .spe_eef, | ||
| 2372 | .ssbs, | ||
| 2373 | .sve2_bitperm, | ||
| 2374 | .use_postra_scheduler, | ||
| 2375 | .v9_2a, | ||
| 2376 | }), | ||
| 2377 | }; | ||
| 2378 | pub const cortex_a720ae = CpuModel{ | ||
| 2379 | .name = "cortex_a720ae", | ||
| 2380 | .llvm_name = "cortex-a720ae", | ||
| 2381 | .features = featureSet(&[_]Feature{ | ||
| 2382 | .alu_lsl_fast, | ||
| 2383 | .ccidx, | ||
| 2384 | .cmp_bcc_fusion, | ||
| 2385 | .enable_select_opt, | ||
| 2386 | .ete, | ||
| 2387 | .fp16fml, | ||
| 2388 | .fuse_adrp_add, | ||
| 2389 | .fuse_aes, | ||
| 2390 | .mte, | ||
| 2391 | .perfmon, | ||
| 2392 | .predictable_select_expensive, | ||
| 2393 | .spe, | ||
| 2394 | .spe_eef, | ||
| 2395 | .ssbs, | ||
| 2396 | .sve2_bitperm, | ||
| 2397 | .use_postra_scheduler, | ||
| 2398 | .v9_2a, | ||
| 2399 | }), | ||
| 2400 | }; | ||
| 2401 | pub const cortex_a725 = CpuModel{ | ||
| 2402 | .name = "cortex_a725", | ||
| 2403 | .llvm_name = "cortex-a725", | ||
| 2404 | .features = featureSet(&[_]Feature{ | ||
| 2405 | .alu_lsl_fast, | ||
| 2406 | .ccidx, | ||
| 2407 | .cmp_bcc_fusion, | ||
| 2408 | .enable_select_opt, | ||
| 2343 | .ete, | 2409 | .ete, |
| 2344 | .fp16fml, | 2410 | .fp16fml, |
| 2411 | .fuse_adrp_add, | ||
| 2412 | .fuse_aes, | ||
| 2345 | .mte, | 2413 | .mte, |
| 2346 | .perfmon, | 2414 | .perfmon, |
| 2415 | .predictable_select_expensive, | ||
| 2347 | .spe, | 2416 | .spe, |
| 2348 | .spe_eef, | 2417 | .spe_eef, |
| 2418 | .ssbs, | ||
| 2349 | .sve2_bitperm, | 2419 | .sve2_bitperm, |
| 2420 | .use_postra_scheduler, | ||
| 2350 | .v9_2a, | 2421 | .v9_2a, |
| 2351 | }), | 2422 | }), |
| 2352 | }; | 2423 | }; |
| ... | @@ -2354,13 +2425,15 @@ pub const cpu = struct { | ... | @@ -2354,13 +2425,15 @@ pub const cpu = struct { |
| 2354 | .name = "cortex_a73", | 2425 | .name = "cortex_a73", |
| 2355 | .llvm_name = "cortex-a73", | 2426 | .llvm_name = "cortex-a73", |
| 2356 | .features = featureSet(&[_]Feature{ | 2427 | .features = featureSet(&[_]Feature{ |
| 2428 | .addr_lsl_slow_14, | ||
| 2429 | .aes, | ||
| 2357 | .crc, | 2430 | .crc, |
| 2358 | .crypto, | ||
| 2359 | .enable_select_opt, | 2431 | .enable_select_opt, |
| 2360 | .fuse_adrp_add, | 2432 | .fuse_adrp_add, |
| 2361 | .fuse_aes, | 2433 | .fuse_aes, |
| 2362 | .perfmon, | 2434 | .perfmon, |
| 2363 | .predictable_select_expensive, | 2435 | .predictable_select_expensive, |
| 2436 | .sha2, | ||
| 2364 | .v8a, | 2437 | .v8a, |
| 2365 | }), | 2438 | }), |
| 2366 | }; | 2439 | }; |
| ... | @@ -2368,7 +2441,8 @@ pub const cpu = struct { | ... | @@ -2368,7 +2441,8 @@ pub const cpu = struct { |
| 2368 | .name = "cortex_a75", | 2441 | .name = "cortex_a75", |
| 2369 | .llvm_name = "cortex-a75", | 2442 | .llvm_name = "cortex-a75", |
| 2370 | .features = featureSet(&[_]Feature{ | 2443 | .features = featureSet(&[_]Feature{ |
| 2371 | .crypto, | 2444 | .addr_lsl_slow_14, |
| 2445 | .aes, | ||
| 2372 | .dotprod, | 2446 | .dotprod, |
| 2373 | .enable_select_opt, | 2447 | .enable_select_opt, |
| 2374 | .fullfp16, | 2448 | .fullfp16, |
| ... | @@ -2377,6 +2451,7 @@ pub const cpu = struct { | ... | @@ -2377,6 +2451,7 @@ pub const cpu = struct { |
| 2377 | .perfmon, | 2451 | .perfmon, |
| 2378 | .predictable_select_expensive, | 2452 | .predictable_select_expensive, |
| 2379 | .rcpc, | 2453 | .rcpc, |
| 2454 | .sha2, | ||
| 2380 | .v8_2a, | 2455 | .v8_2a, |
| 2381 | }), | 2456 | }), |
| 2382 | }; | 2457 | }; |
| ... | @@ -2384,12 +2459,18 @@ pub const cpu = struct { | ... | @@ -2384,12 +2459,18 @@ pub const cpu = struct { |
| 2384 | .name = "cortex_a76", | 2459 | .name = "cortex_a76", |
| 2385 | .llvm_name = "cortex-a76", | 2460 | .llvm_name = "cortex-a76", |
| 2386 | .features = featureSet(&[_]Feature{ | 2461 | .features = featureSet(&[_]Feature{ |
| 2387 | .a76, | 2462 | .addr_lsl_slow_14, |
| 2388 | .crypto, | 2463 | .aes, |
| 2464 | .alu_lsl_fast, | ||
| 2389 | .dotprod, | 2465 | .dotprod, |
| 2466 | .enable_select_opt, | ||
| 2390 | .fullfp16, | 2467 | .fullfp16, |
| 2468 | .fuse_adrp_add, | ||
| 2469 | .fuse_aes, | ||
| 2391 | .perfmon, | 2470 | .perfmon, |
| 2471 | .predictable_select_expensive, | ||
| 2392 | .rcpc, | 2472 | .rcpc, |
| 2473 | .sha2, | ||
| 2393 | .ssbs, | 2474 | .ssbs, |
| 2394 | .v8_2a, | 2475 | .v8_2a, |
| 2395 | }), | 2476 | }), |
| ... | @@ -2398,12 +2479,18 @@ pub const cpu = struct { | ... | @@ -2398,12 +2479,18 @@ pub const cpu = struct { |
| 2398 | .name = "cortex_a76ae", | 2479 | .name = "cortex_a76ae", |
| 2399 | .llvm_name = "cortex-a76ae", | 2480 | .llvm_name = "cortex-a76ae", |
| 2400 | .features = featureSet(&[_]Feature{ | 2481 | .features = featureSet(&[_]Feature{ |
| 2401 | .a76, | 2482 | .addr_lsl_slow_14, |
| 2402 | .crypto, | 2483 | .aes, |
| 2484 | .alu_lsl_fast, | ||
| 2403 | .dotprod, | 2485 | .dotprod, |
| 2486 | .enable_select_opt, | ||
| 2404 | .fullfp16, | 2487 | .fullfp16, |
| 2488 | .fuse_adrp_add, | ||
| 2489 | .fuse_aes, | ||
| 2405 | .perfmon, | 2490 | .perfmon, |
| 2491 | .predictable_select_expensive, | ||
| 2406 | .rcpc, | 2492 | .rcpc, |
| 2493 | .sha2, | ||
| 2407 | .ssbs, | 2494 | .ssbs, |
| 2408 | .v8_2a, | 2495 | .v8_2a, |
| 2409 | }), | 2496 | }), |
| ... | @@ -2412,10 +2499,10 @@ pub const cpu = struct { | ... | @@ -2412,10 +2499,10 @@ pub const cpu = struct { |
| 2412 | .name = "cortex_a77", | 2499 | .name = "cortex_a77", |
| 2413 | .llvm_name = "cortex-a77", | 2500 | .llvm_name = "cortex-a77", |
| 2414 | .features = featureSet(&[_]Feature{ | 2501 | .features = featureSet(&[_]Feature{ |
| 2415 | .addr_lsl_fast, | 2502 | .addr_lsl_slow_14, |
| 2503 | .aes, | ||
| 2416 | .alu_lsl_fast, | 2504 | .alu_lsl_fast, |
| 2417 | .cmp_bcc_fusion, | 2505 | .cmp_bcc_fusion, |
| 2418 | .crypto, | ||
| 2419 | .dotprod, | 2506 | .dotprod, |
| 2420 | .enable_select_opt, | 2507 | .enable_select_opt, |
| 2421 | .fullfp16, | 2508 | .fullfp16, |
| ... | @@ -2424,6 +2511,7 @@ pub const cpu = struct { | ... | @@ -2424,6 +2511,7 @@ pub const cpu = struct { |
| 2424 | .perfmon, | 2511 | .perfmon, |
| 2425 | .predictable_select_expensive, | 2512 | .predictable_select_expensive, |
| 2426 | .rcpc, | 2513 | .rcpc, |
| 2514 | .sha2, | ||
| 2427 | .ssbs, | 2515 | .ssbs, |
| 2428 | .v8_2a, | 2516 | .v8_2a, |
| 2429 | }), | 2517 | }), |
| ... | @@ -2432,14 +2520,45 @@ pub const cpu = struct { | ... | @@ -2432,14 +2520,45 @@ pub const cpu = struct { |
| 2432 | .name = "cortex_a78", | 2520 | .name = "cortex_a78", |
| 2433 | .llvm_name = "cortex-a78", | 2521 | .llvm_name = "cortex-a78", |
| 2434 | .features = featureSet(&[_]Feature{ | 2522 | .features = featureSet(&[_]Feature{ |
| 2435 | .a78, | 2523 | .addr_lsl_slow_14, |
| 2436 | .crypto, | 2524 | .aes, |
| 2525 | .alu_lsl_fast, | ||
| 2526 | .cmp_bcc_fusion, | ||
| 2527 | .dotprod, | ||
| 2528 | .enable_select_opt, | ||
| 2529 | .fullfp16, | ||
| 2530 | .fuse_adrp_add, | ||
| 2531 | .fuse_aes, | ||
| 2532 | .perfmon, | ||
| 2533 | .predictable_select_expensive, | ||
| 2534 | .rcpc, | ||
| 2535 | .sha2, | ||
| 2536 | .spe, | ||
| 2537 | .ssbs, | ||
| 2538 | .use_postra_scheduler, | ||
| 2539 | .v8_2a, | ||
| 2540 | }), | ||
| 2541 | }; | ||
| 2542 | pub const cortex_a78ae = CpuModel{ | ||
| 2543 | .name = "cortex_a78ae", | ||
| 2544 | .llvm_name = "cortex-a78ae", | ||
| 2545 | .features = featureSet(&[_]Feature{ | ||
| 2546 | .addr_lsl_slow_14, | ||
| 2547 | .aes, | ||
| 2548 | .alu_lsl_fast, | ||
| 2549 | .cmp_bcc_fusion, | ||
| 2437 | .dotprod, | 2550 | .dotprod, |
| 2551 | .enable_select_opt, | ||
| 2438 | .fullfp16, | 2552 | .fullfp16, |
| 2553 | .fuse_adrp_add, | ||
| 2554 | .fuse_aes, | ||
| 2439 | .perfmon, | 2555 | .perfmon, |
| 2556 | .predictable_select_expensive, | ||
| 2440 | .rcpc, | 2557 | .rcpc, |
| 2558 | .sha2, | ||
| 2441 | .spe, | 2559 | .spe, |
| 2442 | .ssbs, | 2560 | .ssbs, |
| 2561 | .use_postra_scheduler, | ||
| 2443 | .v8_2a, | 2562 | .v8_2a, |
| 2444 | }), | 2563 | }), |
| 2445 | }; | 2564 | }; |
| ... | @@ -2447,16 +2566,24 @@ pub const cpu = struct { | ... | @@ -2447,16 +2566,24 @@ pub const cpu = struct { |
| 2447 | .name = "cortex_a78c", | 2566 | .name = "cortex_a78c", |
| 2448 | .llvm_name = "cortex-a78c", | 2567 | .llvm_name = "cortex-a78c", |
| 2449 | .features = featureSet(&[_]Feature{ | 2568 | .features = featureSet(&[_]Feature{ |
| 2450 | .a78c, | 2569 | .addr_lsl_slow_14, |
| 2451 | .crypto, | 2570 | .aes, |
| 2571 | .alu_lsl_fast, | ||
| 2572 | .cmp_bcc_fusion, | ||
| 2452 | .dotprod, | 2573 | .dotprod, |
| 2574 | .enable_select_opt, | ||
| 2453 | .flagm, | 2575 | .flagm, |
| 2454 | .fullfp16, | 2576 | .fullfp16, |
| 2577 | .fuse_adrp_add, | ||
| 2578 | .fuse_aes, | ||
| 2455 | .pauth, | 2579 | .pauth, |
| 2456 | .perfmon, | 2580 | .perfmon, |
| 2581 | .predictable_select_expensive, | ||
| 2457 | .rcpc, | 2582 | .rcpc, |
| 2583 | .sha2, | ||
| 2458 | .spe, | 2584 | .spe, |
| 2459 | .ssbs, | 2585 | .ssbs, |
| 2586 | .use_postra_scheduler, | ||
| 2460 | .v8_2a, | 2587 | .v8_2a, |
| 2461 | }), | 2588 | }), |
| 2462 | }; | 2589 | }; |
| ... | @@ -2464,12 +2591,35 @@ pub const cpu = struct { | ... | @@ -2464,12 +2591,35 @@ pub const cpu = struct { |
| 2464 | .name = "cortex_r82", | 2591 | .name = "cortex_r82", |
| 2465 | .llvm_name = "cortex-r82", | 2592 | .llvm_name = "cortex-r82", |
| 2466 | .features = featureSet(&[_]Feature{ | 2593 | .features = featureSet(&[_]Feature{ |
| 2467 | .cortex_r82, | 2594 | .ccdp, |
| 2595 | .complxnum, | ||
| 2596 | .dotprod, | ||
| 2468 | .fp16fml, | 2597 | .fp16fml, |
| 2598 | .jsconv, | ||
| 2469 | .perfmon, | 2599 | .perfmon, |
| 2470 | .predres, | 2600 | .predres, |
| 2601 | .rdm, | ||
| 2471 | .sb, | 2602 | .sb, |
| 2472 | .ssbs, | 2603 | .ssbs, |
| 2604 | .use_postra_scheduler, | ||
| 2605 | .v8r, | ||
| 2606 | }), | ||
| 2607 | }; | ||
| 2608 | pub const cortex_r82ae = CpuModel{ | ||
| 2609 | .name = "cortex_r82ae", | ||
| 2610 | .llvm_name = "cortex-r82ae", | ||
| 2611 | .features = featureSet(&[_]Feature{ | ||
| 2612 | .ccdp, | ||
| 2613 | .complxnum, | ||
| 2614 | .dotprod, | ||
| 2615 | .fp16fml, | ||
| 2616 | .jsconv, | ||
| 2617 | .perfmon, | ||
| 2618 | .predres, | ||
| 2619 | .rdm, | ||
| 2620 | .sb, | ||
| 2621 | .ssbs, | ||
| 2622 | .use_postra_scheduler, | ||
| 2473 | .v8r, | 2623 | .v8r, |
| 2474 | }), | 2624 | }), |
| 2475 | }; | 2625 | }; |
| ... | @@ -2477,10 +2627,10 @@ pub const cpu = struct { | ... | @@ -2477,10 +2627,10 @@ pub const cpu = struct { |
| 2477 | .name = "cortex_x1", | 2627 | .name = "cortex_x1", |
| 2478 | .llvm_name = "cortex-x1", | 2628 | .llvm_name = "cortex-x1", |
| 2479 | .features = featureSet(&[_]Feature{ | 2629 | .features = featureSet(&[_]Feature{ |
| 2480 | .addr_lsl_fast, | 2630 | .addr_lsl_slow_14, |
| 2631 | .aes, | ||
| 2481 | .alu_lsl_fast, | 2632 | .alu_lsl_fast, |
| 2482 | .cmp_bcc_fusion, | 2633 | .cmp_bcc_fusion, |
| 2483 | .crypto, | ||
| 2484 | .dotprod, | 2634 | .dotprod, |
| 2485 | .enable_select_opt, | 2635 | .enable_select_opt, |
| 2486 | .fullfp16, | 2636 | .fullfp16, |
| ... | @@ -2489,6 +2639,7 @@ pub const cpu = struct { | ... | @@ -2489,6 +2639,7 @@ pub const cpu = struct { |
| 2489 | .perfmon, | 2639 | .perfmon, |
| 2490 | .predictable_select_expensive, | 2640 | .predictable_select_expensive, |
| 2491 | .rcpc, | 2641 | .rcpc, |
| 2642 | .sha2, | ||
| 2492 | .spe, | 2643 | .spe, |
| 2493 | .ssbs, | 2644 | .ssbs, |
| 2494 | .use_postra_scheduler, | 2645 | .use_postra_scheduler, |
| ... | @@ -2499,10 +2650,10 @@ pub const cpu = struct { | ... | @@ -2499,10 +2650,10 @@ pub const cpu = struct { |
| 2499 | .name = "cortex_x1c", | 2650 | .name = "cortex_x1c", |
| 2500 | .llvm_name = "cortex-x1c", | 2651 | .llvm_name = "cortex-x1c", |
| 2501 | .features = featureSet(&[_]Feature{ | 2652 | .features = featureSet(&[_]Feature{ |
| 2502 | .addr_lsl_fast, | 2653 | .addr_lsl_slow_14, |
| 2654 | .aes, | ||
| 2503 | .alu_lsl_fast, | 2655 | .alu_lsl_fast, |
| 2504 | .cmp_bcc_fusion, | 2656 | .cmp_bcc_fusion, |
| 2505 | .crypto, | ||
| 2506 | .dotprod, | 2657 | .dotprod, |
| 2507 | .enable_select_opt, | 2658 | .enable_select_opt, |
| 2508 | .flagm, | 2659 | .flagm, |
| ... | @@ -2514,6 +2665,7 @@ pub const cpu = struct { | ... | @@ -2514,6 +2665,7 @@ pub const cpu = struct { |
| 2514 | .perfmon, | 2665 | .perfmon, |
| 2515 | .predictable_select_expensive, | 2666 | .predictable_select_expensive, |
| 2516 | .rcpc_immo, | 2667 | .rcpc_immo, |
| 2668 | .sha2, | ||
| 2517 | .spe, | 2669 | .spe, |
| 2518 | .ssbs, | 2670 | .ssbs, |
| 2519 | .use_postra_scheduler, | 2671 | .use_postra_scheduler, |
| ... | @@ -2524,9 +2676,9 @@ pub const cpu = struct { | ... | @@ -2524,9 +2676,9 @@ pub const cpu = struct { |
| 2524 | .name = "cortex_x2", | 2676 | .name = "cortex_x2", |
| 2525 | .llvm_name = "cortex-x2", | 2677 | .llvm_name = "cortex-x2", |
| 2526 | .features = featureSet(&[_]Feature{ | 2678 | .features = featureSet(&[_]Feature{ |
| 2527 | .addr_lsl_fast, | ||
| 2528 | .alu_lsl_fast, | 2679 | .alu_lsl_fast, |
| 2529 | .bf16, | 2680 | .bf16, |
| 2681 | .ccidx, | ||
| 2530 | .cmp_bcc_fusion, | 2682 | .cmp_bcc_fusion, |
| 2531 | .enable_select_opt, | 2683 | .enable_select_opt, |
| 2532 | .ete, | 2684 | .ete, |
| ... | @@ -2537,6 +2689,7 @@ pub const cpu = struct { | ... | @@ -2537,6 +2689,7 @@ pub const cpu = struct { |
| 2537 | .mte, | 2689 | .mte, |
| 2538 | .perfmon, | 2690 | .perfmon, |
| 2539 | .predictable_select_expensive, | 2691 | .predictable_select_expensive, |
| 2692 | .ssbs, | ||
| 2540 | .sve2_bitperm, | 2693 | .sve2_bitperm, |
| 2541 | .use_postra_scheduler, | 2694 | .use_postra_scheduler, |
| 2542 | .v9a, | 2695 | .v9a, |
| ... | @@ -2546,9 +2699,9 @@ pub const cpu = struct { | ... | @@ -2546,9 +2699,9 @@ pub const cpu = struct { |
| 2546 | .name = "cortex_x3", | 2699 | .name = "cortex_x3", |
| 2547 | .llvm_name = "cortex-x3", | 2700 | .llvm_name = "cortex-x3", |
| 2548 | .features = featureSet(&[_]Feature{ | 2701 | .features = featureSet(&[_]Feature{ |
| 2549 | .addr_lsl_fast, | ||
| 2550 | .alu_lsl_fast, | 2702 | .alu_lsl_fast, |
| 2551 | .bf16, | 2703 | .bf16, |
| 2704 | .ccidx, | ||
| 2552 | .enable_select_opt, | 2705 | .enable_select_opt, |
| 2553 | .ete, | 2706 | .ete, |
| 2554 | .fp16fml, | 2707 | .fp16fml, |
| ... | @@ -2559,6 +2712,7 @@ pub const cpu = struct { | ... | @@ -2559,6 +2712,7 @@ pub const cpu = struct { |
| 2559 | .perfmon, | 2712 | .perfmon, |
| 2560 | .predictable_select_expensive, | 2713 | .predictable_select_expensive, |
| 2561 | .spe, | 2714 | .spe, |
| 2715 | .ssbs, | ||
| 2562 | .sve2_bitperm, | 2716 | .sve2_bitperm, |
| 2563 | .use_postra_scheduler, | 2717 | .use_postra_scheduler, |
| 2564 | .v9a, | 2718 | .v9a, |
| ... | @@ -2568,8 +2722,30 @@ pub const cpu = struct { | ... | @@ -2568,8 +2722,30 @@ pub const cpu = struct { |
| 2568 | .name = "cortex_x4", | 2722 | .name = "cortex_x4", |
| 2569 | .llvm_name = "cortex-x4", | 2723 | .llvm_name = "cortex-x4", |
| 2570 | .features = featureSet(&[_]Feature{ | 2724 | .features = featureSet(&[_]Feature{ |
| 2571 | .addr_lsl_fast, | ||
| 2572 | .alu_lsl_fast, | 2725 | .alu_lsl_fast, |
| 2726 | .ccidx, | ||
| 2727 | .enable_select_opt, | ||
| 2728 | .ete, | ||
| 2729 | .fp16fml, | ||
| 2730 | .fuse_adrp_add, | ||
| 2731 | .fuse_aes, | ||
| 2732 | .mte, | ||
| 2733 | .perfmon, | ||
| 2734 | .predictable_select_expensive, | ||
| 2735 | .spe, | ||
| 2736 | .spe_eef, | ||
| 2737 | .ssbs, | ||
| 2738 | .sve2_bitperm, | ||
| 2739 | .use_postra_scheduler, | ||
| 2740 | .v9_2a, | ||
| 2741 | }), | ||
| 2742 | }; | ||
| 2743 | pub const cortex_x925 = CpuModel{ | ||
| 2744 | .name = "cortex_x925", | ||
| 2745 | .llvm_name = "cortex-x925", | ||
| 2746 | .features = featureSet(&[_]Feature{ | ||
| 2747 | .alu_lsl_fast, | ||
| 2748 | .ccidx, | ||
| 2573 | .enable_select_opt, | 2749 | .enable_select_opt, |
| 2574 | .ete, | 2750 | .ete, |
| 2575 | .fp16fml, | 2751 | .fp16fml, |
| ... | @@ -2580,6 +2756,7 @@ pub const cpu = struct { | ... | @@ -2580,6 +2756,7 @@ pub const cpu = struct { |
| 2580 | .predictable_select_expensive, | 2756 | .predictable_select_expensive, |
| 2581 | .spe, | 2757 | .spe, |
| 2582 | .spe_eef, | 2758 | .spe_eef, |
| 2759 | .ssbs, | ||
| 2583 | .sve2_bitperm, | 2760 | .sve2_bitperm, |
| 2584 | .use_postra_scheduler, | 2761 | .use_postra_scheduler, |
| 2585 | .v9_2a, | 2762 | .v9_2a, |
| ... | @@ -2589,14 +2766,15 @@ pub const cpu = struct { | ... | @@ -2589,14 +2766,15 @@ pub const cpu = struct { |
| 2589 | .name = "cyclone", | 2766 | .name = "cyclone", |
| 2590 | .llvm_name = "cyclone", | 2767 | .llvm_name = "cyclone", |
| 2591 | .features = featureSet(&[_]Feature{ | 2768 | .features = featureSet(&[_]Feature{ |
| 2769 | .aes, | ||
| 2592 | .alternate_sextload_cvt_f32_pattern, | 2770 | .alternate_sextload_cvt_f32_pattern, |
| 2593 | .arith_bcc_fusion, | 2771 | .arith_bcc_fusion, |
| 2594 | .arith_cbz_fusion, | 2772 | .arith_cbz_fusion, |
| 2595 | .crypto, | ||
| 2596 | .disable_latency_sched_heuristic, | 2773 | .disable_latency_sched_heuristic, |
| 2597 | .fuse_aes, | 2774 | .fuse_aes, |
| 2598 | .fuse_crypto_eor, | 2775 | .fuse_crypto_eor, |
| 2599 | .perfmon, | 2776 | .perfmon, |
| 2777 | .sha2, | ||
| 2600 | .store_pair_suppress, | 2778 | .store_pair_suppress, |
| 2601 | .v8a, | 2779 | .v8a, |
| 2602 | .zcm, | 2780 | .zcm, |
| ... | @@ -2651,10 +2829,9 @@ pub const cpu = struct { | ... | @@ -2651,10 +2829,9 @@ pub const cpu = struct { |
| 2651 | .name = "exynos_m3", | 2829 | .name = "exynos_m3", |
| 2652 | .llvm_name = "exynos-m3", | 2830 | .llvm_name = "exynos-m3", |
| 2653 | .features = featureSet(&[_]Feature{ | 2831 | .features = featureSet(&[_]Feature{ |
| 2654 | .addr_lsl_fast, | 2832 | .aes, |
| 2655 | .alu_lsl_fast, | 2833 | .alu_lsl_fast, |
| 2656 | .crc, | 2834 | .crc, |
| 2657 | .crypto, | ||
| 2658 | .exynos_cheap_as_move, | 2835 | .exynos_cheap_as_move, |
| 2659 | .force_32bit_jump_tables, | 2836 | .force_32bit_jump_tables, |
| 2660 | .fuse_address, | 2837 | .fuse_address, |
| ... | @@ -2664,6 +2841,7 @@ pub const cpu = struct { | ... | @@ -2664,6 +2841,7 @@ pub const cpu = struct { |
| 2664 | .fuse_literals, | 2841 | .fuse_literals, |
| 2665 | .perfmon, | 2842 | .perfmon, |
| 2666 | .predictable_select_expensive, | 2843 | .predictable_select_expensive, |
| 2844 | .sha2, | ||
| 2667 | .store_pair_suppress, | 2845 | .store_pair_suppress, |
| 2668 | .use_postra_scheduler, | 2846 | .use_postra_scheduler, |
| 2669 | .v8a, | 2847 | .v8a, |
| ... | @@ -2673,11 +2851,10 @@ pub const cpu = struct { | ... | @@ -2673,11 +2851,10 @@ pub const cpu = struct { |
| 2673 | .name = "exynos_m4", | 2851 | .name = "exynos_m4", |
| 2674 | .llvm_name = "exynos-m4", | 2852 | .llvm_name = "exynos-m4", |
| 2675 | .features = featureSet(&[_]Feature{ | 2853 | .features = featureSet(&[_]Feature{ |
| 2676 | .addr_lsl_fast, | 2854 | .aes, |
| 2677 | .alu_lsl_fast, | 2855 | .alu_lsl_fast, |
| 2678 | .arith_bcc_fusion, | 2856 | .arith_bcc_fusion, |
| 2679 | .arith_cbz_fusion, | 2857 | .arith_cbz_fusion, |
| 2680 | .crypto, | ||
| 2681 | .dotprod, | 2858 | .dotprod, |
| 2682 | .exynos_cheap_as_move, | 2859 | .exynos_cheap_as_move, |
| 2683 | .force_32bit_jump_tables, | 2860 | .force_32bit_jump_tables, |
| ... | @@ -2689,6 +2866,7 @@ pub const cpu = struct { | ... | @@ -2689,6 +2866,7 @@ pub const cpu = struct { |
| 2689 | .fuse_csel, | 2866 | .fuse_csel, |
| 2690 | .fuse_literals, | 2867 | .fuse_literals, |
| 2691 | .perfmon, | 2868 | .perfmon, |
| 2869 | .sha2, | ||
| 2692 | .store_pair_suppress, | 2870 | .store_pair_suppress, |
| 2693 | .use_postra_scheduler, | 2871 | .use_postra_scheduler, |
| 2694 | .v8_2a, | 2872 | .v8_2a, |
| ... | @@ -2699,11 +2877,10 @@ pub const cpu = struct { | ... | @@ -2699,11 +2877,10 @@ pub const cpu = struct { |
| 2699 | .name = "exynos_m5", | 2877 | .name = "exynos_m5", |
| 2700 | .llvm_name = "exynos-m5", | 2878 | .llvm_name = "exynos-m5", |
| 2701 | .features = featureSet(&[_]Feature{ | 2879 | .features = featureSet(&[_]Feature{ |
| 2702 | .addr_lsl_fast, | 2880 | .aes, |
| 2703 | .alu_lsl_fast, | 2881 | .alu_lsl_fast, |
| 2704 | .arith_bcc_fusion, | 2882 | .arith_bcc_fusion, |
| 2705 | .arith_cbz_fusion, | 2883 | .arith_cbz_fusion, |
| 2706 | .crypto, | ||
| 2707 | .dotprod, | 2884 | .dotprod, |
| 2708 | .exynos_cheap_as_move, | 2885 | .exynos_cheap_as_move, |
| 2709 | .force_32bit_jump_tables, | 2886 | .force_32bit_jump_tables, |
| ... | @@ -2715,6 +2892,7 @@ pub const cpu = struct { | ... | @@ -2715,6 +2892,7 @@ pub const cpu = struct { |
| 2715 | .fuse_csel, | 2892 | .fuse_csel, |
| 2716 | .fuse_literals, | 2893 | .fuse_literals, |
| 2717 | .perfmon, | 2894 | .perfmon, |
| 2895 | .sha2, | ||
| 2718 | .store_pair_suppress, | 2896 | .store_pair_suppress, |
| 2719 | .use_postra_scheduler, | 2897 | .use_postra_scheduler, |
| 2720 | .v8_2a, | 2898 | .v8_2a, |
| ... | @@ -2725,13 +2903,13 @@ pub const cpu = struct { | ... | @@ -2725,13 +2903,13 @@ pub const cpu = struct { |
| 2725 | .name = "falkor", | 2903 | .name = "falkor", |
| 2726 | .llvm_name = "falkor", | 2904 | .llvm_name = "falkor", |
| 2727 | .features = featureSet(&[_]Feature{ | 2905 | .features = featureSet(&[_]Feature{ |
| 2728 | .addr_lsl_fast, | 2906 | .aes, |
| 2729 | .alu_lsl_fast, | 2907 | .alu_lsl_fast, |
| 2730 | .crc, | 2908 | .crc, |
| 2731 | .crypto, | ||
| 2732 | .perfmon, | 2909 | .perfmon, |
| 2733 | .predictable_select_expensive, | 2910 | .predictable_select_expensive, |
| 2734 | .rdm, | 2911 | .rdm, |
| 2912 | .sha2, | ||
| 2735 | .slow_strqro_store, | 2913 | .slow_strqro_store, |
| 2736 | .store_pair_suppress, | 2914 | .store_pair_suppress, |
| 2737 | .use_postra_scheduler, | 2915 | .use_postra_scheduler, |
| ... | @@ -2751,16 +2929,42 @@ pub const cpu = struct { | ... | @@ -2751,16 +2929,42 @@ pub const cpu = struct { |
| 2751 | .use_postra_scheduler, | 2929 | .use_postra_scheduler, |
| 2752 | }), | 2930 | }), |
| 2753 | }; | 2931 | }; |
| 2932 | pub const grace = CpuModel{ | ||
| 2933 | .name = "grace", | ||
| 2934 | .llvm_name = "grace", | ||
| 2935 | .features = featureSet(&[_]Feature{ | ||
| 2936 | .alu_lsl_fast, | ||
| 2937 | .bf16, | ||
| 2938 | .ccidx, | ||
| 2939 | .cmp_bcc_fusion, | ||
| 2940 | .enable_select_opt, | ||
| 2941 | .ete, | ||
| 2942 | .fp16fml, | ||
| 2943 | .fuse_adrp_add, | ||
| 2944 | .fuse_aes, | ||
| 2945 | .i8mm, | ||
| 2946 | .mte, | ||
| 2947 | .perfmon, | ||
| 2948 | .predictable_select_expensive, | ||
| 2949 | .rand, | ||
| 2950 | .spe, | ||
| 2951 | .ssbs, | ||
| 2952 | .sve2_bitperm, | ||
| 2953 | .use_fixed_over_scalable_if_equal_cost, | ||
| 2954 | .use_postra_scheduler, | ||
| 2955 | .v9a, | ||
| 2956 | }), | ||
| 2957 | }; | ||
| 2754 | pub const kryo = CpuModel{ | 2958 | pub const kryo = CpuModel{ |
| 2755 | .name = "kryo", | 2959 | .name = "kryo", |
| 2756 | .llvm_name = "kryo", | 2960 | .llvm_name = "kryo", |
| 2757 | .features = featureSet(&[_]Feature{ | 2961 | .features = featureSet(&[_]Feature{ |
| 2758 | .addr_lsl_fast, | 2962 | .aes, |
| 2759 | .alu_lsl_fast, | 2963 | .alu_lsl_fast, |
| 2760 | .crc, | 2964 | .crc, |
| 2761 | .crypto, | ||
| 2762 | .perfmon, | 2965 | .perfmon, |
| 2763 | .predictable_select_expensive, | 2966 | .predictable_select_expensive, |
| 2967 | .sha2, | ||
| 2764 | .store_pair_suppress, | 2968 | .store_pair_suppress, |
| 2765 | .use_postra_scheduler, | 2969 | .use_postra_scheduler, |
| 2766 | .v8a, | 2970 | .v8a, |
| ... | @@ -2771,11 +2975,11 @@ pub const cpu = struct { | ... | @@ -2771,11 +2975,11 @@ pub const cpu = struct { |
| 2771 | .name = "neoverse_512tvb", | 2975 | .name = "neoverse_512tvb", |
| 2772 | .llvm_name = "neoverse-512tvb", | 2976 | .llvm_name = "neoverse-512tvb", |
| 2773 | .features = featureSet(&[_]Feature{ | 2977 | .features = featureSet(&[_]Feature{ |
| 2774 | .addr_lsl_fast, | 2978 | .aes, |
| 2775 | .alu_lsl_fast, | 2979 | .alu_lsl_fast, |
| 2776 | .bf16, | 2980 | .bf16, |
| 2777 | .ccdp, | 2981 | .ccdp, |
| 2778 | .crypto, | 2982 | .ccidx, |
| 2779 | .enable_select_opt, | 2983 | .enable_select_opt, |
| 2780 | .fp16fml, | 2984 | .fp16fml, |
| 2781 | .fuse_adrp_add, | 2985 | .fuse_adrp_add, |
| ... | @@ -2784,6 +2988,8 @@ pub const cpu = struct { | ... | @@ -2784,6 +2988,8 @@ pub const cpu = struct { |
| 2784 | .perfmon, | 2988 | .perfmon, |
| 2785 | .predictable_select_expensive, | 2989 | .predictable_select_expensive, |
| 2786 | .rand, | 2990 | .rand, |
| 2991 | .sha3, | ||
| 2992 | .sm4, | ||
| 2787 | .spe, | 2993 | .spe, |
| 2788 | .ssbs, | 2994 | .ssbs, |
| 2789 | .sve, | 2995 | .sve, |
| ... | @@ -2795,13 +3001,14 @@ pub const cpu = struct { | ... | @@ -2795,13 +3001,14 @@ pub const cpu = struct { |
| 2795 | .name = "neoverse_e1", | 3001 | .name = "neoverse_e1", |
| 2796 | .llvm_name = "neoverse-e1", | 3002 | .llvm_name = "neoverse-e1", |
| 2797 | .features = featureSet(&[_]Feature{ | 3003 | .features = featureSet(&[_]Feature{ |
| 2798 | .crypto, | 3004 | .aes, |
| 2799 | .dotprod, | 3005 | .dotprod, |
| 2800 | .fullfp16, | 3006 | .fullfp16, |
| 2801 | .fuse_adrp_add, | 3007 | .fuse_adrp_add, |
| 2802 | .fuse_aes, | 3008 | .fuse_aes, |
| 2803 | .perfmon, | 3009 | .perfmon, |
| 2804 | .rcpc, | 3010 | .rcpc, |
| 3011 | .sha2, | ||
| 2805 | .ssbs, | 3012 | .ssbs, |
| 2806 | .use_postra_scheduler, | 3013 | .use_postra_scheduler, |
| 2807 | .v8_2a, | 3014 | .v8_2a, |
| ... | @@ -2811,9 +3018,9 @@ pub const cpu = struct { | ... | @@ -2811,9 +3018,9 @@ pub const cpu = struct { |
| 2811 | .name = "neoverse_n1", | 3018 | .name = "neoverse_n1", |
| 2812 | .llvm_name = "neoverse-n1", | 3019 | .llvm_name = "neoverse-n1", |
| 2813 | .features = featureSet(&[_]Feature{ | 3020 | .features = featureSet(&[_]Feature{ |
| 2814 | .addr_lsl_fast, | 3021 | .addr_lsl_slow_14, |
| 3022 | .aes, | ||
| 2815 | .alu_lsl_fast, | 3023 | .alu_lsl_fast, |
| 2816 | .crypto, | ||
| 2817 | .dotprod, | 3024 | .dotprod, |
| 2818 | .enable_select_opt, | 3025 | .enable_select_opt, |
| 2819 | .fullfp16, | 3026 | .fullfp16, |
| ... | @@ -2822,6 +3029,7 @@ pub const cpu = struct { | ... | @@ -2822,6 +3029,7 @@ pub const cpu = struct { |
| 2822 | .perfmon, | 3029 | .perfmon, |
| 2823 | .predictable_select_expensive, | 3030 | .predictable_select_expensive, |
| 2824 | .rcpc, | 3031 | .rcpc, |
| 3032 | .sha2, | ||
| 2825 | .spe, | 3033 | .spe, |
| 2826 | .ssbs, | 3034 | .ssbs, |
| 2827 | .use_postra_scheduler, | 3035 | .use_postra_scheduler, |
| ... | @@ -2832,31 +3040,57 @@ pub const cpu = struct { | ... | @@ -2832,31 +3040,57 @@ pub const cpu = struct { |
| 2832 | .name = "neoverse_n2", | 3040 | .name = "neoverse_n2", |
| 2833 | .llvm_name = "neoverse-n2", | 3041 | .llvm_name = "neoverse-n2", |
| 2834 | .features = featureSet(&[_]Feature{ | 3042 | .features = featureSet(&[_]Feature{ |
| 2835 | .addr_lsl_fast, | ||
| 2836 | .alu_lsl_fast, | 3043 | .alu_lsl_fast, |
| 2837 | .bf16, | 3044 | .bf16, |
| 3045 | .ccidx, | ||
| 2838 | .enable_select_opt, | 3046 | .enable_select_opt, |
| 2839 | .ete, | 3047 | .ete, |
| 3048 | .fp16fml, | ||
| 2840 | .fuse_adrp_add, | 3049 | .fuse_adrp_add, |
| 2841 | .fuse_aes, | 3050 | .fuse_aes, |
| 2842 | .i8mm, | 3051 | .i8mm, |
| 2843 | .mte, | 3052 | .mte, |
| 2844 | .perfmon, | 3053 | .perfmon, |
| 2845 | .predictable_select_expensive, | 3054 | .predictable_select_expensive, |
| 3055 | .ssbs, | ||
| 2846 | .sve2_bitperm, | 3056 | .sve2_bitperm, |
| 2847 | .use_postra_scheduler, | 3057 | .use_postra_scheduler, |
| 2848 | .v9a, | 3058 | .v9a, |
| 2849 | }), | 3059 | }), |
| 2850 | }; | 3060 | }; |
| 3061 | pub const neoverse_n3 = CpuModel{ | ||
| 3062 | .name = "neoverse_n3", | ||
| 3063 | .llvm_name = "neoverse-n3", | ||
| 3064 | .features = featureSet(&[_]Feature{ | ||
| 3065 | .alu_lsl_fast, | ||
| 3066 | .ccidx, | ||
| 3067 | .enable_select_opt, | ||
| 3068 | .ete, | ||
| 3069 | .fp16fml, | ||
| 3070 | .fuse_adrp_add, | ||
| 3071 | .fuse_aes, | ||
| 3072 | .mte, | ||
| 3073 | .perfmon, | ||
| 3074 | .predictable_select_expensive, | ||
| 3075 | .rand, | ||
| 3076 | .spe, | ||
| 3077 | .spe_eef, | ||
| 3078 | .ssbs, | ||
| 3079 | .sve2_bitperm, | ||
| 3080 | .use_postra_scheduler, | ||
| 3081 | .v9_2a, | ||
| 3082 | }), | ||
| 3083 | }; | ||
| 2851 | pub const neoverse_v1 = CpuModel{ | 3084 | pub const neoverse_v1 = CpuModel{ |
| 2852 | .name = "neoverse_v1", | 3085 | .name = "neoverse_v1", |
| 2853 | .llvm_name = "neoverse-v1", | 3086 | .llvm_name = "neoverse-v1", |
| 2854 | .features = featureSet(&[_]Feature{ | 3087 | .features = featureSet(&[_]Feature{ |
| 2855 | .addr_lsl_fast, | 3088 | .addr_lsl_slow_14, |
| 3089 | .aes, | ||
| 2856 | .alu_lsl_fast, | 3090 | .alu_lsl_fast, |
| 2857 | .bf16, | 3091 | .bf16, |
| 2858 | .ccdp, | 3092 | .ccdp, |
| 2859 | .crypto, | 3093 | .ccidx, |
| 2860 | .enable_select_opt, | 3094 | .enable_select_opt, |
| 2861 | .fp16fml, | 3095 | .fp16fml, |
| 2862 | .fuse_adrp_add, | 3096 | .fuse_adrp_add, |
| ... | @@ -2866,6 +3100,8 @@ pub const cpu = struct { | ... | @@ -2866,6 +3100,8 @@ pub const cpu = struct { |
| 2866 | .perfmon, | 3100 | .perfmon, |
| 2867 | .predictable_select_expensive, | 3101 | .predictable_select_expensive, |
| 2868 | .rand, | 3102 | .rand, |
| 3103 | .sha3, | ||
| 3104 | .sm4, | ||
| 2869 | .spe, | 3105 | .spe, |
| 2870 | .ssbs, | 3106 | .ssbs, |
| 2871 | .sve, | 3107 | .sve, |
| ... | @@ -2877,9 +3113,10 @@ pub const cpu = struct { | ... | @@ -2877,9 +3113,10 @@ pub const cpu = struct { |
| 2877 | .name = "neoverse_v2", | 3113 | .name = "neoverse_v2", |
| 2878 | .llvm_name = "neoverse-v2", | 3114 | .llvm_name = "neoverse-v2", |
| 2879 | .features = featureSet(&[_]Feature{ | 3115 | .features = featureSet(&[_]Feature{ |
| 2880 | .addr_lsl_fast, | ||
| 2881 | .alu_lsl_fast, | 3116 | .alu_lsl_fast, |
| 2882 | .bf16, | 3117 | .bf16, |
| 3118 | .ccidx, | ||
| 3119 | .cmp_bcc_fusion, | ||
| 2883 | .enable_select_opt, | 3120 | .enable_select_opt, |
| 2884 | .ete, | 3121 | .ete, |
| 2885 | .fp16fml, | 3122 | .fp16fml, |
| ... | @@ -2891,20 +3128,97 @@ pub const cpu = struct { | ... | @@ -2891,20 +3128,97 @@ pub const cpu = struct { |
| 2891 | .predictable_select_expensive, | 3128 | .predictable_select_expensive, |
| 2892 | .rand, | 3129 | .rand, |
| 2893 | .spe, | 3130 | .spe, |
| 3131 | .ssbs, | ||
| 2894 | .sve2_bitperm, | 3132 | .sve2_bitperm, |
| 3133 | .use_fixed_over_scalable_if_equal_cost, | ||
| 2895 | .use_postra_scheduler, | 3134 | .use_postra_scheduler, |
| 2896 | .v9a, | 3135 | .v9a, |
| 2897 | }), | 3136 | }), |
| 2898 | }; | 3137 | }; |
| 3138 | pub const neoverse_v3 = CpuModel{ | ||
| 3139 | .name = "neoverse_v3", | ||
| 3140 | .llvm_name = "neoverse-v3", | ||
| 3141 | .features = featureSet(&[_]Feature{ | ||
| 3142 | .alu_lsl_fast, | ||
| 3143 | .brbe, | ||
| 3144 | .ccidx, | ||
| 3145 | .enable_select_opt, | ||
| 3146 | .ete, | ||
| 3147 | .fp16fml, | ||
| 3148 | .fuse_adrp_add, | ||
| 3149 | .fuse_aes, | ||
| 3150 | .ls64, | ||
| 3151 | .mte, | ||
| 3152 | .perfmon, | ||
| 3153 | .predictable_select_expensive, | ||
| 3154 | .rand, | ||
| 3155 | .rme, | ||
| 3156 | .spe, | ||
| 3157 | .spe_eef, | ||
| 3158 | .ssbs, | ||
| 3159 | .sve2_bitperm, | ||
| 3160 | .use_postra_scheduler, | ||
| 3161 | .v9_2a, | ||
| 3162 | }), | ||
| 3163 | }; | ||
| 3164 | pub const neoverse_v3ae = CpuModel{ | ||
| 3165 | .name = "neoverse_v3ae", | ||
| 3166 | .llvm_name = "neoverse-v3ae", | ||
| 3167 | .features = featureSet(&[_]Feature{ | ||
| 3168 | .alu_lsl_fast, | ||
| 3169 | .brbe, | ||
| 3170 | .ccidx, | ||
| 3171 | .enable_select_opt, | ||
| 3172 | .ete, | ||
| 3173 | .fp16fml, | ||
| 3174 | .fuse_adrp_add, | ||
| 3175 | .fuse_aes, | ||
| 3176 | .ls64, | ||
| 3177 | .mte, | ||
| 3178 | .perfmon, | ||
| 3179 | .predictable_select_expensive, | ||
| 3180 | .rand, | ||
| 3181 | .rme, | ||
| 3182 | .spe, | ||
| 3183 | .spe_eef, | ||
| 3184 | .ssbs, | ||
| 3185 | .sve2_bitperm, | ||
| 3186 | .use_postra_scheduler, | ||
| 3187 | .v9_2a, | ||
| 3188 | }), | ||
| 3189 | }; | ||
| 3190 | pub const oryon_1 = CpuModel{ | ||
| 3191 | .name = "oryon_1", | ||
| 3192 | .llvm_name = "oryon-1", | ||
| 3193 | .features = featureSet(&[_]Feature{ | ||
| 3194 | .aes, | ||
| 3195 | .ccidx, | ||
| 3196 | .enable_select_opt, | ||
| 3197 | .fp16fml, | ||
| 3198 | .fuse_address, | ||
| 3199 | .fuse_adrp_add, | ||
| 3200 | .fuse_aes, | ||
| 3201 | .fuse_crypto_eor, | ||
| 3202 | .perfmon, | ||
| 3203 | .rand, | ||
| 3204 | .sha3, | ||
| 3205 | .sm4, | ||
| 3206 | .spe, | ||
| 3207 | .ssbs, | ||
| 3208 | .use_postra_scheduler, | ||
| 3209 | .v8_6a, | ||
| 3210 | }), | ||
| 3211 | }; | ||
| 2899 | pub const saphira = CpuModel{ | 3212 | pub const saphira = CpuModel{ |
| 2900 | .name = "saphira", | 3213 | .name = "saphira", |
| 2901 | .llvm_name = "saphira", | 3214 | .llvm_name = "saphira", |
| 2902 | .features = featureSet(&[_]Feature{ | 3215 | .features = featureSet(&[_]Feature{ |
| 2903 | .addr_lsl_fast, | 3216 | .aes, |
| 2904 | .alu_lsl_fast, | 3217 | .alu_lsl_fast, |
| 2905 | .crypto, | 3218 | .ccidx, |
| 2906 | .perfmon, | 3219 | .perfmon, |
| 2907 | .predictable_select_expensive, | 3220 | .predictable_select_expensive, |
| 3221 | .sha2, | ||
| 2908 | .spe, | 3222 | .spe, |
| 2909 | .store_pair_suppress, | 3223 | .store_pair_suppress, |
| 2910 | .use_postra_scheduler, | 3224 | .use_postra_scheduler, |
| ... | @@ -2916,10 +3230,11 @@ pub const cpu = struct { | ... | @@ -2916,10 +3230,11 @@ pub const cpu = struct { |
| 2916 | .name = "thunderx", | 3230 | .name = "thunderx", |
| 2917 | .llvm_name = "thunderx", | 3231 | .llvm_name = "thunderx", |
| 2918 | .features = featureSet(&[_]Feature{ | 3232 | .features = featureSet(&[_]Feature{ |
| 3233 | .aes, | ||
| 2919 | .crc, | 3234 | .crc, |
| 2920 | .crypto, | ||
| 2921 | .perfmon, | 3235 | .perfmon, |
| 2922 | .predictable_select_expensive, | 3236 | .predictable_select_expensive, |
| 3237 | .sha2, | ||
| 2923 | .store_pair_suppress, | 3238 | .store_pair_suppress, |
| 2924 | .use_postra_scheduler, | 3239 | .use_postra_scheduler, |
| 2925 | .v8a, | 3240 | .v8a, |
| ... | @@ -2929,10 +3244,11 @@ pub const cpu = struct { | ... | @@ -2929,10 +3244,11 @@ pub const cpu = struct { |
| 2929 | .name = "thunderx2t99", | 3244 | .name = "thunderx2t99", |
| 2930 | .llvm_name = "thunderx2t99", | 3245 | .llvm_name = "thunderx2t99", |
| 2931 | .features = featureSet(&[_]Feature{ | 3246 | .features = featureSet(&[_]Feature{ |
| 3247 | .aes, | ||
| 2932 | .aggressive_fma, | 3248 | .aggressive_fma, |
| 2933 | .arith_bcc_fusion, | 3249 | .arith_bcc_fusion, |
| 2934 | .crypto, | ||
| 2935 | .predictable_select_expensive, | 3250 | .predictable_select_expensive, |
| 3251 | .sha2, | ||
| 2936 | .store_pair_suppress, | 3252 | .store_pair_suppress, |
| 2937 | .use_postra_scheduler, | 3253 | .use_postra_scheduler, |
| 2938 | .v8_1a, | 3254 | .v8_1a, |
| ... | @@ -2942,12 +3258,14 @@ pub const cpu = struct { | ... | @@ -2942,12 +3258,14 @@ pub const cpu = struct { |
| 2942 | .name = "thunderx3t110", | 3258 | .name = "thunderx3t110", |
| 2943 | .llvm_name = "thunderx3t110", | 3259 | .llvm_name = "thunderx3t110", |
| 2944 | .features = featureSet(&[_]Feature{ | 3260 | .features = featureSet(&[_]Feature{ |
| 3261 | .aes, | ||
| 2945 | .aggressive_fma, | 3262 | .aggressive_fma, |
| 2946 | .arith_bcc_fusion, | 3263 | .arith_bcc_fusion, |
| 2947 | .balance_fp_ops, | 3264 | .balance_fp_ops, |
| 2948 | .crypto, | 3265 | .ccidx, |
| 2949 | .perfmon, | 3266 | .perfmon, |
| 2950 | .predictable_select_expensive, | 3267 | .predictable_select_expensive, |
| 3268 | .sha2, | ||
| 2951 | .store_pair_suppress, | 3269 | .store_pair_suppress, |
| 2952 | .strict_align, | 3270 | .strict_align, |
| 2953 | .use_postra_scheduler, | 3271 | .use_postra_scheduler, |
| ... | @@ -2958,10 +3276,11 @@ pub const cpu = struct { | ... | @@ -2958,10 +3276,11 @@ pub const cpu = struct { |
| 2958 | .name = "thunderxt81", | 3276 | .name = "thunderxt81", |
| 2959 | .llvm_name = "thunderxt81", | 3277 | .llvm_name = "thunderxt81", |
| 2960 | .features = featureSet(&[_]Feature{ | 3278 | .features = featureSet(&[_]Feature{ |
| 3279 | .aes, | ||
| 2961 | .crc, | 3280 | .crc, |
| 2962 | .crypto, | ||
| 2963 | .perfmon, | 3281 | .perfmon, |
| 2964 | .predictable_select_expensive, | 3282 | .predictable_select_expensive, |
| 3283 | .sha2, | ||
| 2965 | .store_pair_suppress, | 3284 | .store_pair_suppress, |
| 2966 | .use_postra_scheduler, | 3285 | .use_postra_scheduler, |
| 2967 | .v8a, | 3286 | .v8a, |
| ... | @@ -2971,10 +3290,11 @@ pub const cpu = struct { | ... | @@ -2971,10 +3290,11 @@ pub const cpu = struct { |
| 2971 | .name = "thunderxt83", | 3290 | .name = "thunderxt83", |
| 2972 | .llvm_name = "thunderxt83", | 3291 | .llvm_name = "thunderxt83", |
| 2973 | .features = featureSet(&[_]Feature{ | 3292 | .features = featureSet(&[_]Feature{ |
| 3293 | .aes, | ||
| 2974 | .crc, | 3294 | .crc, |
| 2975 | .crypto, | ||
| 2976 | .perfmon, | 3295 | .perfmon, |
| 2977 | .predictable_select_expensive, | 3296 | .predictable_select_expensive, |
| 3297 | .sha2, | ||
| 2978 | .store_pair_suppress, | 3298 | .store_pair_suppress, |
| 2979 | .use_postra_scheduler, | 3299 | .use_postra_scheduler, |
| 2980 | .v8a, | 3300 | .v8a, |
| ... | @@ -2984,10 +3304,11 @@ pub const cpu = struct { | ... | @@ -2984,10 +3304,11 @@ pub const cpu = struct { |
| 2984 | .name = "thunderxt88", | 3304 | .name = "thunderxt88", |
| 2985 | .llvm_name = "thunderxt88", | 3305 | .llvm_name = "thunderxt88", |
| 2986 | .features = featureSet(&[_]Feature{ | 3306 | .features = featureSet(&[_]Feature{ |
| 3307 | .aes, | ||
| 2987 | .crc, | 3308 | .crc, |
| 2988 | .crypto, | ||
| 2989 | .perfmon, | 3309 | .perfmon, |
| 2990 | .predictable_select_expensive, | 3310 | .predictable_select_expensive, |
| 3311 | .sha2, | ||
| 2991 | .store_pair_suppress, | 3312 | .store_pair_suppress, |
| 2992 | .use_postra_scheduler, | 3313 | .use_postra_scheduler, |
| 2993 | .v8a, | 3314 | .v8a, |
| ... | @@ -2997,13 +3318,14 @@ pub const cpu = struct { | ... | @@ -2997,13 +3318,14 @@ pub const cpu = struct { |
| 2997 | .name = "tsv110", | 3318 | .name = "tsv110", |
| 2998 | .llvm_name = "tsv110", | 3319 | .llvm_name = "tsv110", |
| 2999 | .features = featureSet(&[_]Feature{ | 3320 | .features = featureSet(&[_]Feature{ |
| 3321 | .aes, | ||
| 3000 | .complxnum, | 3322 | .complxnum, |
| 3001 | .crypto, | ||
| 3002 | .dotprod, | 3323 | .dotprod, |
| 3003 | .fp16fml, | 3324 | .fp16fml, |
| 3004 | .fuse_aes, | 3325 | .fuse_aes, |
| 3005 | .jsconv, | 3326 | .jsconv, |
| 3006 | .perfmon, | 3327 | .perfmon, |
| 3328 | .sha2, | ||
| 3007 | .spe, | 3329 | .spe, |
| 3008 | .store_pair_suppress, | 3330 | .store_pair_suppress, |
| 3009 | .use_postra_scheduler, | 3331 | .use_postra_scheduler, |
lib/std/Target/amdgpu.zig+325-30| ... | @@ -8,16 +8,23 @@ pub const Feature = enum { | ... | @@ -8,16 +8,23 @@ pub const Feature = enum { |
| 8 | @"16_bit_insts", | 8 | @"16_bit_insts", |
| 9 | a16, | 9 | a16, |
| 10 | add_no_carry_insts, | 10 | add_no_carry_insts, |
| 11 | agent_scope_fine_grained_remote_memory_atomics, | ||
| 12 | allocate1_5xvgprs, | ||
| 11 | aperture_regs, | 13 | aperture_regs, |
| 12 | architected_flat_scratch, | 14 | architected_flat_scratch, |
| 13 | architected_sgprs, | 15 | architected_sgprs, |
| 14 | atomic_buffer_global_pk_add_f16_insts, | 16 | atomic_buffer_global_pk_add_f16_insts, |
| 15 | atomic_buffer_global_pk_add_f16_no_rtn_insts, | 17 | atomic_buffer_global_pk_add_f16_no_rtn_insts, |
| 18 | atomic_buffer_pk_add_bf16_inst, | ||
| 16 | atomic_csub_no_rtn_insts, | 19 | atomic_csub_no_rtn_insts, |
| 17 | atomic_ds_pk_add_16_insts, | 20 | atomic_ds_pk_add_16_insts, |
| 18 | atomic_fadd_no_rtn_insts, | 21 | atomic_fadd_no_rtn_insts, |
| 19 | atomic_fadd_rtn_insts, | 22 | atomic_fadd_rtn_insts, |
| 20 | atomic_flat_pk_add_16_insts, | 23 | atomic_flat_pk_add_16_insts, |
| 24 | atomic_fmin_fmax_flat_f32, | ||
| 25 | atomic_fmin_fmax_flat_f64, | ||
| 26 | atomic_fmin_fmax_global_f32, | ||
| 27 | atomic_fmin_fmax_global_f64, | ||
| 21 | atomic_global_pk_add_bf16_inst, | 28 | atomic_global_pk_add_bf16_inst, |
| 22 | auto_waitcnt_before_barrier, | 29 | auto_waitcnt_before_barrier, |
| 23 | back_off_barrier, | 30 | back_off_barrier, |
| ... | @@ -27,6 +34,7 @@ pub const Feature = enum { | ... | @@ -27,6 +34,7 @@ pub const Feature = enum { |
| 27 | default_component_zero, | 34 | default_component_zero, |
| 28 | dl_insts, | 35 | dl_insts, |
| 29 | dot10_insts, | 36 | dot10_insts, |
| 37 | dot11_insts, | ||
| 30 | dot1_insts, | 38 | dot1_insts, |
| 31 | dot2_insts, | 39 | dot2_insts, |
| 32 | dot3_insts, | 40 | dot3_insts, |
| ... | @@ -47,6 +55,7 @@ pub const Feature = enum { | ... | @@ -47,6 +55,7 @@ pub const Feature = enum { |
| 47 | fast_fmaf, | 55 | fast_fmaf, |
| 48 | flat_address_space, | 56 | flat_address_space, |
| 49 | flat_atomic_fadd_f32_inst, | 57 | flat_atomic_fadd_f32_inst, |
| 58 | flat_buffer_global_fadd_f64_inst, | ||
| 50 | flat_for_global, | 59 | flat_for_global, |
| 51 | flat_global_insts, | 60 | flat_global_insts, |
| 52 | flat_inst_offsets, | 61 | flat_inst_offsets, |
| ... | @@ -71,7 +80,6 @@ pub const Feature = enum { | ... | @@ -71,7 +80,6 @@ pub const Feature = enum { |
| 71 | gfx10_b_encoding, | 80 | gfx10_b_encoding, |
| 72 | gfx10_insts, | 81 | gfx10_insts, |
| 73 | gfx11, | 82 | gfx11, |
| 74 | gfx11_full_vgprs, | ||
| 75 | gfx11_insts, | 83 | gfx11_insts, |
| 76 | gfx12, | 84 | gfx12, |
| 77 | gfx12_insts, | 85 | gfx12_insts, |
| ... | @@ -101,9 +109,12 @@ pub const Feature = enum { | ... | @@ -101,9 +109,12 @@ pub const Feature = enum { |
| 101 | mad_mac_f32_insts, | 109 | mad_mac_f32_insts, |
| 102 | mad_mix_insts, | 110 | mad_mix_insts, |
| 103 | mai_insts, | 111 | mai_insts, |
| 112 | max_hard_clause_length_32, | ||
| 113 | max_hard_clause_length_63, | ||
| 104 | max_private_element_size_16, | 114 | max_private_element_size_16, |
| 105 | max_private_element_size_4, | 115 | max_private_element_size_4, |
| 106 | max_private_element_size_8, | 116 | max_private_element_size_8, |
| 117 | memory_atomic_fadd_f32_denormal_support, | ||
| 107 | mfma_inline_literal_bug, | 118 | mfma_inline_literal_bug, |
| 108 | mimg_r128, | 119 | mimg_r128, |
| 109 | movrel, | 120 | movrel, |
| ... | @@ -120,11 +131,15 @@ pub const Feature = enum { | ... | @@ -120,11 +131,15 @@ pub const Feature = enum { |
| 120 | packed_tid, | 131 | packed_tid, |
| 121 | partial_nsa_encoding, | 132 | partial_nsa_encoding, |
| 122 | pk_fmac_f16_inst, | 133 | pk_fmac_f16_inst, |
| 134 | precise_memory, | ||
| 135 | priv_enabled_trap2_nop_bug, | ||
| 123 | promote_alloca, | 136 | promote_alloca, |
| 124 | prt_strict_null, | 137 | prt_strict_null, |
| 125 | pseudo_scalar_trans, | 138 | pseudo_scalar_trans, |
| 126 | r128_a16, | 139 | r128_a16, |
| 127 | real_true16, | 140 | real_true16, |
| 141 | required_export_priority, | ||
| 142 | requires_cov6, | ||
| 128 | restricted_soffset, | 143 | restricted_soffset, |
| 129 | s_memrealtime, | 144 | s_memrealtime, |
| 130 | s_memtime_inst, | 145 | s_memtime_inst, |
| ... | @@ -201,6 +216,16 @@ pub const all_features = blk: { | ... | @@ -201,6 +216,16 @@ pub const all_features = blk: { |
| 201 | .description = "Have VALU add/sub instructions without carry out", | 216 | .description = "Have VALU add/sub instructions without carry out", |
| 202 | .dependencies = featureSet(&[_]Feature{}), | 217 | .dependencies = featureSet(&[_]Feature{}), |
| 203 | }; | 218 | }; |
| 219 | result[@intFromEnum(Feature.agent_scope_fine_grained_remote_memory_atomics)] = .{ | ||
| 220 | .llvm_name = "agent-scope-fine-grained-remote-memory-atomics", | ||
| 221 | .description = "Agent (device) scoped atomic operations, excluding those directly supported by PCIe (i.e. integer atomic add, exchange, and compare-and-swap), are functional for allocations in host or peer device memory.", | ||
| 222 | .dependencies = featureSet(&[_]Feature{}), | ||
| 223 | }; | ||
| 224 | result[@intFromEnum(Feature.allocate1_5xvgprs)] = .{ | ||
| 225 | .llvm_name = "allocate1_5xvgprs", | ||
| 226 | .description = "Has 50% more physical VGPRs and 50% larger allocation granule", | ||
| 227 | .dependencies = featureSet(&[_]Feature{}), | ||
| 228 | }; | ||
| 204 | result[@intFromEnum(Feature.aperture_regs)] = .{ | 229 | result[@intFromEnum(Feature.aperture_regs)] = .{ |
| 205 | .llvm_name = "aperture-regs", | 230 | .llvm_name = "aperture-regs", |
| 206 | .description = "Has Memory Aperture Base and Size Registers", | 231 | .description = "Has Memory Aperture Base and Size Registers", |
| ... | @@ -230,6 +255,11 @@ pub const all_features = blk: { | ... | @@ -230,6 +255,11 @@ pub const all_features = blk: { |
| 230 | .flat_global_insts, | 255 | .flat_global_insts, |
| 231 | }), | 256 | }), |
| 232 | }; | 257 | }; |
| 258 | result[@intFromEnum(Feature.atomic_buffer_pk_add_bf16_inst)] = .{ | ||
| 259 | .llvm_name = "atomic-buffer-pk-add-bf16-inst", | ||
| 260 | .description = "Has buffer_atomic_pk_add_bf16 instruction", | ||
| 261 | .dependencies = featureSet(&[_]Feature{}), | ||
| 262 | }; | ||
| 233 | result[@intFromEnum(Feature.atomic_csub_no_rtn_insts)] = .{ | 263 | result[@intFromEnum(Feature.atomic_csub_no_rtn_insts)] = .{ |
| 234 | .llvm_name = "atomic-csub-no-rtn-insts", | 264 | .llvm_name = "atomic-csub-no-rtn-insts", |
| 235 | .description = "Has buffer_atomic_csub and global_atomic_csub instructions that don't return original value", | 265 | .description = "Has buffer_atomic_csub and global_atomic_csub instructions that don't return original value", |
| ... | @@ -259,6 +289,26 @@ pub const all_features = blk: { | ... | @@ -259,6 +289,26 @@ pub const all_features = blk: { |
| 259 | .description = "Has flat_atomic_pk_add_f16 and flat_atomic_pk_add_bf16 instructions", | 289 | .description = "Has flat_atomic_pk_add_f16 and flat_atomic_pk_add_bf16 instructions", |
| 260 | .dependencies = featureSet(&[_]Feature{}), | 290 | .dependencies = featureSet(&[_]Feature{}), |
| 261 | }; | 291 | }; |
| 292 | result[@intFromEnum(Feature.atomic_fmin_fmax_flat_f32)] = .{ | ||
| 293 | .llvm_name = "atomic-fmin-fmax-flat-f32", | ||
| 294 | .description = "Has flat memory instructions for atomicrmw fmin/fmax for float", | ||
| 295 | .dependencies = featureSet(&[_]Feature{}), | ||
| 296 | }; | ||
| 297 | result[@intFromEnum(Feature.atomic_fmin_fmax_flat_f64)] = .{ | ||
| 298 | .llvm_name = "atomic-fmin-fmax-flat-f64", | ||
| 299 | .description = "Has flat memory instructions for atomicrmw fmin/fmax for double", | ||
| 300 | .dependencies = featureSet(&[_]Feature{}), | ||
| 301 | }; | ||
| 302 | result[@intFromEnum(Feature.atomic_fmin_fmax_global_f32)] = .{ | ||
| 303 | .llvm_name = "atomic-fmin-fmax-global-f32", | ||
| 304 | .description = "Has global/buffer instructions for atomicrmw fmin/fmax for float", | ||
| 305 | .dependencies = featureSet(&[_]Feature{}), | ||
| 306 | }; | ||
| 307 | result[@intFromEnum(Feature.atomic_fmin_fmax_global_f64)] = .{ | ||
| 308 | .llvm_name = "atomic-fmin-fmax-global-f64", | ||
| 309 | .description = "Has global/buffer instructions for atomicrmw fmin/fmax for float", | ||
| 310 | .dependencies = featureSet(&[_]Feature{}), | ||
| 311 | }; | ||
| 262 | result[@intFromEnum(Feature.atomic_global_pk_add_bf16_inst)] = .{ | 312 | result[@intFromEnum(Feature.atomic_global_pk_add_bf16_inst)] = .{ |
| 263 | .llvm_name = "atomic-global-pk-add-bf16-inst", | 313 | .llvm_name = "atomic-global-pk-add-bf16-inst", |
| 264 | .description = "Has global_atomic_pk_add_bf16 instruction", | 314 | .description = "Has global_atomic_pk_add_bf16 instruction", |
| ... | @@ -306,6 +356,11 @@ pub const all_features = blk: { | ... | @@ -306,6 +356,11 @@ pub const all_features = blk: { |
| 306 | .description = "Has v_dot2_f32_f16 instruction", | 356 | .description = "Has v_dot2_f32_f16 instruction", |
| 307 | .dependencies = featureSet(&[_]Feature{}), | 357 | .dependencies = featureSet(&[_]Feature{}), |
| 308 | }; | 358 | }; |
| 359 | result[@intFromEnum(Feature.dot11_insts)] = .{ | ||
| 360 | .llvm_name = "dot11-insts", | ||
| 361 | .description = "Has v_dot4_f32_fp8_fp8, v_dot4_f32_fp8_bf8, v_dot4_f32_bf8_fp8, v_dot4_f32_bf8_bf8 instructions", | ||
| 362 | .dependencies = featureSet(&[_]Feature{}), | ||
| 363 | }; | ||
| 309 | result[@intFromEnum(Feature.dot1_insts)] = .{ | 364 | result[@intFromEnum(Feature.dot1_insts)] = .{ |
| 310 | .llvm_name = "dot1-insts", | 365 | .llvm_name = "dot1-insts", |
| 311 | .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions", | 366 | .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions", |
| ... | @@ -406,6 +461,11 @@ pub const all_features = blk: { | ... | @@ -406,6 +461,11 @@ pub const all_features = blk: { |
| 406 | .description = "Has flat_atomic_add_f32 instruction", | 461 | .description = "Has flat_atomic_add_f32 instruction", |
| 407 | .dependencies = featureSet(&[_]Feature{}), | 462 | .dependencies = featureSet(&[_]Feature{}), |
| 408 | }; | 463 | }; |
| 464 | result[@intFromEnum(Feature.flat_buffer_global_fadd_f64_inst)] = .{ | ||
| 465 | .llvm_name = "flat-buffer-global-fadd-f64-inst", | ||
| 466 | .description = "Has flat, buffer, and global instructions for f64 atomic fadd", | ||
| 467 | .dependencies = featureSet(&[_]Feature{}), | ||
| 468 | }; | ||
| 409 | result[@intFromEnum(Feature.flat_for_global)] = .{ | 469 | result[@intFromEnum(Feature.flat_for_global)] = .{ |
| 410 | .llvm_name = "flat-for-global", | 470 | .llvm_name = "flat-for-global", |
| 411 | .description = "Force to generate flat instruction for global", | 471 | .description = "Force to generate flat instruction for global", |
| ... | @@ -504,6 +564,10 @@ pub const all_features = blk: { | ... | @@ -504,6 +564,10 @@ pub const all_features = blk: { |
| 504 | .a16, | 564 | .a16, |
| 505 | .add_no_carry_insts, | 565 | .add_no_carry_insts, |
| 506 | .aperture_regs, | 566 | .aperture_regs, |
| 567 | .atomic_fmin_fmax_flat_f32, | ||
| 568 | .atomic_fmin_fmax_flat_f64, | ||
| 569 | .atomic_fmin_fmax_global_f32, | ||
| 570 | .atomic_fmin_fmax_global_f64, | ||
| 507 | .ci_insts, | 571 | .ci_insts, |
| 508 | .default_component_zero, | 572 | .default_component_zero, |
| 509 | .dpp, | 573 | .dpp, |
| ... | @@ -527,6 +591,7 @@ pub const all_features = blk: { | ... | @@ -527,6 +591,7 @@ pub const all_features = blk: { |
| 527 | .int_clamp_insts, | 591 | .int_clamp_insts, |
| 528 | .inv_2pi_inline_imm, | 592 | .inv_2pi_inline_imm, |
| 529 | .localmemorysize65536, | 593 | .localmemorysize65536, |
| 594 | .max_hard_clause_length_63, | ||
| 530 | .mimg_r128, | 595 | .mimg_r128, |
| 531 | .movrel, | 596 | .movrel, |
| 532 | .no_data_dep_hazard, | 597 | .no_data_dep_hazard, |
| ... | @@ -573,6 +638,8 @@ pub const all_features = blk: { | ... | @@ -573,6 +638,8 @@ pub const all_features = blk: { |
| 573 | .a16, | 638 | .a16, |
| 574 | .add_no_carry_insts, | 639 | .add_no_carry_insts, |
| 575 | .aperture_regs, | 640 | .aperture_regs, |
| 641 | .atomic_fmin_fmax_flat_f32, | ||
| 642 | .atomic_fmin_fmax_global_f32, | ||
| 576 | .ci_insts, | 643 | .ci_insts, |
| 577 | .default_component_zero, | 644 | .default_component_zero, |
| 578 | .dpp, | 645 | .dpp, |
| ... | @@ -599,6 +666,7 @@ pub const all_features = blk: { | ... | @@ -599,6 +666,7 @@ pub const all_features = blk: { |
| 599 | .int_clamp_insts, | 666 | .int_clamp_insts, |
| 600 | .inv_2pi_inline_imm, | 667 | .inv_2pi_inline_imm, |
| 601 | .localmemorysize65536, | 668 | .localmemorysize65536, |
| 669 | .max_hard_clause_length_32, | ||
| 602 | .mimg_r128, | 670 | .mimg_r128, |
| 603 | .movrel, | 671 | .movrel, |
| 604 | .no_data_dep_hazard, | 672 | .no_data_dep_hazard, |
| ... | @@ -613,11 +681,6 @@ pub const all_features = blk: { | ... | @@ -613,11 +681,6 @@ pub const all_features = blk: { |
| 613 | .vscnt, | 681 | .vscnt, |
| 614 | }), | 682 | }), |
| 615 | }; | 683 | }; |
| 616 | result[@intFromEnum(Feature.gfx11_full_vgprs)] = .{ | ||
| 617 | .llvm_name = "gfx11-full-vgprs", | ||
| 618 | .description = "GFX11 with 50% more physical VGPRs and 50% larger allocation granule than GFX10", | ||
| 619 | .dependencies = featureSet(&[_]Feature{}), | ||
| 620 | }; | ||
| 621 | result[@intFromEnum(Feature.gfx11_insts)] = .{ | 684 | result[@intFromEnum(Feature.gfx11_insts)] = .{ |
| 622 | .llvm_name = "gfx11-insts", | 685 | .llvm_name = "gfx11-insts", |
| 623 | .description = "Additional instructions for GFX11+", | 686 | .description = "Additional instructions for GFX11+", |
| ... | @@ -630,7 +693,10 @@ pub const all_features = blk: { | ... | @@ -630,7 +693,10 @@ pub const all_features = blk: { |
| 630 | .@"16_bit_insts", | 693 | .@"16_bit_insts", |
| 631 | .a16, | 694 | .a16, |
| 632 | .add_no_carry_insts, | 695 | .add_no_carry_insts, |
| 696 | .agent_scope_fine_grained_remote_memory_atomics, | ||
| 633 | .aperture_regs, | 697 | .aperture_regs, |
| 698 | .atomic_fmin_fmax_flat_f32, | ||
| 699 | .atomic_fmin_fmax_global_f32, | ||
| 634 | .ci_insts, | 700 | .ci_insts, |
| 635 | .default_component_broadcast, | 701 | .default_component_broadcast, |
| 636 | .dpp, | 702 | .dpp, |
| ... | @@ -655,6 +721,7 @@ pub const all_features = blk: { | ... | @@ -655,6 +721,7 @@ pub const all_features = blk: { |
| 655 | .int_clamp_insts, | 721 | .int_clamp_insts, |
| 656 | .inv_2pi_inline_imm, | 722 | .inv_2pi_inline_imm, |
| 657 | .localmemorysize65536, | 723 | .localmemorysize65536, |
| 724 | .max_hard_clause_length_32, | ||
| 658 | .mimg_r128, | 725 | .mimg_r128, |
| 659 | .movrel, | 726 | .movrel, |
| 660 | .no_data_dep_hazard, | 727 | .no_data_dep_hazard, |
| ... | @@ -844,6 +911,16 @@ pub const all_features = blk: { | ... | @@ -844,6 +911,16 @@ pub const all_features = blk: { |
| 844 | .description = "Has mAI instructions", | 911 | .description = "Has mAI instructions", |
| 845 | .dependencies = featureSet(&[_]Feature{}), | 912 | .dependencies = featureSet(&[_]Feature{}), |
| 846 | }; | 913 | }; |
| 914 | result[@intFromEnum(Feature.max_hard_clause_length_32)] = .{ | ||
| 915 | .llvm_name = "max-hard-clause-length-32", | ||
| 916 | .description = "Maximum number of instructions in an explicit S_CLAUSE is 32", | ||
| 917 | .dependencies = featureSet(&[_]Feature{}), | ||
| 918 | }; | ||
| 919 | result[@intFromEnum(Feature.max_hard_clause_length_63)] = .{ | ||
| 920 | .llvm_name = "max-hard-clause-length-63", | ||
| 921 | .description = "Maximum number of instructions in an explicit S_CLAUSE is 63", | ||
| 922 | .dependencies = featureSet(&[_]Feature{}), | ||
| 923 | }; | ||
| 847 | result[@intFromEnum(Feature.max_private_element_size_16)] = .{ | 924 | result[@intFromEnum(Feature.max_private_element_size_16)] = .{ |
| 848 | .llvm_name = "max-private-element-size-16", | 925 | .llvm_name = "max-private-element-size-16", |
| 849 | .description = "Maximum private access size may be 16", | 926 | .description = "Maximum private access size may be 16", |
| ... | @@ -859,6 +936,11 @@ pub const all_features = blk: { | ... | @@ -859,6 +936,11 @@ pub const all_features = blk: { |
| 859 | .description = "Maximum private access size may be 8", | 936 | .description = "Maximum private access size may be 8", |
| 860 | .dependencies = featureSet(&[_]Feature{}), | 937 | .dependencies = featureSet(&[_]Feature{}), |
| 861 | }; | 938 | }; |
| 939 | result[@intFromEnum(Feature.memory_atomic_fadd_f32_denormal_support)] = .{ | ||
| 940 | .llvm_name = "memory-atomic-fadd-f32-denormal-support", | ||
| 941 | .description = "global/flat/buffer atomic fadd for float supports denormal handling", | ||
| 942 | .dependencies = featureSet(&[_]Feature{}), | ||
| 943 | }; | ||
| 862 | result[@intFromEnum(Feature.mfma_inline_literal_bug)] = .{ | 944 | result[@intFromEnum(Feature.mfma_inline_literal_bug)] = .{ |
| 863 | .llvm_name = "mfma-inline-literal-bug", | 945 | .llvm_name = "mfma-inline-literal-bug", |
| 864 | .description = "MFMA cannot use inline literal as SrcC", | 946 | .description = "MFMA cannot use inline literal as SrcC", |
| ... | @@ -939,6 +1021,16 @@ pub const all_features = blk: { | ... | @@ -939,6 +1021,16 @@ pub const all_features = blk: { |
| 939 | .description = "Has v_pk_fmac_f16 instruction", | 1021 | .description = "Has v_pk_fmac_f16 instruction", |
| 940 | .dependencies = featureSet(&[_]Feature{}), | 1022 | .dependencies = featureSet(&[_]Feature{}), |
| 941 | }; | 1023 | }; |
| 1024 | result[@intFromEnum(Feature.precise_memory)] = .{ | ||
| 1025 | .llvm_name = "precise-memory", | ||
| 1026 | .description = "Enable precise memory mode", | ||
| 1027 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1028 | }; | ||
| 1029 | result[@intFromEnum(Feature.priv_enabled_trap2_nop_bug)] = .{ | ||
| 1030 | .llvm_name = "priv-enabled-trap2-nop-bug", | ||
| 1031 | .description = "Hardware that runs with PRIV=1 interpreting 's_trap 2' as a nop bug", | ||
| 1032 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1033 | }; | ||
| 942 | result[@intFromEnum(Feature.promote_alloca)] = .{ | 1034 | result[@intFromEnum(Feature.promote_alloca)] = .{ |
| 943 | .llvm_name = "promote-alloca", | 1035 | .llvm_name = "promote-alloca", |
| 944 | .description = "Enable promote alloca pass", | 1036 | .description = "Enable promote alloca pass", |
| ... | @@ -964,6 +1056,16 @@ pub const all_features = blk: { | ... | @@ -964,6 +1056,16 @@ pub const all_features = blk: { |
| 964 | .description = "Use true 16-bit registers", | 1056 | .description = "Use true 16-bit registers", |
| 965 | .dependencies = featureSet(&[_]Feature{}), | 1057 | .dependencies = featureSet(&[_]Feature{}), |
| 966 | }; | 1058 | }; |
| 1059 | result[@intFromEnum(Feature.required_export_priority)] = .{ | ||
| 1060 | .llvm_name = "required-export-priority", | ||
| 1061 | .description = "Export priority must be explicitly manipulated on GFX11.5", | ||
| 1062 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1063 | }; | ||
| 1064 | result[@intFromEnum(Feature.requires_cov6)] = .{ | ||
| 1065 | .llvm_name = "requires-cov6", | ||
| 1066 | .description = "Target Requires Code Object V6", | ||
| 1067 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1068 | }; | ||
| 967 | result[@intFromEnum(Feature.restricted_soffset)] = .{ | 1069 | result[@intFromEnum(Feature.restricted_soffset)] = .{ |
| 968 | .llvm_name = "restricted-soffset", | 1070 | .llvm_name = "restricted-soffset", |
| 969 | .description = "Has restricted SOffset (immediate not supported).", | 1071 | .description = "Has restricted SOffset (immediate not supported).", |
| ... | @@ -1038,6 +1140,10 @@ pub const all_features = blk: { | ... | @@ -1038,6 +1140,10 @@ pub const all_features = blk: { |
| 1038 | .llvm_name = "sea-islands", | 1140 | .llvm_name = "sea-islands", |
| 1039 | .description = "SEA_ISLANDS GPU generation", | 1141 | .description = "SEA_ISLANDS GPU generation", |
| 1040 | .dependencies = featureSet(&[_]Feature{ | 1142 | .dependencies = featureSet(&[_]Feature{ |
| 1143 | .atomic_fmin_fmax_flat_f32, | ||
| 1144 | .atomic_fmin_fmax_flat_f64, | ||
| 1145 | .atomic_fmin_fmax_global_f32, | ||
| 1146 | .atomic_fmin_fmax_global_f64, | ||
| 1041 | .ci_insts, | 1147 | .ci_insts, |
| 1042 | .default_component_zero, | 1148 | .default_component_zero, |
| 1043 | .ds_src2_insts, | 1149 | .ds_src2_insts, |
| ... | @@ -1087,6 +1193,8 @@ pub const all_features = blk: { | ... | @@ -1087,6 +1193,8 @@ pub const all_features = blk: { |
| 1087 | .llvm_name = "southern-islands", | 1193 | .llvm_name = "southern-islands", |
| 1088 | .description = "SOUTHERN_ISLANDS GPU generation", | 1194 | .description = "SOUTHERN_ISLANDS GPU generation", |
| 1089 | .dependencies = featureSet(&[_]Feature{ | 1195 | .dependencies = featureSet(&[_]Feature{ |
| 1196 | .atomic_fmin_fmax_global_f32, | ||
| 1197 | .atomic_fmin_fmax_global_f64, | ||
| 1090 | .default_component_zero, | 1198 | .default_component_zero, |
| 1091 | .ds_src2_insts, | 1199 | .ds_src2_insts, |
| 1092 | .extended_image_insts, | 1200 | .extended_image_insts, |
| ... | @@ -1365,7 +1473,6 @@ pub const cpu = struct { | ... | @@ -1365,7 +1473,6 @@ pub const cpu = struct { |
| 1365 | .vcmpx_exec_war_hazard, | 1473 | .vcmpx_exec_war_hazard, |
| 1366 | .vcmpx_permlane_hazard, | 1474 | .vcmpx_permlane_hazard, |
| 1367 | .vmem_to_scalar_write_hazard, | 1475 | .vmem_to_scalar_write_hazard, |
| 1368 | .wavefrontsize32, | ||
| 1369 | .xnack_support, | 1476 | .xnack_support, |
| 1370 | }), | 1477 | }), |
| 1371 | }; | 1478 | }; |
| ... | @@ -1402,7 +1509,6 @@ pub const cpu = struct { | ... | @@ -1402,7 +1509,6 @@ pub const cpu = struct { |
| 1402 | .vcmpx_exec_war_hazard, | 1509 | .vcmpx_exec_war_hazard, |
| 1403 | .vcmpx_permlane_hazard, | 1510 | .vcmpx_permlane_hazard, |
| 1404 | .vmem_to_scalar_write_hazard, | 1511 | .vmem_to_scalar_write_hazard, |
| 1405 | .wavefrontsize32, | ||
| 1406 | .xnack_support, | 1512 | .xnack_support, |
| 1407 | }), | 1513 | }), |
| 1408 | }; | 1514 | }; |
| ... | @@ -1439,7 +1545,6 @@ pub const cpu = struct { | ... | @@ -1439,7 +1545,6 @@ pub const cpu = struct { |
| 1439 | .vcmpx_exec_war_hazard, | 1545 | .vcmpx_exec_war_hazard, |
| 1440 | .vcmpx_permlane_hazard, | 1546 | .vcmpx_permlane_hazard, |
| 1441 | .vmem_to_scalar_write_hazard, | 1547 | .vmem_to_scalar_write_hazard, |
| 1442 | .wavefrontsize32, | ||
| 1443 | .xnack_support, | 1548 | .xnack_support, |
| 1444 | }), | 1549 | }), |
| 1445 | }; | 1550 | }; |
| ... | @@ -1471,7 +1576,6 @@ pub const cpu = struct { | ... | @@ -1471,7 +1576,6 @@ pub const cpu = struct { |
| 1471 | .vcmpx_exec_war_hazard, | 1576 | .vcmpx_exec_war_hazard, |
| 1472 | .vcmpx_permlane_hazard, | 1577 | .vcmpx_permlane_hazard, |
| 1473 | .vmem_to_scalar_write_hazard, | 1578 | .vmem_to_scalar_write_hazard, |
| 1474 | .wavefrontsize32, | ||
| 1475 | .xnack_support, | 1579 | .xnack_support, |
| 1476 | }), | 1580 | }), |
| 1477 | }; | 1581 | }; |
| ... | @@ -1494,7 +1598,6 @@ pub const cpu = struct { | ... | @@ -1494,7 +1598,6 @@ pub const cpu = struct { |
| 1494 | .ldsbankcount32, | 1598 | .ldsbankcount32, |
| 1495 | .nsa_encoding, | 1599 | .nsa_encoding, |
| 1496 | .shader_cycles_register, | 1600 | .shader_cycles_register, |
| 1497 | .wavefrontsize32, | ||
| 1498 | }), | 1601 | }), |
| 1499 | }; | 1602 | }; |
| 1500 | pub const gfx1031 = CpuModel{ | 1603 | pub const gfx1031 = CpuModel{ |
| ... | @@ -1516,7 +1619,6 @@ pub const cpu = struct { | ... | @@ -1516,7 +1619,6 @@ pub const cpu = struct { |
| 1516 | .ldsbankcount32, | 1619 | .ldsbankcount32, |
| 1517 | .nsa_encoding, | 1620 | .nsa_encoding, |
| 1518 | .shader_cycles_register, | 1621 | .shader_cycles_register, |
| 1519 | .wavefrontsize32, | ||
| 1520 | }), | 1622 | }), |
| 1521 | }; | 1623 | }; |
| 1522 | pub const gfx1032 = CpuModel{ | 1624 | pub const gfx1032 = CpuModel{ |
| ... | @@ -1538,7 +1640,6 @@ pub const cpu = struct { | ... | @@ -1538,7 +1640,6 @@ pub const cpu = struct { |
| 1538 | .ldsbankcount32, | 1640 | .ldsbankcount32, |
| 1539 | .nsa_encoding, | 1641 | .nsa_encoding, |
| 1540 | .shader_cycles_register, | 1642 | .shader_cycles_register, |
| 1541 | .wavefrontsize32, | ||
| 1542 | }), | 1643 | }), |
| 1543 | }; | 1644 | }; |
| 1544 | pub const gfx1033 = CpuModel{ | 1645 | pub const gfx1033 = CpuModel{ |
| ... | @@ -1560,7 +1661,6 @@ pub const cpu = struct { | ... | @@ -1560,7 +1661,6 @@ pub const cpu = struct { |
| 1560 | .ldsbankcount32, | 1661 | .ldsbankcount32, |
| 1561 | .nsa_encoding, | 1662 | .nsa_encoding, |
| 1562 | .shader_cycles_register, | 1663 | .shader_cycles_register, |
| 1563 | .wavefrontsize32, | ||
| 1564 | }), | 1664 | }), |
| 1565 | }; | 1665 | }; |
| 1566 | pub const gfx1034 = CpuModel{ | 1666 | pub const gfx1034 = CpuModel{ |
| ... | @@ -1582,7 +1682,6 @@ pub const cpu = struct { | ... | @@ -1582,7 +1682,6 @@ pub const cpu = struct { |
| 1582 | .ldsbankcount32, | 1682 | .ldsbankcount32, |
| 1583 | .nsa_encoding, | 1683 | .nsa_encoding, |
| 1584 | .shader_cycles_register, | 1684 | .shader_cycles_register, |
| 1585 | .wavefrontsize32, | ||
| 1586 | }), | 1685 | }), |
| 1587 | }; | 1686 | }; |
| 1588 | pub const gfx1035 = CpuModel{ | 1687 | pub const gfx1035 = CpuModel{ |
| ... | @@ -1604,7 +1703,6 @@ pub const cpu = struct { | ... | @@ -1604,7 +1703,6 @@ pub const cpu = struct { |
| 1604 | .ldsbankcount32, | 1703 | .ldsbankcount32, |
| 1605 | .nsa_encoding, | 1704 | .nsa_encoding, |
| 1606 | .shader_cycles_register, | 1705 | .shader_cycles_register, |
| 1607 | .wavefrontsize32, | ||
| 1608 | }), | 1706 | }), |
| 1609 | }; | 1707 | }; |
| 1610 | pub const gfx1036 = CpuModel{ | 1708 | pub const gfx1036 = CpuModel{ |
| ... | @@ -1626,13 +1724,66 @@ pub const cpu = struct { | ... | @@ -1626,13 +1724,66 @@ pub const cpu = struct { |
| 1626 | .ldsbankcount32, | 1724 | .ldsbankcount32, |
| 1627 | .nsa_encoding, | 1725 | .nsa_encoding, |
| 1628 | .shader_cycles_register, | 1726 | .shader_cycles_register, |
| 1629 | .wavefrontsize32, | 1727 | }), |
| 1728 | }; | ||
| 1729 | pub const gfx10_1_generic = CpuModel{ | ||
| 1730 | .name = "gfx10_1_generic", | ||
| 1731 | .llvm_name = "gfx10-1-generic", | ||
| 1732 | .features = featureSet(&[_]Feature{ | ||
| 1733 | .back_off_barrier, | ||
| 1734 | .dl_insts, | ||
| 1735 | .ds_src2_insts, | ||
| 1736 | .flat_segment_offset_bug, | ||
| 1737 | .get_wave_id_inst, | ||
| 1738 | .gfx10, | ||
| 1739 | .inst_fwd_prefetch_bug, | ||
| 1740 | .lds_branch_vmem_war_hazard, | ||
| 1741 | .lds_misaligned_bug, | ||
| 1742 | .ldsbankcount32, | ||
| 1743 | .mad_mac_f32_insts, | ||
| 1744 | .negative_unaligned_scratch_offset_bug, | ||
| 1745 | .nsa_clause_bug, | ||
| 1746 | .nsa_encoding, | ||
| 1747 | .nsa_to_vmem_bug, | ||
| 1748 | .offset_3f_bug, | ||
| 1749 | .requires_cov6, | ||
| 1750 | .scalar_atomics, | ||
| 1751 | .scalar_flat_scratch_insts, | ||
| 1752 | .scalar_stores, | ||
| 1753 | .smem_to_vector_write_hazard, | ||
| 1754 | .vcmpx_exec_war_hazard, | ||
| 1755 | .vcmpx_permlane_hazard, | ||
| 1756 | .vmem_to_scalar_write_hazard, | ||
| 1757 | .xnack_support, | ||
| 1758 | }), | ||
| 1759 | }; | ||
| 1760 | pub const gfx10_3_generic = CpuModel{ | ||
| 1761 | .name = "gfx10_3_generic", | ||
| 1762 | .llvm_name = "gfx10-3-generic", | ||
| 1763 | .features = featureSet(&[_]Feature{ | ||
| 1764 | .back_off_barrier, | ||
| 1765 | .dl_insts, | ||
| 1766 | .dot10_insts, | ||
| 1767 | .dot1_insts, | ||
| 1768 | .dot2_insts, | ||
| 1769 | .dot5_insts, | ||
| 1770 | .dot6_insts, | ||
| 1771 | .dot7_insts, | ||
| 1772 | .gfx10, | ||
| 1773 | .gfx10_3_insts, | ||
| 1774 | .gfx10_a_encoding, | ||
| 1775 | .gfx10_b_encoding, | ||
| 1776 | .ldsbankcount32, | ||
| 1777 | .nsa_encoding, | ||
| 1778 | .requires_cov6, | ||
| 1779 | .shader_cycles_register, | ||
| 1630 | }), | 1780 | }), |
| 1631 | }; | 1781 | }; |
| 1632 | pub const gfx1100 = CpuModel{ | 1782 | pub const gfx1100 = CpuModel{ |
| 1633 | .name = "gfx1100", | 1783 | .name = "gfx1100", |
| 1634 | .llvm_name = "gfx1100", | 1784 | .llvm_name = "gfx1100", |
| 1635 | .features = featureSet(&[_]Feature{ | 1785 | .features = featureSet(&[_]Feature{ |
| 1786 | .allocate1_5xvgprs, | ||
| 1636 | .architected_flat_scratch, | 1787 | .architected_flat_scratch, |
| 1637 | .atomic_fadd_no_rtn_insts, | 1788 | .atomic_fadd_no_rtn_insts, |
| 1638 | .atomic_fadd_rtn_insts, | 1789 | .atomic_fadd_rtn_insts, |
| ... | @@ -1644,25 +1795,26 @@ pub const cpu = struct { | ... | @@ -1644,25 +1795,26 @@ pub const cpu = struct { |
| 1644 | .dot9_insts, | 1795 | .dot9_insts, |
| 1645 | .flat_atomic_fadd_f32_inst, | 1796 | .flat_atomic_fadd_f32_inst, |
| 1646 | .gfx11, | 1797 | .gfx11, |
| 1647 | .gfx11_full_vgprs, | ||
| 1648 | .image_insts, | 1798 | .image_insts, |
| 1649 | .ldsbankcount32, | 1799 | .ldsbankcount32, |
| 1650 | .mad_intra_fwd_bug, | 1800 | .mad_intra_fwd_bug, |
| 1801 | .memory_atomic_fadd_f32_denormal_support, | ||
| 1651 | .msaa_load_dst_sel_bug, | 1802 | .msaa_load_dst_sel_bug, |
| 1652 | .nsa_encoding, | 1803 | .nsa_encoding, |
| 1653 | .packed_tid, | 1804 | .packed_tid, |
| 1654 | .partial_nsa_encoding, | 1805 | .partial_nsa_encoding, |
| 1806 | .priv_enabled_trap2_nop_bug, | ||
| 1655 | .shader_cycles_register, | 1807 | .shader_cycles_register, |
| 1656 | .user_sgpr_init16_bug, | 1808 | .user_sgpr_init16_bug, |
| 1657 | .valu_trans_use_hazard, | 1809 | .valu_trans_use_hazard, |
| 1658 | .vcmpx_permlane_hazard, | 1810 | .vcmpx_permlane_hazard, |
| 1659 | .wavefrontsize32, | ||
| 1660 | }), | 1811 | }), |
| 1661 | }; | 1812 | }; |
| 1662 | pub const gfx1101 = CpuModel{ | 1813 | pub const gfx1101 = CpuModel{ |
| 1663 | .name = "gfx1101", | 1814 | .name = "gfx1101", |
| 1664 | .llvm_name = "gfx1101", | 1815 | .llvm_name = "gfx1101", |
| 1665 | .features = featureSet(&[_]Feature{ | 1816 | .features = featureSet(&[_]Feature{ |
| 1817 | .allocate1_5xvgprs, | ||
| 1666 | .architected_flat_scratch, | 1818 | .architected_flat_scratch, |
| 1667 | .atomic_fadd_no_rtn_insts, | 1819 | .atomic_fadd_no_rtn_insts, |
| 1668 | .atomic_fadd_rtn_insts, | 1820 | .atomic_fadd_rtn_insts, |
| ... | @@ -1674,18 +1826,18 @@ pub const cpu = struct { | ... | @@ -1674,18 +1826,18 @@ pub const cpu = struct { |
| 1674 | .dot9_insts, | 1826 | .dot9_insts, |
| 1675 | .flat_atomic_fadd_f32_inst, | 1827 | .flat_atomic_fadd_f32_inst, |
| 1676 | .gfx11, | 1828 | .gfx11, |
| 1677 | .gfx11_full_vgprs, | ||
| 1678 | .image_insts, | 1829 | .image_insts, |
| 1679 | .ldsbankcount32, | 1830 | .ldsbankcount32, |
| 1680 | .mad_intra_fwd_bug, | 1831 | .mad_intra_fwd_bug, |
| 1832 | .memory_atomic_fadd_f32_denormal_support, | ||
| 1681 | .msaa_load_dst_sel_bug, | 1833 | .msaa_load_dst_sel_bug, |
| 1682 | .nsa_encoding, | 1834 | .nsa_encoding, |
| 1683 | .packed_tid, | 1835 | .packed_tid, |
| 1684 | .partial_nsa_encoding, | 1836 | .partial_nsa_encoding, |
| 1837 | .priv_enabled_trap2_nop_bug, | ||
| 1685 | .shader_cycles_register, | 1838 | .shader_cycles_register, |
| 1686 | .valu_trans_use_hazard, | 1839 | .valu_trans_use_hazard, |
| 1687 | .vcmpx_permlane_hazard, | 1840 | .vcmpx_permlane_hazard, |
| 1688 | .wavefrontsize32, | ||
| 1689 | }), | 1841 | }), |
| 1690 | }; | 1842 | }; |
| 1691 | pub const gfx1102 = CpuModel{ | 1843 | pub const gfx1102 = CpuModel{ |
| ... | @@ -1706,15 +1858,16 @@ pub const cpu = struct { | ... | @@ -1706,15 +1858,16 @@ pub const cpu = struct { |
| 1706 | .image_insts, | 1858 | .image_insts, |
| 1707 | .ldsbankcount32, | 1859 | .ldsbankcount32, |
| 1708 | .mad_intra_fwd_bug, | 1860 | .mad_intra_fwd_bug, |
| 1861 | .memory_atomic_fadd_f32_denormal_support, | ||
| 1709 | .msaa_load_dst_sel_bug, | 1862 | .msaa_load_dst_sel_bug, |
| 1710 | .nsa_encoding, | 1863 | .nsa_encoding, |
| 1711 | .packed_tid, | 1864 | .packed_tid, |
| 1712 | .partial_nsa_encoding, | 1865 | .partial_nsa_encoding, |
| 1866 | .priv_enabled_trap2_nop_bug, | ||
| 1713 | .shader_cycles_register, | 1867 | .shader_cycles_register, |
| 1714 | .user_sgpr_init16_bug, | 1868 | .user_sgpr_init16_bug, |
| 1715 | .valu_trans_use_hazard, | 1869 | .valu_trans_use_hazard, |
| 1716 | .vcmpx_permlane_hazard, | 1870 | .vcmpx_permlane_hazard, |
| 1717 | .wavefrontsize32, | ||
| 1718 | }), | 1871 | }), |
| 1719 | }; | 1872 | }; |
| 1720 | pub const gfx1103 = CpuModel{ | 1873 | pub const gfx1103 = CpuModel{ |
| ... | @@ -1735,14 +1888,15 @@ pub const cpu = struct { | ... | @@ -1735,14 +1888,15 @@ pub const cpu = struct { |
| 1735 | .image_insts, | 1888 | .image_insts, |
| 1736 | .ldsbankcount32, | 1889 | .ldsbankcount32, |
| 1737 | .mad_intra_fwd_bug, | 1890 | .mad_intra_fwd_bug, |
| 1891 | .memory_atomic_fadd_f32_denormal_support, | ||
| 1738 | .msaa_load_dst_sel_bug, | 1892 | .msaa_load_dst_sel_bug, |
| 1739 | .nsa_encoding, | 1893 | .nsa_encoding, |
| 1740 | .packed_tid, | 1894 | .packed_tid, |
| 1741 | .partial_nsa_encoding, | 1895 | .partial_nsa_encoding, |
| 1896 | .priv_enabled_trap2_nop_bug, | ||
| 1742 | .shader_cycles_register, | 1897 | .shader_cycles_register, |
| 1743 | .valu_trans_use_hazard, | 1898 | .valu_trans_use_hazard, |
| 1744 | .vcmpx_permlane_hazard, | 1899 | .vcmpx_permlane_hazard, |
| 1745 | .wavefrontsize32, | ||
| 1746 | }), | 1900 | }), |
| 1747 | }; | 1901 | }; |
| 1748 | pub const gfx1150 = CpuModel{ | 1902 | pub const gfx1150 = CpuModel{ |
| ... | @@ -1763,21 +1917,22 @@ pub const cpu = struct { | ... | @@ -1763,21 +1917,22 @@ pub const cpu = struct { |
| 1763 | .gfx11, | 1917 | .gfx11, |
| 1764 | .image_insts, | 1918 | .image_insts, |
| 1765 | .ldsbankcount32, | 1919 | .ldsbankcount32, |
| 1766 | .mad_intra_fwd_bug, | 1920 | .memory_atomic_fadd_f32_denormal_support, |
| 1767 | .nsa_encoding, | 1921 | .nsa_encoding, |
| 1768 | .packed_tid, | 1922 | .packed_tid, |
| 1769 | .partial_nsa_encoding, | 1923 | .partial_nsa_encoding, |
| 1924 | .required_export_priority, | ||
| 1770 | .salu_float, | 1925 | .salu_float, |
| 1771 | .shader_cycles_register, | 1926 | .shader_cycles_register, |
| 1772 | .vcmpx_permlane_hazard, | 1927 | .vcmpx_permlane_hazard, |
| 1773 | .vgpr_singleuse_hint, | 1928 | .vgpr_singleuse_hint, |
| 1774 | .wavefrontsize32, | ||
| 1775 | }), | 1929 | }), |
| 1776 | }; | 1930 | }; |
| 1777 | pub const gfx1151 = CpuModel{ | 1931 | pub const gfx1151 = CpuModel{ |
| 1778 | .name = "gfx1151", | 1932 | .name = "gfx1151", |
| 1779 | .llvm_name = "gfx1151", | 1933 | .llvm_name = "gfx1151", |
| 1780 | .features = featureSet(&[_]Feature{ | 1934 | .features = featureSet(&[_]Feature{ |
| 1935 | .allocate1_5xvgprs, | ||
| 1781 | .architected_flat_scratch, | 1936 | .architected_flat_scratch, |
| 1782 | .atomic_fadd_no_rtn_insts, | 1937 | .atomic_fadd_no_rtn_insts, |
| 1783 | .atomic_fadd_rtn_insts, | 1938 | .atomic_fadd_rtn_insts, |
| ... | @@ -1790,27 +1945,89 @@ pub const cpu = struct { | ... | @@ -1790,27 +1945,89 @@ pub const cpu = struct { |
| 1790 | .dpp_src1_sgpr, | 1945 | .dpp_src1_sgpr, |
| 1791 | .flat_atomic_fadd_f32_inst, | 1946 | .flat_atomic_fadd_f32_inst, |
| 1792 | .gfx11, | 1947 | .gfx11, |
| 1793 | .gfx11_full_vgprs, | ||
| 1794 | .image_insts, | 1948 | .image_insts, |
| 1795 | .ldsbankcount32, | 1949 | .ldsbankcount32, |
| 1796 | .mad_intra_fwd_bug, | 1950 | .memory_atomic_fadd_f32_denormal_support, |
| 1951 | .nsa_encoding, | ||
| 1952 | .packed_tid, | ||
| 1953 | .partial_nsa_encoding, | ||
| 1954 | .required_export_priority, | ||
| 1955 | .salu_float, | ||
| 1956 | .shader_cycles_register, | ||
| 1957 | .vcmpx_permlane_hazard, | ||
| 1958 | .vgpr_singleuse_hint, | ||
| 1959 | }), | ||
| 1960 | }; | ||
| 1961 | pub const gfx1152 = CpuModel{ | ||
| 1962 | .name = "gfx1152", | ||
| 1963 | .llvm_name = "gfx1152", | ||
| 1964 | .features = featureSet(&[_]Feature{ | ||
| 1965 | .architected_flat_scratch, | ||
| 1966 | .atomic_fadd_no_rtn_insts, | ||
| 1967 | .atomic_fadd_rtn_insts, | ||
| 1968 | .dl_insts, | ||
| 1969 | .dot10_insts, | ||
| 1970 | .dot5_insts, | ||
| 1971 | .dot7_insts, | ||
| 1972 | .dot8_insts, | ||
| 1973 | .dot9_insts, | ||
| 1974 | .dpp_src1_sgpr, | ||
| 1975 | .flat_atomic_fadd_f32_inst, | ||
| 1976 | .gfx11, | ||
| 1977 | .image_insts, | ||
| 1978 | .ldsbankcount32, | ||
| 1979 | .memory_atomic_fadd_f32_denormal_support, | ||
| 1797 | .nsa_encoding, | 1980 | .nsa_encoding, |
| 1798 | .packed_tid, | 1981 | .packed_tid, |
| 1799 | .partial_nsa_encoding, | 1982 | .partial_nsa_encoding, |
| 1983 | .required_export_priority, | ||
| 1800 | .salu_float, | 1984 | .salu_float, |
| 1801 | .shader_cycles_register, | 1985 | .shader_cycles_register, |
| 1802 | .vcmpx_permlane_hazard, | 1986 | .vcmpx_permlane_hazard, |
| 1803 | .vgpr_singleuse_hint, | 1987 | .vgpr_singleuse_hint, |
| 1804 | .wavefrontsize32, | 1988 | }), |
| 1989 | }; | ||
| 1990 | pub const gfx11_generic = CpuModel{ | ||
| 1991 | .name = "gfx11_generic", | ||
| 1992 | .llvm_name = "gfx11-generic", | ||
| 1993 | .features = featureSet(&[_]Feature{ | ||
| 1994 | .architected_flat_scratch, | ||
| 1995 | .atomic_fadd_no_rtn_insts, | ||
| 1996 | .atomic_fadd_rtn_insts, | ||
| 1997 | .dl_insts, | ||
| 1998 | .dot10_insts, | ||
| 1999 | .dot5_insts, | ||
| 2000 | .dot7_insts, | ||
| 2001 | .dot8_insts, | ||
| 2002 | .dot9_insts, | ||
| 2003 | .flat_atomic_fadd_f32_inst, | ||
| 2004 | .gfx11, | ||
| 2005 | .image_insts, | ||
| 2006 | .ldsbankcount32, | ||
| 2007 | .mad_intra_fwd_bug, | ||
| 2008 | .memory_atomic_fadd_f32_denormal_support, | ||
| 2009 | .msaa_load_dst_sel_bug, | ||
| 2010 | .nsa_encoding, | ||
| 2011 | .packed_tid, | ||
| 2012 | .partial_nsa_encoding, | ||
| 2013 | .priv_enabled_trap2_nop_bug, | ||
| 2014 | .required_export_priority, | ||
| 2015 | .requires_cov6, | ||
| 2016 | .shader_cycles_register, | ||
| 2017 | .user_sgpr_init16_bug, | ||
| 2018 | .valu_trans_use_hazard, | ||
| 2019 | .vcmpx_permlane_hazard, | ||
| 1805 | }), | 2020 | }), |
| 1806 | }; | 2021 | }; |
| 1807 | pub const gfx1200 = CpuModel{ | 2022 | pub const gfx1200 = CpuModel{ |
| 1808 | .name = "gfx1200", | 2023 | .name = "gfx1200", |
| 1809 | .llvm_name = "gfx1200", | 2024 | .llvm_name = "gfx1200", |
| 1810 | .features = featureSet(&[_]Feature{ | 2025 | .features = featureSet(&[_]Feature{ |
| 2026 | .allocate1_5xvgprs, | ||
| 1811 | .architected_flat_scratch, | 2027 | .architected_flat_scratch, |
| 1812 | .architected_sgprs, | 2028 | .architected_sgprs, |
| 1813 | .atomic_buffer_global_pk_add_f16_insts, | 2029 | .atomic_buffer_global_pk_add_f16_insts, |
| 2030 | .atomic_buffer_pk_add_bf16_inst, | ||
| 1814 | .atomic_ds_pk_add_16_insts, | 2031 | .atomic_ds_pk_add_16_insts, |
| 1815 | .atomic_fadd_no_rtn_insts, | 2032 | .atomic_fadd_no_rtn_insts, |
| 1816 | .atomic_fadd_rtn_insts, | 2033 | .atomic_fadd_rtn_insts, |
| ... | @@ -1818,6 +2035,7 @@ pub const cpu = struct { | ... | @@ -1818,6 +2035,7 @@ pub const cpu = struct { |
| 1818 | .atomic_global_pk_add_bf16_inst, | 2035 | .atomic_global_pk_add_bf16_inst, |
| 1819 | .dl_insts, | 2036 | .dl_insts, |
| 1820 | .dot10_insts, | 2037 | .dot10_insts, |
| 2038 | .dot11_insts, | ||
| 1821 | .dot7_insts, | 2039 | .dot7_insts, |
| 1822 | .dot8_insts, | 2040 | .dot8_insts, |
| 1823 | .dot9_insts, | 2041 | .dot9_insts, |
| ... | @@ -1828,6 +2046,7 @@ pub const cpu = struct { | ... | @@ -1828,6 +2046,7 @@ pub const cpu = struct { |
| 1828 | .gfx12, | 2046 | .gfx12, |
| 1829 | .image_insts, | 2047 | .image_insts, |
| 1830 | .ldsbankcount32, | 2048 | .ldsbankcount32, |
| 2049 | .memory_atomic_fadd_f32_denormal_support, | ||
| 1831 | .nsa_encoding, | 2050 | .nsa_encoding, |
| 1832 | .packed_tid, | 2051 | .packed_tid, |
| 1833 | .partial_nsa_encoding, | 2052 | .partial_nsa_encoding, |
| ... | @@ -1838,16 +2057,17 @@ pub const cpu = struct { | ... | @@ -1838,16 +2057,17 @@ pub const cpu = struct { |
| 1838 | .shader_cycles_hi_lo_registers, | 2057 | .shader_cycles_hi_lo_registers, |
| 1839 | .vcmpx_permlane_hazard, | 2058 | .vcmpx_permlane_hazard, |
| 1840 | .vgpr_singleuse_hint, | 2059 | .vgpr_singleuse_hint, |
| 1841 | .wavefrontsize32, | ||
| 1842 | }), | 2060 | }), |
| 1843 | }; | 2061 | }; |
| 1844 | pub const gfx1201 = CpuModel{ | 2062 | pub const gfx1201 = CpuModel{ |
| 1845 | .name = "gfx1201", | 2063 | .name = "gfx1201", |
| 1846 | .llvm_name = "gfx1201", | 2064 | .llvm_name = "gfx1201", |
| 1847 | .features = featureSet(&[_]Feature{ | 2065 | .features = featureSet(&[_]Feature{ |
| 2066 | .allocate1_5xvgprs, | ||
| 1848 | .architected_flat_scratch, | 2067 | .architected_flat_scratch, |
| 1849 | .architected_sgprs, | 2068 | .architected_sgprs, |
| 1850 | .atomic_buffer_global_pk_add_f16_insts, | 2069 | .atomic_buffer_global_pk_add_f16_insts, |
| 2070 | .atomic_buffer_pk_add_bf16_inst, | ||
| 1851 | .atomic_ds_pk_add_16_insts, | 2071 | .atomic_ds_pk_add_16_insts, |
| 1852 | .atomic_fadd_no_rtn_insts, | 2072 | .atomic_fadd_no_rtn_insts, |
| 1853 | .atomic_fadd_rtn_insts, | 2073 | .atomic_fadd_rtn_insts, |
| ... | @@ -1855,6 +2075,7 @@ pub const cpu = struct { | ... | @@ -1855,6 +2075,7 @@ pub const cpu = struct { |
| 1855 | .atomic_global_pk_add_bf16_inst, | 2075 | .atomic_global_pk_add_bf16_inst, |
| 1856 | .dl_insts, | 2076 | .dl_insts, |
| 1857 | .dot10_insts, | 2077 | .dot10_insts, |
| 2078 | .dot11_insts, | ||
| 1858 | .dot7_insts, | 2079 | .dot7_insts, |
| 1859 | .dot8_insts, | 2080 | .dot8_insts, |
| 1860 | .dot9_insts, | 2081 | .dot9_insts, |
| ... | @@ -1865,6 +2086,7 @@ pub const cpu = struct { | ... | @@ -1865,6 +2086,7 @@ pub const cpu = struct { |
| 1865 | .gfx12, | 2086 | .gfx12, |
| 1866 | .image_insts, | 2087 | .image_insts, |
| 1867 | .ldsbankcount32, | 2088 | .ldsbankcount32, |
| 2089 | .memory_atomic_fadd_f32_denormal_support, | ||
| 1868 | .nsa_encoding, | 2090 | .nsa_encoding, |
| 1869 | .packed_tid, | 2091 | .packed_tid, |
| 1870 | .partial_nsa_encoding, | 2092 | .partial_nsa_encoding, |
| ... | @@ -1875,7 +2097,47 @@ pub const cpu = struct { | ... | @@ -1875,7 +2097,47 @@ pub const cpu = struct { |
| 1875 | .shader_cycles_hi_lo_registers, | 2097 | .shader_cycles_hi_lo_registers, |
| 1876 | .vcmpx_permlane_hazard, | 2098 | .vcmpx_permlane_hazard, |
| 1877 | .vgpr_singleuse_hint, | 2099 | .vgpr_singleuse_hint, |
| 1878 | .wavefrontsize32, | 2100 | }), |
| 2101 | }; | ||
| 2102 | pub const gfx12_generic = CpuModel{ | ||
| 2103 | .name = "gfx12_generic", | ||
| 2104 | .llvm_name = "gfx12-generic", | ||
| 2105 | .features = featureSet(&[_]Feature{ | ||
| 2106 | .allocate1_5xvgprs, | ||
| 2107 | .architected_flat_scratch, | ||
| 2108 | .architected_sgprs, | ||
| 2109 | .atomic_buffer_global_pk_add_f16_insts, | ||
| 2110 | .atomic_buffer_pk_add_bf16_inst, | ||
| 2111 | .atomic_ds_pk_add_16_insts, | ||
| 2112 | .atomic_fadd_no_rtn_insts, | ||
| 2113 | .atomic_fadd_rtn_insts, | ||
| 2114 | .atomic_flat_pk_add_16_insts, | ||
| 2115 | .atomic_global_pk_add_bf16_inst, | ||
| 2116 | .dl_insts, | ||
| 2117 | .dot10_insts, | ||
| 2118 | .dot11_insts, | ||
| 2119 | .dot7_insts, | ||
| 2120 | .dot8_insts, | ||
| 2121 | .dot9_insts, | ||
| 2122 | .dpp_src1_sgpr, | ||
| 2123 | .extended_image_insts, | ||
| 2124 | .flat_atomic_fadd_f32_inst, | ||
| 2125 | .fp8_conversion_insts, | ||
| 2126 | .gfx12, | ||
| 2127 | .image_insts, | ||
| 2128 | .ldsbankcount32, | ||
| 2129 | .memory_atomic_fadd_f32_denormal_support, | ||
| 2130 | .nsa_encoding, | ||
| 2131 | .packed_tid, | ||
| 2132 | .partial_nsa_encoding, | ||
| 2133 | .pseudo_scalar_trans, | ||
| 2134 | .requires_cov6, | ||
| 2135 | .restricted_soffset, | ||
| 2136 | .salu_float, | ||
| 2137 | .scalar_dwordx3_loads, | ||
| 2138 | .shader_cycles_hi_lo_registers, | ||
| 2139 | .vcmpx_permlane_hazard, | ||
| 2140 | .vgpr_singleuse_hint, | ||
| 1879 | }), | 2141 | }), |
| 1880 | }; | 2142 | }; |
| 1881 | pub const gfx600 = CpuModel{ | 2143 | pub const gfx600 = CpuModel{ |
| ... | @@ -2124,6 +2386,8 @@ pub const cpu = struct { | ... | @@ -2124,6 +2386,8 @@ pub const cpu = struct { |
| 2124 | .atomic_buffer_global_pk_add_f16_insts, | 2386 | .atomic_buffer_global_pk_add_f16_insts, |
| 2125 | .atomic_fadd_no_rtn_insts, | 2387 | .atomic_fadd_no_rtn_insts, |
| 2126 | .atomic_fadd_rtn_insts, | 2388 | .atomic_fadd_rtn_insts, |
| 2389 | .atomic_fmin_fmax_flat_f64, | ||
| 2390 | .atomic_fmin_fmax_global_f64, | ||
| 2127 | .back_off_barrier, | 2391 | .back_off_barrier, |
| 2128 | .dl_insts, | 2392 | .dl_insts, |
| 2129 | .dot10_insts, | 2393 | .dot10_insts, |
| ... | @@ -2135,6 +2399,7 @@ pub const cpu = struct { | ... | @@ -2135,6 +2399,7 @@ pub const cpu = struct { |
| 2135 | .dot6_insts, | 2399 | .dot6_insts, |
| 2136 | .dot7_insts, | 2400 | .dot7_insts, |
| 2137 | .dpp_64bit, | 2401 | .dpp_64bit, |
| 2402 | .flat_buffer_global_fadd_f64_inst, | ||
| 2138 | .fma_mix_insts, | 2403 | .fma_mix_insts, |
| 2139 | .fmacf64_inst, | 2404 | .fmacf64_inst, |
| 2140 | .full_rate_64_ops, | 2405 | .full_rate_64_ops, |
| ... | @@ -2170,12 +2435,15 @@ pub const cpu = struct { | ... | @@ -2170,12 +2435,15 @@ pub const cpu = struct { |
| 2170 | .name = "gfx940", | 2435 | .name = "gfx940", |
| 2171 | .llvm_name = "gfx940", | 2436 | .llvm_name = "gfx940", |
| 2172 | .features = featureSet(&[_]Feature{ | 2437 | .features = featureSet(&[_]Feature{ |
| 2438 | .agent_scope_fine_grained_remote_memory_atomics, | ||
| 2173 | .architected_flat_scratch, | 2439 | .architected_flat_scratch, |
| 2174 | .atomic_buffer_global_pk_add_f16_insts, | 2440 | .atomic_buffer_global_pk_add_f16_insts, |
| 2175 | .atomic_ds_pk_add_16_insts, | 2441 | .atomic_ds_pk_add_16_insts, |
| 2176 | .atomic_fadd_no_rtn_insts, | 2442 | .atomic_fadd_no_rtn_insts, |
| 2177 | .atomic_fadd_rtn_insts, | 2443 | .atomic_fadd_rtn_insts, |
| 2178 | .atomic_flat_pk_add_16_insts, | 2444 | .atomic_flat_pk_add_16_insts, |
| 2445 | .atomic_fmin_fmax_flat_f64, | ||
| 2446 | .atomic_fmin_fmax_global_f64, | ||
| 2179 | .atomic_global_pk_add_bf16_inst, | 2447 | .atomic_global_pk_add_bf16_inst, |
| 2180 | .back_off_barrier, | 2448 | .back_off_barrier, |
| 2181 | .dl_insts, | 2449 | .dl_insts, |
| ... | @@ -2189,6 +2457,7 @@ pub const cpu = struct { | ... | @@ -2189,6 +2457,7 @@ pub const cpu = struct { |
| 2189 | .dot7_insts, | 2457 | .dot7_insts, |
| 2190 | .dpp_64bit, | 2458 | .dpp_64bit, |
| 2191 | .flat_atomic_fadd_f32_inst, | 2459 | .flat_atomic_fadd_f32_inst, |
| 2460 | .flat_buffer_global_fadd_f64_inst, | ||
| 2192 | .fma_mix_insts, | 2461 | .fma_mix_insts, |
| 2193 | .fmacf64_inst, | 2462 | .fmacf64_inst, |
| 2194 | .force_store_sc0_sc1, | 2463 | .force_store_sc0_sc1, |
| ... | @@ -2201,6 +2470,7 @@ pub const cpu = struct { | ... | @@ -2201,6 +2470,7 @@ pub const cpu = struct { |
| 2201 | .kernarg_preload, | 2470 | .kernarg_preload, |
| 2202 | .ldsbankcount32, | 2471 | .ldsbankcount32, |
| 2203 | .mai_insts, | 2472 | .mai_insts, |
| 2473 | .memory_atomic_fadd_f32_denormal_support, | ||
| 2204 | .packed_fp32_ops, | 2474 | .packed_fp32_ops, |
| 2205 | .packed_tid, | 2475 | .packed_tid, |
| 2206 | .pk_fmac_f16_inst, | 2476 | .pk_fmac_f16_inst, |
| ... | @@ -2211,12 +2481,15 @@ pub const cpu = struct { | ... | @@ -2211,12 +2481,15 @@ pub const cpu = struct { |
| 2211 | .name = "gfx941", | 2481 | .name = "gfx941", |
| 2212 | .llvm_name = "gfx941", | 2482 | .llvm_name = "gfx941", |
| 2213 | .features = featureSet(&[_]Feature{ | 2483 | .features = featureSet(&[_]Feature{ |
| 2484 | .agent_scope_fine_grained_remote_memory_atomics, | ||
| 2214 | .architected_flat_scratch, | 2485 | .architected_flat_scratch, |
| 2215 | .atomic_buffer_global_pk_add_f16_insts, | 2486 | .atomic_buffer_global_pk_add_f16_insts, |
| 2216 | .atomic_ds_pk_add_16_insts, | 2487 | .atomic_ds_pk_add_16_insts, |
| 2217 | .atomic_fadd_no_rtn_insts, | 2488 | .atomic_fadd_no_rtn_insts, |
| 2218 | .atomic_fadd_rtn_insts, | 2489 | .atomic_fadd_rtn_insts, |
| 2219 | .atomic_flat_pk_add_16_insts, | 2490 | .atomic_flat_pk_add_16_insts, |
| 2491 | .atomic_fmin_fmax_flat_f64, | ||
| 2492 | .atomic_fmin_fmax_global_f64, | ||
| 2220 | .atomic_global_pk_add_bf16_inst, | 2493 | .atomic_global_pk_add_bf16_inst, |
| 2221 | .back_off_barrier, | 2494 | .back_off_barrier, |
| 2222 | .dl_insts, | 2495 | .dl_insts, |
| ... | @@ -2230,6 +2503,7 @@ pub const cpu = struct { | ... | @@ -2230,6 +2503,7 @@ pub const cpu = struct { |
| 2230 | .dot7_insts, | 2503 | .dot7_insts, |
| 2231 | .dpp_64bit, | 2504 | .dpp_64bit, |
| 2232 | .flat_atomic_fadd_f32_inst, | 2505 | .flat_atomic_fadd_f32_inst, |
| 2506 | .flat_buffer_global_fadd_f64_inst, | ||
| 2233 | .fma_mix_insts, | 2507 | .fma_mix_insts, |
| 2234 | .fmacf64_inst, | 2508 | .fmacf64_inst, |
| 2235 | .force_store_sc0_sc1, | 2509 | .force_store_sc0_sc1, |
| ... | @@ -2242,6 +2516,7 @@ pub const cpu = struct { | ... | @@ -2242,6 +2516,7 @@ pub const cpu = struct { |
| 2242 | .kernarg_preload, | 2516 | .kernarg_preload, |
| 2243 | .ldsbankcount32, | 2517 | .ldsbankcount32, |
| 2244 | .mai_insts, | 2518 | .mai_insts, |
| 2519 | .memory_atomic_fadd_f32_denormal_support, | ||
| 2245 | .packed_fp32_ops, | 2520 | .packed_fp32_ops, |
| 2246 | .packed_tid, | 2521 | .packed_tid, |
| 2247 | .pk_fmac_f16_inst, | 2522 | .pk_fmac_f16_inst, |
| ... | @@ -2252,12 +2527,15 @@ pub const cpu = struct { | ... | @@ -2252,12 +2527,15 @@ pub const cpu = struct { |
| 2252 | .name = "gfx942", | 2527 | .name = "gfx942", |
| 2253 | .llvm_name = "gfx942", | 2528 | .llvm_name = "gfx942", |
| 2254 | .features = featureSet(&[_]Feature{ | 2529 | .features = featureSet(&[_]Feature{ |
| 2530 | .agent_scope_fine_grained_remote_memory_atomics, | ||
| 2255 | .architected_flat_scratch, | 2531 | .architected_flat_scratch, |
| 2256 | .atomic_buffer_global_pk_add_f16_insts, | 2532 | .atomic_buffer_global_pk_add_f16_insts, |
| 2257 | .atomic_ds_pk_add_16_insts, | 2533 | .atomic_ds_pk_add_16_insts, |
| 2258 | .atomic_fadd_no_rtn_insts, | 2534 | .atomic_fadd_no_rtn_insts, |
| 2259 | .atomic_fadd_rtn_insts, | 2535 | .atomic_fadd_rtn_insts, |
| 2260 | .atomic_flat_pk_add_16_insts, | 2536 | .atomic_flat_pk_add_16_insts, |
| 2537 | .atomic_fmin_fmax_flat_f64, | ||
| 2538 | .atomic_fmin_fmax_global_f64, | ||
| 2261 | .atomic_global_pk_add_bf16_inst, | 2539 | .atomic_global_pk_add_bf16_inst, |
| 2262 | .back_off_barrier, | 2540 | .back_off_barrier, |
| 2263 | .dl_insts, | 2541 | .dl_insts, |
| ... | @@ -2271,6 +2549,7 @@ pub const cpu = struct { | ... | @@ -2271,6 +2549,7 @@ pub const cpu = struct { |
| 2271 | .dot7_insts, | 2549 | .dot7_insts, |
| 2272 | .dpp_64bit, | 2550 | .dpp_64bit, |
| 2273 | .flat_atomic_fadd_f32_inst, | 2551 | .flat_atomic_fadd_f32_inst, |
| 2552 | .flat_buffer_global_fadd_f64_inst, | ||
| 2274 | .fma_mix_insts, | 2553 | .fma_mix_insts, |
| 2275 | .fmacf64_inst, | 2554 | .fmacf64_inst, |
| 2276 | .fp8_conversion_insts, | 2555 | .fp8_conversion_insts, |
| ... | @@ -2282,12 +2561,28 @@ pub const cpu = struct { | ... | @@ -2282,12 +2561,28 @@ pub const cpu = struct { |
| 2282 | .kernarg_preload, | 2561 | .kernarg_preload, |
| 2283 | .ldsbankcount32, | 2562 | .ldsbankcount32, |
| 2284 | .mai_insts, | 2563 | .mai_insts, |
| 2564 | .memory_atomic_fadd_f32_denormal_support, | ||
| 2285 | .packed_fp32_ops, | 2565 | .packed_fp32_ops, |
| 2286 | .packed_tid, | 2566 | .packed_tid, |
| 2287 | .pk_fmac_f16_inst, | 2567 | .pk_fmac_f16_inst, |
| 2288 | .sramecc_support, | 2568 | .sramecc_support, |
| 2289 | }), | 2569 | }), |
| 2290 | }; | 2570 | }; |
| 2571 | pub const gfx9_generic = CpuModel{ | ||
| 2572 | .name = "gfx9_generic", | ||
| 2573 | .llvm_name = "gfx9-generic", | ||
| 2574 | .features = featureSet(&[_]Feature{ | ||
| 2575 | .ds_src2_insts, | ||
| 2576 | .extended_image_insts, | ||
| 2577 | .gds, | ||
| 2578 | .gfx9, | ||
| 2579 | .image_gather4_d16_bug, | ||
| 2580 | .image_insts, | ||
| 2581 | .ldsbankcount32, | ||
| 2582 | .mad_mac_f32_insts, | ||
| 2583 | .requires_cov6, | ||
| 2584 | }), | ||
| 2585 | }; | ||
| 2291 | pub const hainan = CpuModel{ | 2586 | pub const hainan = CpuModel{ |
| 2292 | .name = "hainan", | 2587 | .name = "hainan", |
| 2293 | .llvm_name = "hainan", | 2588 | .llvm_name = "hainan", |
lib/std/Target/arm.zig+90-72| ... | @@ -7,9 +7,7 @@ const CpuModel = std.Target.Cpu.Model; | ... | @@ -7,9 +7,7 @@ const CpuModel = std.Target.Cpu.Model; |
| 7 | pub const Feature = enum { | 7 | pub const Feature = enum { |
| 8 | @"32bit", | 8 | @"32bit", |
| 9 | @"8msecext", | 9 | @"8msecext", |
| 10 | a76, | ||
| 11 | aapcs_frame_chain, | 10 | aapcs_frame_chain, |
| 12 | aapcs_frame_chain_leaf, | ||
| 13 | aclass, | 11 | aclass, |
| 14 | acquire_release, | 12 | acquire_release, |
| 15 | aes, | 13 | aes, |
| ... | @@ -40,7 +38,6 @@ pub const Feature = enum { | ... | @@ -40,7 +38,6 @@ pub const Feature = enum { |
| 40 | dsp, | 38 | dsp, |
| 41 | execute_only, | 39 | execute_only, |
| 42 | expand_fp_mlx, | 40 | expand_fp_mlx, |
| 43 | exynos, | ||
| 44 | fix_cmse_cve_2021_35465, | 41 | fix_cmse_cve_2021_35465, |
| 45 | fix_cortex_a57_aes_1742098, | 42 | fix_cortex_a57_aes_1742098, |
| 46 | fp16, | 43 | fp16, |
| ... | @@ -96,7 +93,6 @@ pub const Feature = enum { | ... | @@ -96,7 +93,6 @@ pub const Feature = enum { |
| 96 | lob, | 93 | lob, |
| 97 | long_calls, | 94 | long_calls, |
| 98 | loop_align, | 95 | loop_align, |
| 99 | m3, | ||
| 100 | mclass, | 96 | mclass, |
| 101 | mp, | 97 | mp, |
| 102 | muxed_units, | 98 | muxed_units, |
| ... | @@ -120,7 +116,6 @@ pub const Feature = enum { | ... | @@ -120,7 +116,6 @@ pub const Feature = enum { |
| 120 | prefer_ishst, | 116 | prefer_ishst, |
| 121 | prefer_vmovsr, | 117 | prefer_vmovsr, |
| 122 | prof_unpr, | 118 | prof_unpr, |
| 123 | r4, | ||
| 124 | ras, | 119 | ras, |
| 125 | rclass, | 120 | rclass, |
| 126 | read_tp_tpidrprw, | 121 | read_tp_tpidrprw, |
| ... | @@ -140,7 +135,6 @@ pub const Feature = enum { | ... | @@ -140,7 +135,6 @@ pub const Feature = enum { |
| 140 | soft_float, | 135 | soft_float, |
| 141 | splat_vfp_neon, | 136 | splat_vfp_neon, |
| 142 | strict_align, | 137 | strict_align, |
| 143 | swift, | ||
| 144 | thumb2, | 138 | thumb2, |
| 145 | thumb_mode, | 139 | thumb_mode, |
| 146 | trustzone, | 140 | trustzone, |
| ... | @@ -228,23 +222,11 @@ pub const all_features = blk: { | ... | @@ -228,23 +222,11 @@ pub const all_features = blk: { |
| 228 | .description = "Enable support for ARMv8-M Security Extensions", | 222 | .description = "Enable support for ARMv8-M Security Extensions", |
| 229 | .dependencies = featureSet(&[_]Feature{}), | 223 | .dependencies = featureSet(&[_]Feature{}), |
| 230 | }; | 224 | }; |
| 231 | result[@intFromEnum(Feature.a76)] = .{ | ||
| 232 | .llvm_name = "a76", | ||
| 233 | .description = "Cortex-A76 ARM processors", | ||
| 234 | .dependencies = featureSet(&[_]Feature{}), | ||
| 235 | }; | ||
| 236 | result[@intFromEnum(Feature.aapcs_frame_chain)] = .{ | 225 | result[@intFromEnum(Feature.aapcs_frame_chain)] = .{ |
| 237 | .llvm_name = "aapcs-frame-chain", | 226 | .llvm_name = "aapcs-frame-chain", |
| 238 | .description = "Create an AAPCS compliant frame chain", | 227 | .description = "Create an AAPCS compliant frame chain", |
| 239 | .dependencies = featureSet(&[_]Feature{}), | 228 | .dependencies = featureSet(&[_]Feature{}), |
| 240 | }; | 229 | }; |
| 241 | result[@intFromEnum(Feature.aapcs_frame_chain_leaf)] = .{ | ||
| 242 | .llvm_name = "aapcs-frame-chain-leaf", | ||
| 243 | .description = "Create an AAPCS compliant frame chain for leaf functions", | ||
| 244 | .dependencies = featureSet(&[_]Feature{ | ||
| 245 | .aapcs_frame_chain, | ||
| 246 | }), | ||
| 247 | }; | ||
| 248 | result[@intFromEnum(Feature.aclass)] = .{ | 230 | result[@intFromEnum(Feature.aclass)] = .{ |
| 249 | .llvm_name = "aclass", | 231 | .llvm_name = "aclass", |
| 250 | .description = "Is application profile ('A' series)", | 232 | .description = "Is application profile ('A' series)", |
| ... | @@ -422,32 +404,9 @@ pub const all_features = blk: { | ... | @@ -422,32 +404,9 @@ pub const all_features = blk: { |
| 422 | .description = "Expand VFP/NEON MLA/MLS instructions", | 404 | .description = "Expand VFP/NEON MLA/MLS instructions", |
| 423 | .dependencies = featureSet(&[_]Feature{}), | 405 | .dependencies = featureSet(&[_]Feature{}), |
| 424 | }; | 406 | }; |
| 425 | result[@intFromEnum(Feature.exynos)] = .{ | ||
| 426 | .llvm_name = "exynos", | ||
| 427 | .description = "Samsung Exynos processors", | ||
| 428 | .dependencies = featureSet(&[_]Feature{ | ||
| 429 | .crc, | ||
| 430 | .crypto, | ||
| 431 | .expand_fp_mlx, | ||
| 432 | .fuse_aes, | ||
| 433 | .fuse_literals, | ||
| 434 | .hwdiv, | ||
| 435 | .hwdiv_arm, | ||
| 436 | .prof_unpr, | ||
| 437 | .ret_addr_stack, | ||
| 438 | .slow_fp_brcc, | ||
| 439 | .slow_vdup32, | ||
| 440 | .slow_vgetlni32, | ||
| 441 | .slowfpvfmx, | ||
| 442 | .slowfpvmlx, | ||
| 443 | .splat_vfp_neon, | ||
| 444 | .wide_stride_vfp, | ||
| 445 | .zcz, | ||
| 446 | }), | ||
| 447 | }; | ||
| 448 | result[@intFromEnum(Feature.fix_cmse_cve_2021_35465)] = .{ | 407 | result[@intFromEnum(Feature.fix_cmse_cve_2021_35465)] = .{ |
| 449 | .llvm_name = "fix-cmse-cve-2021-35465", | 408 | .llvm_name = "fix-cmse-cve-2021-35465", |
| 450 | .description = "Mitigate against the cve-2021-35465 security vulnerability", | 409 | .description = "Mitigate against the cve-2021-35465 security vulnurability", |
| 451 | .dependencies = featureSet(&[_]Feature{}), | 410 | .dependencies = featureSet(&[_]Feature{}), |
| 452 | }; | 411 | }; |
| 453 | result[@intFromEnum(Feature.fix_cortex_a57_aes_1742098)] = .{ | 412 | result[@intFromEnum(Feature.fix_cortex_a57_aes_1742098)] = .{ |
| ... | @@ -815,11 +774,6 @@ pub const all_features = blk: { | ... | @@ -815,11 +774,6 @@ pub const all_features = blk: { |
| 815 | .description = "Prefer 32-bit alignment for loops", | 774 | .description = "Prefer 32-bit alignment for loops", |
| 816 | .dependencies = featureSet(&[_]Feature{}), | 775 | .dependencies = featureSet(&[_]Feature{}), |
| 817 | }; | 776 | }; |
| 818 | result[@intFromEnum(Feature.m3)] = .{ | ||
| 819 | .llvm_name = "m3", | ||
| 820 | .description = "Cortex-M3 ARM processors", | ||
| 821 | .dependencies = featureSet(&[_]Feature{}), | ||
| 822 | }; | ||
| 823 | result[@intFromEnum(Feature.mclass)] = .{ | 777 | result[@intFromEnum(Feature.mclass)] = .{ |
| 824 | .llvm_name = "mclass", | 778 | .llvm_name = "mclass", |
| 825 | .description = "Is microcontroller profile ('M' series)", | 779 | .description = "Is microcontroller profile ('M' series)", |
| ... | @@ -945,11 +899,6 @@ pub const all_features = blk: { | ... | @@ -945,11 +899,6 @@ pub const all_features = blk: { |
| 945 | .description = "Is profitable to unpredicate", | 899 | .description = "Is profitable to unpredicate", |
| 946 | .dependencies = featureSet(&[_]Feature{}), | 900 | .dependencies = featureSet(&[_]Feature{}), |
| 947 | }; | 901 | }; |
| 948 | result[@intFromEnum(Feature.r4)] = .{ | ||
| 949 | .llvm_name = "r4", | ||
| 950 | .description = "Cortex-R4 ARM processors", | ||
| 951 | .dependencies = featureSet(&[_]Feature{}), | ||
| 952 | }; | ||
| 953 | result[@intFromEnum(Feature.ras)] = .{ | 902 | result[@intFromEnum(Feature.ras)] = .{ |
| 954 | .llvm_name = "ras", | 903 | .llvm_name = "ras", |
| 955 | .description = "Enable Reliability, Availability and Serviceability extensions", | 904 | .description = "Enable Reliability, Availability and Serviceability extensions", |
| ... | @@ -1049,11 +998,6 @@ pub const all_features = blk: { | ... | @@ -1049,11 +998,6 @@ pub const all_features = blk: { |
| 1049 | .description = "Disallow all unaligned memory access", | 998 | .description = "Disallow all unaligned memory access", |
| 1050 | .dependencies = featureSet(&[_]Feature{}), | 999 | .dependencies = featureSet(&[_]Feature{}), |
| 1051 | }; | 1000 | }; |
| 1052 | result[@intFromEnum(Feature.swift)] = .{ | ||
| 1053 | .llvm_name = "swift", | ||
| 1054 | .description = "Swift ARM processors", | ||
| 1055 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1056 | }; | ||
| 1057 | result[@intFromEnum(Feature.thumb2)] = .{ | 1001 | result[@intFromEnum(Feature.thumb2)] = .{ |
| 1058 | .llvm_name = "thumb2", | 1002 | .llvm_name = "thumb2", |
| 1059 | .description = "Enable Thumb2 instructions", | 1003 | .description = "Enable Thumb2 instructions", |
| ... | @@ -1508,10 +1452,9 @@ pub const all_features = blk: { | ... | @@ -1508,10 +1452,9 @@ pub const all_features = blk: { |
| 1508 | .db, | 1452 | .db, |
| 1509 | .dfb, | 1453 | .dfb, |
| 1510 | .dsp, | 1454 | .dsp, |
| 1511 | .fp_armv8, | 1455 | .fp_armv8d16sp, |
| 1512 | .has_v8, | 1456 | .has_v8, |
| 1513 | .mp, | 1457 | .mp, |
| 1514 | .neon, | ||
| 1515 | .rclass, | 1458 | .rclass, |
| 1516 | .virtualization, | 1459 | .virtualization, |
| 1517 | }), | 1460 | }), |
| ... | @@ -2104,7 +2047,6 @@ pub const cpu = struct { | ... | @@ -2104,7 +2047,6 @@ pub const cpu = struct { |
| 2104 | .name = "cortex_a76", | 2047 | .name = "cortex_a76", |
| 2105 | .llvm_name = "cortex-a76", | 2048 | .llvm_name = "cortex-a76", |
| 2106 | .features = featureSet(&[_]Feature{ | 2049 | .features = featureSet(&[_]Feature{ |
| 2107 | .a76, | ||
| 2108 | .dotprod, | 2050 | .dotprod, |
| 2109 | .fullfp16, | 2051 | .fullfp16, |
| 2110 | .v8_2a, | 2052 | .v8_2a, |
| ... | @@ -2114,7 +2056,6 @@ pub const cpu = struct { | ... | @@ -2114,7 +2056,6 @@ pub const cpu = struct { |
| 2114 | .name = "cortex_a76ae", | 2056 | .name = "cortex_a76ae", |
| 2115 | .llvm_name = "cortex-a76ae", | 2057 | .llvm_name = "cortex-a76ae", |
| 2116 | .features = featureSet(&[_]Feature{ | 2058 | .features = featureSet(&[_]Feature{ |
| 2117 | .a76, | ||
| 2118 | .dotprod, | 2059 | .dotprod, |
| 2119 | .fullfp16, | 2060 | .fullfp16, |
| 2120 | .v8_2a, | 2061 | .v8_2a, |
| ... | @@ -2138,6 +2079,15 @@ pub const cpu = struct { | ... | @@ -2138,6 +2079,15 @@ pub const cpu = struct { |
| 2138 | .v8_2a, | 2079 | .v8_2a, |
| 2139 | }), | 2080 | }), |
| 2140 | }; | 2081 | }; |
| 2082 | pub const cortex_a78ae = CpuModel{ | ||
| 2083 | .name = "cortex_a78ae", | ||
| 2084 | .llvm_name = "cortex-a78ae", | ||
| 2085 | .features = featureSet(&[_]Feature{ | ||
| 2086 | .dotprod, | ||
| 2087 | .fullfp16, | ||
| 2088 | .v8_2a, | ||
| 2089 | }), | ||
| 2090 | }; | ||
| 2141 | pub const cortex_a78c = CpuModel{ | 2091 | pub const cortex_a78c = CpuModel{ |
| 2142 | .name = "cortex_a78c", | 2092 | .name = "cortex_a78c", |
| 2143 | .llvm_name = "cortex-a78c", | 2093 | .llvm_name = "cortex-a78c", |
| ... | @@ -2219,7 +2169,6 @@ pub const cpu = struct { | ... | @@ -2219,7 +2169,6 @@ pub const cpu = struct { |
| 2219 | .llvm_name = "cortex-m3", | 2169 | .llvm_name = "cortex-m3", |
| 2220 | .features = featureSet(&[_]Feature{ | 2170 | .features = featureSet(&[_]Feature{ |
| 2221 | .loop_align, | 2171 | .loop_align, |
| 2222 | .m3, | ||
| 2223 | .no_branch_predictor, | 2172 | .no_branch_predictor, |
| 2224 | .use_misched, | 2173 | .use_misched, |
| 2225 | .v7m, | 2174 | .v7m, |
| ... | @@ -2315,7 +2264,6 @@ pub const cpu = struct { | ... | @@ -2315,7 +2264,6 @@ pub const cpu = struct { |
| 2315 | .llvm_name = "cortex-r4", | 2264 | .llvm_name = "cortex-r4", |
| 2316 | .features = featureSet(&[_]Feature{ | 2265 | .features = featureSet(&[_]Feature{ |
| 2317 | .avoid_partial_cpsr, | 2266 | .avoid_partial_cpsr, |
| 2318 | .r4, | ||
| 2319 | .ret_addr_stack, | 2267 | .ret_addr_stack, |
| 2320 | .v7r, | 2268 | .v7r, |
| 2321 | }), | 2269 | }), |
| ... | @@ -2325,7 +2273,6 @@ pub const cpu = struct { | ... | @@ -2325,7 +2273,6 @@ pub const cpu = struct { |
| 2325 | .llvm_name = "cortex-r4f", | 2273 | .llvm_name = "cortex-r4f", |
| 2326 | .features = featureSet(&[_]Feature{ | 2274 | .features = featureSet(&[_]Feature{ |
| 2327 | .avoid_partial_cpsr, | 2275 | .avoid_partial_cpsr, |
| 2328 | .r4, | ||
| 2329 | .ret_addr_stack, | 2276 | .ret_addr_stack, |
| 2330 | .slow_fp_brcc, | 2277 | .slow_fp_brcc, |
| 2331 | .slowfpvfmx, | 2278 | .slowfpvfmx, |
| ... | @@ -2352,7 +2299,20 @@ pub const cpu = struct { | ... | @@ -2352,7 +2299,20 @@ pub const cpu = struct { |
| 2352 | .name = "cortex_r52", | 2299 | .name = "cortex_r52", |
| 2353 | .llvm_name = "cortex-r52", | 2300 | .llvm_name = "cortex-r52", |
| 2354 | .features = featureSet(&[_]Feature{ | 2301 | .features = featureSet(&[_]Feature{ |
| 2302 | .fp_armv8, | ||
| 2355 | .fpao, | 2303 | .fpao, |
| 2304 | .neon, | ||
| 2305 | .use_misched, | ||
| 2306 | .v8r, | ||
| 2307 | }), | ||
| 2308 | }; | ||
| 2309 | pub const cortex_r52plus = CpuModel{ | ||
| 2310 | .name = "cortex_r52plus", | ||
| 2311 | .llvm_name = "cortex-r52plus", | ||
| 2312 | .features = featureSet(&[_]Feature{ | ||
| 2313 | .fp_armv8, | ||
| 2314 | .fpao, | ||
| 2315 | .neon, | ||
| 2356 | .use_misched, | 2316 | .use_misched, |
| 2357 | .v8r, | 2317 | .v8r, |
| 2358 | }), | 2318 | }), |
| ... | @@ -2418,7 +2378,6 @@ pub const cpu = struct { | ... | @@ -2418,7 +2378,6 @@ pub const cpu = struct { |
| 2418 | .ret_addr_stack, | 2378 | .ret_addr_stack, |
| 2419 | .slowfpvfmx, | 2379 | .slowfpvfmx, |
| 2420 | .slowfpvmlx, | 2380 | .slowfpvmlx, |
| 2421 | .swift, | ||
| 2422 | .use_misched, | 2381 | .use_misched, |
| 2423 | .v8a, | 2382 | .v8a, |
| 2424 | .zcz, | 2383 | .zcz, |
| ... | @@ -2435,24 +2394,60 @@ pub const cpu = struct { | ... | @@ -2435,24 +2394,60 @@ pub const cpu = struct { |
| 2435 | .name = "exynos_m1", | 2394 | .name = "exynos_m1", |
| 2436 | .llvm_name = null, | 2395 | .llvm_name = null, |
| 2437 | .features = featureSet(&[_]Feature{ | 2396 | .features = featureSet(&[_]Feature{ |
| 2438 | .exynos, | 2397 | .expand_fp_mlx, |
| 2398 | .fuse_aes, | ||
| 2399 | .fuse_literals, | ||
| 2400 | .prof_unpr, | ||
| 2401 | .ret_addr_stack, | ||
| 2402 | .slow_fp_brcc, | ||
| 2403 | .slow_vdup32, | ||
| 2404 | .slow_vgetlni32, | ||
| 2405 | .slowfpvfmx, | ||
| 2406 | .slowfpvmlx, | ||
| 2407 | .splat_vfp_neon, | ||
| 2439 | .v8a, | 2408 | .v8a, |
| 2409 | .wide_stride_vfp, | ||
| 2410 | .zcz, | ||
| 2440 | }), | 2411 | }), |
| 2441 | }; | 2412 | }; |
| 2442 | pub const exynos_m2 = CpuModel{ | 2413 | pub const exynos_m2 = CpuModel{ |
| 2443 | .name = "exynos_m2", | 2414 | .name = "exynos_m2", |
| 2444 | .llvm_name = null, | 2415 | .llvm_name = null, |
| 2445 | .features = featureSet(&[_]Feature{ | 2416 | .features = featureSet(&[_]Feature{ |
| 2446 | .exynos, | 2417 | .expand_fp_mlx, |
| 2418 | .fuse_aes, | ||
| 2419 | .fuse_literals, | ||
| 2420 | .prof_unpr, | ||
| 2421 | .ret_addr_stack, | ||
| 2422 | .slow_fp_brcc, | ||
| 2423 | .slow_vdup32, | ||
| 2424 | .slow_vgetlni32, | ||
| 2425 | .slowfpvfmx, | ||
| 2426 | .slowfpvmlx, | ||
| 2427 | .splat_vfp_neon, | ||
| 2447 | .v8a, | 2428 | .v8a, |
| 2429 | .wide_stride_vfp, | ||
| 2430 | .zcz, | ||
| 2448 | }), | 2431 | }), |
| 2449 | }; | 2432 | }; |
| 2450 | pub const exynos_m3 = CpuModel{ | 2433 | pub const exynos_m3 = CpuModel{ |
| 2451 | .name = "exynos_m3", | 2434 | .name = "exynos_m3", |
| 2452 | .llvm_name = "exynos-m3", | 2435 | .llvm_name = "exynos-m3", |
| 2453 | .features = featureSet(&[_]Feature{ | 2436 | .features = featureSet(&[_]Feature{ |
| 2454 | .exynos, | 2437 | .expand_fp_mlx, |
| 2438 | .fuse_aes, | ||
| 2439 | .fuse_literals, | ||
| 2440 | .prof_unpr, | ||
| 2441 | .ret_addr_stack, | ||
| 2442 | .slow_fp_brcc, | ||
| 2443 | .slow_vdup32, | ||
| 2444 | .slow_vgetlni32, | ||
| 2445 | .slowfpvfmx, | ||
| 2446 | .slowfpvmlx, | ||
| 2447 | .splat_vfp_neon, | ||
| 2455 | .v8a, | 2448 | .v8a, |
| 2449 | .wide_stride_vfp, | ||
| 2450 | .zcz, | ||
| 2456 | }), | 2451 | }), |
| 2457 | }; | 2452 | }; |
| 2458 | pub const exynos_m4 = CpuModel{ | 2453 | pub const exynos_m4 = CpuModel{ |
| ... | @@ -2460,9 +2455,21 @@ pub const cpu = struct { | ... | @@ -2460,9 +2455,21 @@ pub const cpu = struct { |
| 2460 | .llvm_name = "exynos-m4", | 2455 | .llvm_name = "exynos-m4", |
| 2461 | .features = featureSet(&[_]Feature{ | 2456 | .features = featureSet(&[_]Feature{ |
| 2462 | .dotprod, | 2457 | .dotprod, |
| 2463 | .exynos, | 2458 | .expand_fp_mlx, |
| 2464 | .fullfp16, | 2459 | .fullfp16, |
| 2460 | .fuse_aes, | ||
| 2461 | .fuse_literals, | ||
| 2462 | .prof_unpr, | ||
| 2463 | .ret_addr_stack, | ||
| 2464 | .slow_fp_brcc, | ||
| 2465 | .slow_vdup32, | ||
| 2466 | .slow_vgetlni32, | ||
| 2467 | .slowfpvfmx, | ||
| 2468 | .slowfpvmlx, | ||
| 2469 | .splat_vfp_neon, | ||
| 2465 | .v8_2a, | 2470 | .v8_2a, |
| 2471 | .wide_stride_vfp, | ||
| 2472 | .zcz, | ||
| 2466 | }), | 2473 | }), |
| 2467 | }; | 2474 | }; |
| 2468 | pub const exynos_m5 = CpuModel{ | 2475 | pub const exynos_m5 = CpuModel{ |
| ... | @@ -2470,9 +2477,21 @@ pub const cpu = struct { | ... | @@ -2470,9 +2477,21 @@ pub const cpu = struct { |
| 2470 | .llvm_name = "exynos-m5", | 2477 | .llvm_name = "exynos-m5", |
| 2471 | .features = featureSet(&[_]Feature{ | 2478 | .features = featureSet(&[_]Feature{ |
| 2472 | .dotprod, | 2479 | .dotprod, |
| 2473 | .exynos, | 2480 | .expand_fp_mlx, |
| 2474 | .fullfp16, | 2481 | .fullfp16, |
| 2482 | .fuse_aes, | ||
| 2483 | .fuse_literals, | ||
| 2484 | .prof_unpr, | ||
| 2485 | .ret_addr_stack, | ||
| 2486 | .slow_fp_brcc, | ||
| 2487 | .slow_vdup32, | ||
| 2488 | .slow_vgetlni32, | ||
| 2489 | .slowfpvfmx, | ||
| 2490 | .slowfpvmlx, | ||
| 2491 | .splat_vfp_neon, | ||
| 2475 | .v8_2a, | 2492 | .v8_2a, |
| 2493 | .wide_stride_vfp, | ||
| 2494 | .zcz, | ||
| 2476 | }), | 2495 | }), |
| 2477 | }; | 2496 | }; |
| 2478 | pub const generic = CpuModel{ | 2497 | pub const generic = CpuModel{ |
| ... | @@ -2538,6 +2557,7 @@ pub const cpu = struct { | ... | @@ -2538,6 +2557,7 @@ pub const cpu = struct { |
| 2538 | .llvm_name = "neoverse-n2", | 2557 | .llvm_name = "neoverse-n2", |
| 2539 | .features = featureSet(&[_]Feature{ | 2558 | .features = featureSet(&[_]Feature{ |
| 2540 | .bf16, | 2559 | .bf16, |
| 2560 | .fp16fml, | ||
| 2541 | .i8mm, | 2561 | .i8mm, |
| 2542 | .v9a, | 2562 | .v9a, |
| 2543 | }), | 2563 | }), |
| ... | @@ -2564,7 +2584,6 @@ pub const cpu = struct { | ... | @@ -2564,7 +2584,6 @@ pub const cpu = struct { |
| 2564 | .name = "sc300", | 2584 | .name = "sc300", |
| 2565 | .llvm_name = "sc300", | 2585 | .llvm_name = "sc300", |
| 2566 | .features = featureSet(&[_]Feature{ | 2586 | .features = featureSet(&[_]Feature{ |
| 2567 | .m3, | ||
| 2568 | .no_branch_predictor, | 2587 | .no_branch_predictor, |
| 2569 | .use_misched, | 2588 | .use_misched, |
| 2570 | .v7m, | 2589 | .v7m, |
| ... | @@ -2618,7 +2637,6 @@ pub const cpu = struct { | ... | @@ -2618,7 +2637,6 @@ pub const cpu = struct { |
| 2618 | .slow_vgetlni32, | 2637 | .slow_vgetlni32, |
| 2619 | .slowfpvfmx, | 2638 | .slowfpvfmx, |
| 2620 | .slowfpvmlx, | 2639 | .slowfpvmlx, |
| 2621 | .swift, | ||
| 2622 | .use_misched, | 2640 | .use_misched, |
| 2623 | .v7a, | 2641 | .v7a, |
| 2624 | .vfp4, | 2642 | .vfp4, |
lib/std/Target/loongarch.zig+18-6| ... | @@ -7,7 +7,6 @@ const CpuModel = std.Target.Cpu.Model; | ... | @@ -7,7 +7,6 @@ const CpuModel = std.Target.Cpu.Model; |
| 7 | pub const Feature = enum { | 7 | pub const Feature = enum { |
| 8 | @"32bit", | 8 | @"32bit", |
| 9 | @"64bit", | 9 | @"64bit", |
| 10 | auto_vec, | ||
| 11 | d, | 10 | d, |
| 12 | f, | 11 | f, |
| 13 | frecipe, | 12 | frecipe, |
| ... | @@ -18,6 +17,7 @@ pub const Feature = enum { | ... | @@ -18,6 +17,7 @@ pub const Feature = enum { |
| 18 | lbt, | 17 | lbt, |
| 19 | lsx, | 18 | lsx, |
| 20 | lvz, | 19 | lvz, |
| 20 | prefer_w_inst, | ||
| 21 | relax, | 21 | relax, |
| 22 | ual, | 22 | ual, |
| 23 | }; | 23 | }; |
| ... | @@ -41,11 +41,6 @@ pub const all_features = blk: { | ... | @@ -41,11 +41,6 @@ pub const all_features = blk: { |
| 41 | .description = "LA64 Basic Integer and Privilege Instruction Set", | 41 | .description = "LA64 Basic Integer and Privilege Instruction Set", |
| 42 | .dependencies = featureSet(&[_]Feature{}), | 42 | .dependencies = featureSet(&[_]Feature{}), |
| 43 | }; | 43 | }; |
| 44 | result[@intFromEnum(Feature.auto_vec)] = .{ | ||
| 45 | .llvm_name = "auto-vec", | ||
| 46 | .description = "Experimental auto vectorization", | ||
| 47 | .dependencies = featureSet(&[_]Feature{}), | ||
| 48 | }; | ||
| 49 | result[@intFromEnum(Feature.d)] = .{ | 44 | result[@intFromEnum(Feature.d)] = .{ |
| 50 | .llvm_name = "d", | 45 | .llvm_name = "d", |
| 51 | .description = "'D' (Double-Precision Floating-Point)", | 46 | .description = "'D' (Double-Precision Floating-Point)", |
| ... | @@ -102,6 +97,11 @@ pub const all_features = blk: { | ... | @@ -102,6 +97,11 @@ pub const all_features = blk: { |
| 102 | .description = "'LVZ' (Loongson Virtualization Extension)", | 97 | .description = "'LVZ' (Loongson Virtualization Extension)", |
| 103 | .dependencies = featureSet(&[_]Feature{}), | 98 | .dependencies = featureSet(&[_]Feature{}), |
| 104 | }; | 99 | }; |
| 100 | result[@intFromEnum(Feature.prefer_w_inst)] = .{ | ||
| 101 | .llvm_name = "prefer-w-inst", | ||
| 102 | .description = "Prefer instructions with W suffix", | ||
| 103 | .dependencies = featureSet(&[_]Feature{}), | ||
| 104 | }; | ||
| 105 | result[@intFromEnum(Feature.relax)] = .{ | 105 | result[@intFromEnum(Feature.relax)] = .{ |
| 106 | .llvm_name = "relax", | 106 | .llvm_name = "relax", |
| 107 | .description = "Enable Linker relaxation", | 107 | .description = "Enable Linker relaxation", |
| ... | @@ -152,6 +152,18 @@ pub const cpu = struct { | ... | @@ -152,6 +152,18 @@ pub const cpu = struct { |
| 152 | .ual, | 152 | .ual, |
| 153 | }), | 153 | }), |
| 154 | }; | 154 | }; |
| 155 | pub const la664 = CpuModel{ | ||
| 156 | .name = "la664", | ||
| 157 | .llvm_name = "la664", | ||
| 158 | .features = featureSet(&[_]Feature{ | ||
| 159 | .@"64bit", | ||
| 160 | .frecipe, | ||
| 161 | .lasx, | ||
| 162 | .lbt, | ||
| 163 | .lvz, | ||
| 164 | .ual, | ||
| 165 | }), | ||
| 166 | }; | ||
| 155 | pub const loongarch64 = CpuModel{ | 167 | pub const loongarch64 = CpuModel{ |
| 156 | .name = "loongarch64", | 168 | .name = "loongarch64", |
| 157 | .llvm_name = "loongarch64", | 169 | .llvm_name = "loongarch64", |
lib/std/Target/mips.zig+6| ... | @@ -51,6 +51,7 @@ pub const Feature = enum { | ... | @@ -51,6 +51,7 @@ pub const Feature = enum { |
| 51 | ptr64, | 51 | ptr64, |
| 52 | single_float, | 52 | single_float, |
| 53 | soft_float, | 53 | soft_float, |
| 54 | strict_align, | ||
| 54 | sym32, | 55 | sym32, |
| 55 | use_indirect_jump_hazard, | 56 | use_indirect_jump_hazard, |
| 56 | use_tcc_in_div, | 57 | use_tcc_in_div, |
| ... | @@ -356,6 +357,11 @@ pub const all_features = blk: { | ... | @@ -356,6 +357,11 @@ pub const all_features = blk: { |
| 356 | .description = "Does not support floating point instructions", | 357 | .description = "Does not support floating point instructions", |
| 357 | .dependencies = featureSet(&[_]Feature{}), | 358 | .dependencies = featureSet(&[_]Feature{}), |
| 358 | }; | 359 | }; |
| 360 | result[@intFromEnum(Feature.strict_align)] = .{ | ||
| 361 | .llvm_name = "strict-align", | ||
| 362 | .description = "Disable unaligned load store for r6", | ||
| 363 | .dependencies = featureSet(&[_]Feature{}), | ||
| 364 | }; | ||
| 359 | result[@intFromEnum(Feature.sym32)] = .{ | 365 | result[@intFromEnum(Feature.sym32)] = .{ |
| 360 | .llvm_name = "sym32", | 366 | .llvm_name = "sym32", |
| 361 | .description = "Symbols are 32 bit on Mips64", | 367 | .description = "Symbols are 32 bit on Mips64", |
lib/std/Target/nvptx.zig+18| ... | @@ -13,6 +13,7 @@ pub const Feature = enum { | ... | @@ -13,6 +13,7 @@ pub const Feature = enum { |
| 13 | ptx50, | 13 | ptx50, |
| 14 | ptx60, | 14 | ptx60, |
| 15 | ptx61, | 15 | ptx61, |
| 16 | ptx62, | ||
| 16 | ptx63, | 17 | ptx63, |
| 17 | ptx64, | 18 | ptx64, |
| 18 | ptx65, | 19 | ptx65, |
| ... | @@ -29,6 +30,8 @@ pub const Feature = enum { | ... | @@ -29,6 +30,8 @@ pub const Feature = enum { |
| 29 | ptx81, | 30 | ptx81, |
| 30 | ptx82, | 31 | ptx82, |
| 31 | ptx83, | 32 | ptx83, |
| 33 | ptx84, | ||
| 34 | ptx85, | ||
| 32 | sm_20, | 35 | sm_20, |
| 33 | sm_21, | 36 | sm_21, |
| 34 | sm_30, | 37 | sm_30, |
| ... | @@ -101,6 +104,11 @@ pub const all_features = blk: { | ... | @@ -101,6 +104,11 @@ pub const all_features = blk: { |
| 101 | .description = "Use PTX version 61", | 104 | .description = "Use PTX version 61", |
| 102 | .dependencies = featureSet(&[_]Feature{}), | 105 | .dependencies = featureSet(&[_]Feature{}), |
| 103 | }; | 106 | }; |
| 107 | result[@intFromEnum(Feature.ptx62)] = .{ | ||
| 108 | .llvm_name = "ptx62", | ||
| 109 | .description = "Use PTX version 62", | ||
| 110 | .dependencies = featureSet(&[_]Feature{}), | ||
| 111 | }; | ||
| 104 | result[@intFromEnum(Feature.ptx63)] = .{ | 112 | result[@intFromEnum(Feature.ptx63)] = .{ |
| 105 | .llvm_name = "ptx63", | 113 | .llvm_name = "ptx63", |
| 106 | .description = "Use PTX version 63", | 114 | .description = "Use PTX version 63", |
| ... | @@ -181,6 +189,16 @@ pub const all_features = blk: { | ... | @@ -181,6 +189,16 @@ pub const all_features = blk: { |
| 181 | .description = "Use PTX version 83", | 189 | .description = "Use PTX version 83", |
| 182 | .dependencies = featureSet(&[_]Feature{}), | 190 | .dependencies = featureSet(&[_]Feature{}), |
| 183 | }; | 191 | }; |
| 192 | result[@intFromEnum(Feature.ptx84)] = .{ | ||
| 193 | .llvm_name = "ptx84", | ||
| 194 | .description = "Use PTX version 84", | ||
| 195 | .dependencies = featureSet(&[_]Feature{}), | ||
| 196 | }; | ||
| 197 | result[@intFromEnum(Feature.ptx85)] = .{ | ||
| 198 | .llvm_name = "ptx85", | ||
| 199 | .description = "Use PTX version 85", | ||
| 200 | .dependencies = featureSet(&[_]Feature{}), | ||
| 201 | }; | ||
| 184 | result[@intFromEnum(Feature.sm_20)] = .{ | 202 | result[@intFromEnum(Feature.sm_20)] = .{ |
| 185 | .llvm_name = "sm_20", | 203 | .llvm_name = "sm_20", |
| 186 | .description = "Target SM 20", | 204 | .description = "Target SM 20", |
lib/std/Target/powerpc.zig+61-2| ... | @@ -8,6 +8,8 @@ pub const Feature = enum { | ... | @@ -8,6 +8,8 @@ pub const Feature = enum { |
| 8 | @"64bit", | 8 | @"64bit", |
| 9 | @"64bitregs", | 9 | @"64bitregs", |
| 10 | aix, | 10 | aix, |
| 11 | aix_shared_lib_tls_model_opt, | ||
| 12 | aix_small_local_dynamic_tls, | ||
| 11 | aix_small_local_exec_tls, | 13 | aix_small_local_exec_tls, |
| 12 | allow_unaligned_fp_access, | 14 | allow_unaligned_fp_access, |
| 13 | altivec, | 15 | altivec, |
| ... | @@ -113,6 +115,16 @@ pub const all_features = blk: { | ... | @@ -113,6 +115,16 @@ pub const all_features = blk: { |
| 113 | .description = "AIX OS", | 115 | .description = "AIX OS", |
| 114 | .dependencies = featureSet(&[_]Feature{}), | 116 | .dependencies = featureSet(&[_]Feature{}), |
| 115 | }; | 117 | }; |
| 118 | result[@intFromEnum(Feature.aix_shared_lib_tls_model_opt)] = .{ | ||
| 119 | .llvm_name = "aix-shared-lib-tls-model-opt", | ||
| 120 | .description = "Tune TLS model at function level in shared library loaded with the main program (for 64-bit AIX only)", | ||
| 121 | .dependencies = featureSet(&[_]Feature{}), | ||
| 122 | }; | ||
| 123 | result[@intFromEnum(Feature.aix_small_local_dynamic_tls)] = .{ | ||
| 124 | .llvm_name = "aix-small-local-dynamic-tls", | ||
| 125 | .description = "Produce a faster local-dynamic TLS sequence for this function for 64-bit AIX", | ||
| 126 | .dependencies = featureSet(&[_]Feature{}), | ||
| 127 | }; | ||
| 116 | result[@intFromEnum(Feature.aix_small_local_exec_tls)] = .{ | 128 | result[@intFromEnum(Feature.aix_small_local_exec_tls)] = .{ |
| 117 | .llvm_name = "aix-small-local-exec-tls", | 129 | .llvm_name = "aix-small-local-exec-tls", |
| 118 | .description = "Produce a TOC-free local-exec TLS sequence for this function for 64-bit AIX", | 130 | .description = "Produce a TOC-free local-exec TLS sequence for this function for 64-bit AIX", |
| ... | @@ -538,8 +550,7 @@ pub const all_features = blk: { | ... | @@ -538,8 +550,7 @@ pub const all_features = blk: { |
| 538 | .llvm_name = "prefix-instrs", | 550 | .llvm_name = "prefix-instrs", |
| 539 | .description = "Enable prefixed instructions", | 551 | .description = "Enable prefixed instructions", |
| 540 | .dependencies = featureSet(&[_]Feature{ | 552 | .dependencies = featureSet(&[_]Feature{ |
| 541 | .power8_vector, | 553 | .isa_v31_instructions, |
| 542 | .power9_altivec, | ||
| 543 | }), | 554 | }), |
| 544 | }; | 555 | }; |
| 545 | result[@intFromEnum(Feature.privileged)] = .{ | 556 | result[@intFromEnum(Feature.privileged)] = .{ |
| ... | @@ -990,6 +1001,54 @@ pub const cpu = struct { | ... | @@ -990,6 +1001,54 @@ pub const cpu = struct { |
| 990 | .two_const_nr, | 1001 | .two_const_nr, |
| 991 | }), | 1002 | }), |
| 992 | }; | 1003 | }; |
| 1004 | pub const pwr11 = CpuModel{ | ||
| 1005 | .name = "pwr11", | ||
| 1006 | .llvm_name = "pwr11", | ||
| 1007 | .features = featureSet(&[_]Feature{ | ||
| 1008 | .@"64bit", | ||
| 1009 | .allow_unaligned_fp_access, | ||
| 1010 | .bpermd, | ||
| 1011 | .cmpb, | ||
| 1012 | .crbits, | ||
| 1013 | .crypto, | ||
| 1014 | .direct_move, | ||
| 1015 | .extdiv, | ||
| 1016 | .fast_MFLR, | ||
| 1017 | .fcpsgn, | ||
| 1018 | .fpcvt, | ||
| 1019 | .fprnd, | ||
| 1020 | .fre, | ||
| 1021 | .fres, | ||
| 1022 | .frsqrte, | ||
| 1023 | .frsqrtes, | ||
| 1024 | .fsqrt, | ||
| 1025 | .fuse_add_logical, | ||
| 1026 | .fuse_arith_add, | ||
| 1027 | .fuse_logical, | ||
| 1028 | .fuse_logical_add, | ||
| 1029 | .fuse_sha3, | ||
| 1030 | .fuse_store, | ||
| 1031 | .htm, | ||
| 1032 | .icbt, | ||
| 1033 | .isa_v206_instructions, | ||
| 1034 | .isel, | ||
| 1035 | .ldbrx, | ||
| 1036 | .lfiwax, | ||
| 1037 | .mfocrf, | ||
| 1038 | .mma, | ||
| 1039 | .partword_atomics, | ||
| 1040 | .pcrelative_memops, | ||
| 1041 | .popcntd, | ||
| 1042 | .power10_vector, | ||
| 1043 | .ppc_postra_sched, | ||
| 1044 | .ppc_prera_sched, | ||
| 1045 | .predictable_select_expensive, | ||
| 1046 | .quadword_atomics, | ||
| 1047 | .recipprec, | ||
| 1048 | .stfiwx, | ||
| 1049 | .two_const_nr, | ||
| 1050 | }), | ||
| 1051 | }; | ||
| 993 | pub const pwr3 = CpuModel{ | 1052 | pub const pwr3 = CpuModel{ |
| 994 | .name = "pwr3", | 1053 | .name = "pwr3", |
| 995 | .llvm_name = "pwr3", | 1054 | .llvm_name = "pwr3", |
lib/std/Target/riscv.zig+798-76| ... | @@ -9,32 +9,43 @@ pub const Feature = enum { | ... | @@ -9,32 +9,43 @@ pub const Feature = enum { |
| 9 | @"64bit", | 9 | @"64bit", |
| 10 | a, | 10 | a, |
| 11 | auipc_addi_fusion, | 11 | auipc_addi_fusion, |
| 12 | b, | ||
| 12 | c, | 13 | c, |
| 13 | conditional_cmv_fusion, | 14 | conditional_cmv_fusion, |
| 14 | d, | 15 | d, |
| 15 | dlen_factor_2, | 16 | dlen_factor_2, |
| 16 | e, | 17 | e, |
| 17 | experimental, | 18 | experimental, |
| 19 | experimental_rva23s64, | ||
| 20 | experimental_rva23u64, | ||
| 21 | experimental_rvb23s64, | ||
| 22 | experimental_rvb23u64, | ||
| 23 | experimental_rvm23u32, | ||
| 24 | experimental_smmpm, | ||
| 25 | experimental_smnpm, | ||
| 26 | experimental_ssnpm, | ||
| 27 | experimental_sspm, | ||
| 28 | experimental_ssqosid, | ||
| 29 | experimental_supm, | ||
| 18 | experimental_zacas, | 30 | experimental_zacas, |
| 19 | experimental_zcmop, | 31 | experimental_zalasr, |
| 20 | experimental_zfbfmin, | ||
| 21 | experimental_zicfilp, | 32 | experimental_zicfilp, |
| 22 | experimental_zicfiss, | 33 | experimental_zicfiss, |
| 23 | experimental_zimop, | ||
| 24 | experimental_ztso, | ||
| 25 | experimental_zvfbfmin, | ||
| 26 | experimental_zvfbfwma, | ||
| 27 | f, | 34 | f, |
| 28 | fast_unaligned_access, | ||
| 29 | forced_atomics, | 35 | forced_atomics, |
| 36 | forced_sw_shadow_stack, | ||
| 30 | h, | 37 | h, |
| 31 | i, | 38 | i, |
| 32 | ld_add_fusion, | 39 | ld_add_fusion, |
| 33 | lui_addi_fusion, | 40 | lui_addi_fusion, |
| 34 | m, | 41 | m, |
| 35 | no_default_unroll, | 42 | no_default_unroll, |
| 36 | no_optimized_zero_stride_load, | ||
| 37 | no_rvc_hints, | 43 | no_rvc_hints, |
| 44 | no_sink_splat_operands, | ||
| 45 | no_trailing_seq_cst_fence, | ||
| 46 | optimized_zero_stride_load, | ||
| 47 | predictable_select_expensive, | ||
| 48 | prefer_w_inst, | ||
| 38 | relax, | 49 | relax, |
| 39 | reserve_x1, | 50 | reserve_x1, |
| 40 | reserve_x10, | 51 | reserve_x10, |
| ... | @@ -67,18 +78,47 @@ pub const Feature = enum { | ... | @@ -67,18 +78,47 @@ pub const Feature = enum { |
| 67 | reserve_x7, | 78 | reserve_x7, |
| 68 | reserve_x8, | 79 | reserve_x8, |
| 69 | reserve_x9, | 80 | reserve_x9, |
| 81 | rva20s64, | ||
| 82 | rva20u64, | ||
| 83 | rva22s64, | ||
| 84 | rva22u64, | ||
| 85 | rvi20u32, | ||
| 86 | rvi20u64, | ||
| 70 | save_restore, | 87 | save_restore, |
| 71 | seq_cst_trailing_fence, | 88 | shcounterenw, |
| 89 | shgatpa, | ||
| 72 | shifted_zextw_fusion, | 90 | shifted_zextw_fusion, |
| 73 | short_forward_branch_opt, | 91 | short_forward_branch_opt, |
| 92 | shtvala, | ||
| 93 | shvsatpa, | ||
| 94 | shvstvala, | ||
| 95 | shvstvecd, | ||
| 74 | smaia, | 96 | smaia, |
| 97 | smcdeleg, | ||
| 98 | smcsrind, | ||
| 75 | smepmp, | 99 | smepmp, |
| 100 | smstateen, | ||
| 76 | ssaia, | 101 | ssaia, |
| 102 | ssccfg, | ||
| 103 | ssccptr, | ||
| 104 | sscofpmf, | ||
| 105 | sscounterenw, | ||
| 106 | sscsrind, | ||
| 107 | ssstateen, | ||
| 108 | ssstrict, | ||
| 109 | sstc, | ||
| 110 | sstvala, | ||
| 111 | sstvecd, | ||
| 112 | ssu64xl, | ||
| 113 | svade, | ||
| 114 | svadu, | ||
| 115 | svbare, | ||
| 77 | svinval, | 116 | svinval, |
| 78 | svnapot, | 117 | svnapot, |
| 79 | svpbmt, | 118 | svpbmt, |
| 80 | tagged_globals, | 119 | tagged_globals, |
| 81 | unaligned_scalar_mem, | 120 | unaligned_scalar_mem, |
| 121 | unaligned_vector_mem, | ||
| 82 | use_postra_scheduler, | 122 | use_postra_scheduler, |
| 83 | v, | 123 | v, |
| 84 | ventana_veyron, | 124 | ventana_veyron, |
| ... | @@ -89,11 +129,14 @@ pub const Feature = enum { | ... | @@ -89,11 +129,14 @@ pub const Feature = enum { |
| 89 | xcvmac, | 129 | xcvmac, |
| 90 | xcvmem, | 130 | xcvmem, |
| 91 | xcvsimd, | 131 | xcvsimd, |
| 132 | xsfcease, | ||
| 92 | xsfvcp, | 133 | xsfvcp, |
| 93 | xsfvfnrclipxfqf, | 134 | xsfvfnrclipxfqf, |
| 94 | xsfvfwmaccqqq, | 135 | xsfvfwmaccqqq, |
| 95 | xsfvqmaccdod, | 136 | xsfvqmaccdod, |
| 96 | xsfvqmaccqoq, | 137 | xsfvqmaccqoq, |
| 138 | xsifivecdiscarddlone, | ||
| 139 | xsifivecflushdlone, | ||
| 97 | xtheadba, | 140 | xtheadba, |
| 98 | xtheadbb, | 141 | xtheadbb, |
| 99 | xtheadbs, | 142 | xtheadbs, |
| ... | @@ -106,8 +149,13 @@ pub const Feature = enum { | ... | @@ -106,8 +149,13 @@ pub const Feature = enum { |
| 106 | xtheadsync, | 149 | xtheadsync, |
| 107 | xtheadvdot, | 150 | xtheadvdot, |
| 108 | xventanacondops, | 151 | xventanacondops, |
| 152 | xwchc, | ||
| 109 | za128rs, | 153 | za128rs, |
| 110 | za64rs, | 154 | za64rs, |
| 155 | zaamo, | ||
| 156 | zabha, | ||
| 157 | zalrsc, | ||
| 158 | zama16b, | ||
| 111 | zawrs, | 159 | zawrs, |
| 112 | zba, | 160 | zba, |
| 113 | zbb, | 161 | zbb, |
| ... | @@ -121,12 +169,14 @@ pub const Feature = enum { | ... | @@ -121,12 +169,14 @@ pub const Feature = enum { |
| 121 | zcd, | 169 | zcd, |
| 122 | zce, | 170 | zce, |
| 123 | zcf, | 171 | zcf, |
| 172 | zcmop, | ||
| 124 | zcmp, | 173 | zcmp, |
| 125 | zcmt, | 174 | zcmt, |
| 126 | zdinx, | 175 | zdinx, |
| 127 | zexth_fusion, | 176 | zexth_fusion, |
| 128 | zextw_fusion, | 177 | zextw_fusion, |
| 129 | zfa, | 178 | zfa, |
| 179 | zfbfmin, | ||
| 130 | zfh, | 180 | zfh, |
| 131 | zfhmin, | 181 | zfhmin, |
| 132 | zfinx, | 182 | zfinx, |
| ... | @@ -147,6 +197,7 @@ pub const Feature = enum { | ... | @@ -147,6 +197,7 @@ pub const Feature = enum { |
| 147 | zihintntl, | 197 | zihintntl, |
| 148 | zihintpause, | 198 | zihintpause, |
| 149 | zihpm, | 199 | zihpm, |
| 200 | zimop, | ||
| 150 | zk, | 201 | zk, |
| 151 | zkn, | 202 | zkn, |
| 152 | zknd, | 203 | zknd, |
| ... | @@ -158,6 +209,7 @@ pub const Feature = enum { | ... | @@ -158,6 +209,7 @@ pub const Feature = enum { |
| 158 | zksh, | 209 | zksh, |
| 159 | zkt, | 210 | zkt, |
| 160 | zmmul, | 211 | zmmul, |
| 212 | ztso, | ||
| 161 | zvbb, | 213 | zvbb, |
| 162 | zvbc, | 214 | zvbc, |
| 163 | zve32f, | 215 | zve32f, |
| ... | @@ -165,6 +217,8 @@ pub const Feature = enum { | ... | @@ -165,6 +217,8 @@ pub const Feature = enum { |
| 165 | zve64d, | 217 | zve64d, |
| 166 | zve64f, | 218 | zve64f, |
| 167 | zve64x, | 219 | zve64x, |
| 220 | zvfbfmin, | ||
| 221 | zvfbfwma, | ||
| 168 | zvfh, | 222 | zvfh, |
| 169 | zvfhmin, | 223 | zvfhmin, |
| 170 | zvkb, | 224 | zvkb, |
| ... | @@ -201,6 +255,7 @@ pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny; | ... | @@ -201,6 +255,7 @@ pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny; |
| 201 | pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll; | 255 | pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll; |
| 202 | 256 | ||
| 203 | pub const all_features = blk: { | 257 | pub const all_features = blk: { |
| 258 | @setEvalBranchQuota(2000); | ||
| 204 | const len = @typeInfo(Feature).@"enum".fields.len; | 259 | const len = @typeInfo(Feature).@"enum".fields.len; |
| 205 | std.debug.assert(len <= CpuFeature.Set.needed_bit_count); | 260 | std.debug.assert(len <= CpuFeature.Set.needed_bit_count); |
| 206 | var result: [len]CpuFeature = undefined; | 261 | var result: [len]CpuFeature = undefined; |
| ... | @@ -224,6 +279,15 @@ pub const all_features = blk: { | ... | @@ -224,6 +279,15 @@ pub const all_features = blk: { |
| 224 | .description = "Enable AUIPC+ADDI macrofusion", | 279 | .description = "Enable AUIPC+ADDI macrofusion", |
| 225 | .dependencies = featureSet(&[_]Feature{}), | 280 | .dependencies = featureSet(&[_]Feature{}), |
| 226 | }; | 281 | }; |
| 282 | result[@intFromEnum(Feature.b)] = .{ | ||
| 283 | .llvm_name = "b", | ||
| 284 | .description = "'B' (the collection of the Zba, Zbb, Zbs extensions)", | ||
| 285 | .dependencies = featureSet(&[_]Feature{ | ||
| 286 | .zba, | ||
| 287 | .zbb, | ||
| 288 | .zbs, | ||
| 289 | }), | ||
| 290 | }; | ||
| 227 | result[@intFromEnum(Feature.c)] = .{ | 291 | result[@intFromEnum(Feature.c)] = .{ |
| 228 | .llvm_name = "c", | 292 | .llvm_name = "c", |
| 229 | .description = "'C' (Compressed Instructions)", | 293 | .description = "'C' (Compressed Instructions)", |
| ... | @@ -256,61 +320,261 @@ pub const all_features = blk: { | ... | @@ -256,61 +320,261 @@ pub const all_features = blk: { |
| 256 | .description = "Experimental intrinsics", | 320 | .description = "Experimental intrinsics", |
| 257 | .dependencies = featureSet(&[_]Feature{}), | 321 | .dependencies = featureSet(&[_]Feature{}), |
| 258 | }; | 322 | }; |
| 259 | result[@intFromEnum(Feature.experimental_zacas)] = .{ | 323 | result[@intFromEnum(Feature.experimental_rva23s64)] = .{ |
| 260 | .llvm_name = "experimental-zacas", | 324 | .llvm_name = "experimental-rva23s64", |
| 261 | .description = "'Zacas' (Atomic Compare-And-Swap Instructions)", | 325 | .description = "RISC-V experimental-rva23s64 profile", |
| 262 | .dependencies = featureSet(&[_]Feature{}), | 326 | .dependencies = featureSet(&[_]Feature{ |
| 327 | .@"64bit", | ||
| 328 | .a, | ||
| 329 | .c, | ||
| 330 | .experimental_ssnpm, | ||
| 331 | .h, | ||
| 332 | .i, | ||
| 333 | .m, | ||
| 334 | .shcounterenw, | ||
| 335 | .shgatpa, | ||
| 336 | .shtvala, | ||
| 337 | .shvsatpa, | ||
| 338 | .shvstvala, | ||
| 339 | .shvstvecd, | ||
| 340 | .ssccptr, | ||
| 341 | .sscofpmf, | ||
| 342 | .sscounterenw, | ||
| 343 | .ssstateen, | ||
| 344 | .sstc, | ||
| 345 | .sstvala, | ||
| 346 | .sstvecd, | ||
| 347 | .ssu64xl, | ||
| 348 | .svade, | ||
| 349 | .svbare, | ||
| 350 | .svinval, | ||
| 351 | .svnapot, | ||
| 352 | .svpbmt, | ||
| 353 | .v, | ||
| 354 | .za64rs, | ||
| 355 | .zawrs, | ||
| 356 | .zba, | ||
| 357 | .zbb, | ||
| 358 | .zbs, | ||
| 359 | .zcb, | ||
| 360 | .zcmop, | ||
| 361 | .zfa, | ||
| 362 | .zfhmin, | ||
| 363 | .zic64b, | ||
| 364 | .zicbom, | ||
| 365 | .zicbop, | ||
| 366 | .zicboz, | ||
| 367 | .ziccamoa, | ||
| 368 | .ziccif, | ||
| 369 | .zicclsm, | ||
| 370 | .ziccrse, | ||
| 371 | .zicntr, | ||
| 372 | .zicond, | ||
| 373 | .zifencei, | ||
| 374 | .zihintntl, | ||
| 375 | .zihintpause, | ||
| 376 | .zihpm, | ||
| 377 | .zimop, | ||
| 378 | .zkt, | ||
| 379 | .zvbb, | ||
| 380 | .zvfhmin, | ||
| 381 | .zvkt, | ||
| 382 | }), | ||
| 263 | }; | 383 | }; |
| 264 | result[@intFromEnum(Feature.experimental_zcmop)] = .{ | 384 | result[@intFromEnum(Feature.experimental_rva23u64)] = .{ |
| 265 | .llvm_name = "experimental-zcmop", | 385 | .llvm_name = "experimental-rva23u64", |
| 266 | .description = "'Zcmop' (Compressed May-Be-Operations)", | 386 | .description = "RISC-V experimental-rva23u64 profile", |
| 267 | .dependencies = featureSet(&[_]Feature{ | 387 | .dependencies = featureSet(&[_]Feature{ |
| 268 | .zca, | 388 | .@"64bit", |
| 389 | .a, | ||
| 390 | .c, | ||
| 391 | .i, | ||
| 392 | .m, | ||
| 393 | .v, | ||
| 394 | .za64rs, | ||
| 395 | .zawrs, | ||
| 396 | .zba, | ||
| 397 | .zbb, | ||
| 398 | .zbs, | ||
| 399 | .zcb, | ||
| 400 | .zcmop, | ||
| 401 | .zfa, | ||
| 402 | .zfhmin, | ||
| 403 | .zic64b, | ||
| 404 | .zicbom, | ||
| 405 | .zicbop, | ||
| 406 | .zicboz, | ||
| 407 | .ziccamoa, | ||
| 408 | .ziccif, | ||
| 409 | .zicclsm, | ||
| 410 | .ziccrse, | ||
| 411 | .zicntr, | ||
| 412 | .zicond, | ||
| 413 | .zihintntl, | ||
| 414 | .zihintpause, | ||
| 415 | .zihpm, | ||
| 416 | .zimop, | ||
| 417 | .zkt, | ||
| 418 | .zvbb, | ||
| 419 | .zvfhmin, | ||
| 420 | .zvkt, | ||
| 269 | }), | 421 | }), |
| 270 | }; | 422 | }; |
| 271 | result[@intFromEnum(Feature.experimental_zfbfmin)] = .{ | 423 | result[@intFromEnum(Feature.experimental_rvb23s64)] = .{ |
| 272 | .llvm_name = "experimental-zfbfmin", | 424 | .llvm_name = "experimental-rvb23s64", |
| 273 | .description = "'Zfbfmin' (Scalar BF16 Converts)", | 425 | .description = "RISC-V experimental-rvb23s64 profile", |
| 274 | .dependencies = featureSet(&[_]Feature{ | 426 | .dependencies = featureSet(&[_]Feature{ |
| 275 | .f, | 427 | .@"64bit", |
| 428 | .a, | ||
| 429 | .c, | ||
| 430 | .d, | ||
| 431 | .i, | ||
| 432 | .m, | ||
| 433 | .ssccptr, | ||
| 434 | .sscofpmf, | ||
| 435 | .sscounterenw, | ||
| 436 | .sstc, | ||
| 437 | .sstvala, | ||
| 438 | .sstvecd, | ||
| 439 | .ssu64xl, | ||
| 440 | .svade, | ||
| 441 | .svbare, | ||
| 442 | .svinval, | ||
| 443 | .svnapot, | ||
| 444 | .svpbmt, | ||
| 445 | .za64rs, | ||
| 446 | .zawrs, | ||
| 447 | .zba, | ||
| 448 | .zbb, | ||
| 449 | .zbs, | ||
| 450 | .zcb, | ||
| 451 | .zcmop, | ||
| 452 | .zfa, | ||
| 453 | .zic64b, | ||
| 454 | .zicbom, | ||
| 455 | .zicbop, | ||
| 456 | .zicboz, | ||
| 457 | .ziccamoa, | ||
| 458 | .ziccif, | ||
| 459 | .zicclsm, | ||
| 460 | .ziccrse, | ||
| 461 | .zicntr, | ||
| 462 | .zicond, | ||
| 463 | .zifencei, | ||
| 464 | .zihintntl, | ||
| 465 | .zihintpause, | ||
| 466 | .zihpm, | ||
| 467 | .zimop, | ||
| 468 | .zkt, | ||
| 276 | }), | 469 | }), |
| 277 | }; | 470 | }; |
| 278 | result[@intFromEnum(Feature.experimental_zicfilp)] = .{ | 471 | result[@intFromEnum(Feature.experimental_rvb23u64)] = .{ |
| 279 | .llvm_name = "experimental-zicfilp", | 472 | .llvm_name = "experimental-rvb23u64", |
| 280 | .description = "'Zicfilp' (Landing pad)", | 473 | .description = "RISC-V experimental-rvb23u64 profile", |
| 281 | .dependencies = featureSet(&[_]Feature{}), | 474 | .dependencies = featureSet(&[_]Feature{ |
| 475 | .@"64bit", | ||
| 476 | .a, | ||
| 477 | .c, | ||
| 478 | .d, | ||
| 479 | .i, | ||
| 480 | .m, | ||
| 481 | .za64rs, | ||
| 482 | .zawrs, | ||
| 483 | .zba, | ||
| 484 | .zbb, | ||
| 485 | .zbs, | ||
| 486 | .zcb, | ||
| 487 | .zcmop, | ||
| 488 | .zfa, | ||
| 489 | .zic64b, | ||
| 490 | .zicbom, | ||
| 491 | .zicbop, | ||
| 492 | .zicboz, | ||
| 493 | .ziccamoa, | ||
| 494 | .ziccif, | ||
| 495 | .zicclsm, | ||
| 496 | .ziccrse, | ||
| 497 | .zicntr, | ||
| 498 | .zicond, | ||
| 499 | .zihintntl, | ||
| 500 | .zihintpause, | ||
| 501 | .zihpm, | ||
| 502 | .zimop, | ||
| 503 | .zkt, | ||
| 504 | }), | ||
| 282 | }; | 505 | }; |
| 283 | result[@intFromEnum(Feature.experimental_zicfiss)] = .{ | 506 | result[@intFromEnum(Feature.experimental_rvm23u32)] = .{ |
| 284 | .llvm_name = "experimental-zicfiss", | 507 | .llvm_name = "experimental-rvm23u32", |
| 285 | .description = "'Zicfiss' (Shadow stack)", | 508 | .description = "RISC-V experimental-rvm23u32 profile", |
| 286 | .dependencies = featureSet(&[_]Feature{ | 509 | .dependencies = featureSet(&[_]Feature{ |
| 287 | .experimental_zimop, | 510 | .@"32bit", |
| 288 | .zicsr, | 511 | .i, |
| 512 | .m, | ||
| 513 | .zba, | ||
| 514 | .zbb, | ||
| 515 | .zbs, | ||
| 516 | .zce, | ||
| 517 | .zcmop, | ||
| 518 | .zicbop, | ||
| 519 | .zicond, | ||
| 520 | .zihintntl, | ||
| 521 | .zihintpause, | ||
| 522 | .zimop, | ||
| 289 | }), | 523 | }), |
| 290 | }; | 524 | }; |
| 291 | result[@intFromEnum(Feature.experimental_zimop)] = .{ | 525 | result[@intFromEnum(Feature.experimental_smmpm)] = .{ |
| 292 | .llvm_name = "experimental-zimop", | 526 | .llvm_name = "experimental-smmpm", |
| 293 | .description = "'Zimop' (May-Be-Operations)", | 527 | .description = "'Smmpm' (Machine-level Pointer Masking for M-mode)", |
| 294 | .dependencies = featureSet(&[_]Feature{}), | 528 | .dependencies = featureSet(&[_]Feature{}), |
| 295 | }; | 529 | }; |
| 296 | result[@intFromEnum(Feature.experimental_ztso)] = .{ | 530 | result[@intFromEnum(Feature.experimental_smnpm)] = .{ |
| 297 | .llvm_name = "experimental-ztso", | 531 | .llvm_name = "experimental-smnpm", |
| 298 | .description = "'Ztso' (Memory Model - Total Store Order)", | 532 | .description = "'Smnpm' (Machine-level Pointer Masking for next lower privilege mode)", |
| 299 | .dependencies = featureSet(&[_]Feature{}), | 533 | .dependencies = featureSet(&[_]Feature{}), |
| 300 | }; | 534 | }; |
| 301 | result[@intFromEnum(Feature.experimental_zvfbfmin)] = .{ | 535 | result[@intFromEnum(Feature.experimental_ssnpm)] = .{ |
| 302 | .llvm_name = "experimental-zvfbfmin", | 536 | .llvm_name = "experimental-ssnpm", |
| 303 | .description = "'Zvbfmin' (Vector BF16 Converts)", | 537 | .description = "'Ssnpm' (Supervisor-level Pointer Masking for next lower privilege mode)", |
| 538 | .dependencies = featureSet(&[_]Feature{}), | ||
| 539 | }; | ||
| 540 | result[@intFromEnum(Feature.experimental_sspm)] = .{ | ||
| 541 | .llvm_name = "experimental-sspm", | ||
| 542 | .description = "'Sspm' (Indicates Supervisor-mode Pointer Masking)", | ||
| 543 | .dependencies = featureSet(&[_]Feature{}), | ||
| 544 | }; | ||
| 545 | result[@intFromEnum(Feature.experimental_ssqosid)] = .{ | ||
| 546 | .llvm_name = "experimental-ssqosid", | ||
| 547 | .description = "'Ssqosid' (Quality-of-Service (QoS) Identifiers)", | ||
| 548 | .dependencies = featureSet(&[_]Feature{}), | ||
| 549 | }; | ||
| 550 | result[@intFromEnum(Feature.experimental_supm)] = .{ | ||
| 551 | .llvm_name = "experimental-supm", | ||
| 552 | .description = "'Supm' (Indicates User-mode Pointer Masking)", | ||
| 553 | .dependencies = featureSet(&[_]Feature{}), | ||
| 554 | }; | ||
| 555 | result[@intFromEnum(Feature.experimental_zacas)] = .{ | ||
| 556 | .llvm_name = "experimental-zacas", | ||
| 557 | .description = "'Zacas' (Atomic Compare-And-Swap Instructions)", | ||
| 558 | .dependencies = featureSet(&[_]Feature{}), | ||
| 559 | }; | ||
| 560 | result[@intFromEnum(Feature.experimental_zalasr)] = .{ | ||
| 561 | .llvm_name = "experimental-zalasr", | ||
| 562 | .description = "'Zalasr' (Load-Acquire and Store-Release Instructions)", | ||
| 563 | .dependencies = featureSet(&[_]Feature{}), | ||
| 564 | }; | ||
| 565 | result[@intFromEnum(Feature.experimental_zicfilp)] = .{ | ||
| 566 | .llvm_name = "experimental-zicfilp", | ||
| 567 | .description = "'Zicfilp' (Landing pad)", | ||
| 304 | .dependencies = featureSet(&[_]Feature{ | 568 | .dependencies = featureSet(&[_]Feature{ |
| 305 | .zve32f, | 569 | .zicsr, |
| 306 | }), | 570 | }), |
| 307 | }; | 571 | }; |
| 308 | result[@intFromEnum(Feature.experimental_zvfbfwma)] = .{ | 572 | result[@intFromEnum(Feature.experimental_zicfiss)] = .{ |
| 309 | .llvm_name = "experimental-zvfbfwma", | 573 | .llvm_name = "experimental-zicfiss", |
| 310 | .description = "'Zvfbfwma' (Vector BF16 widening mul-add)", | 574 | .description = "'Zicfiss' (Shadow stack)", |
| 311 | .dependencies = featureSet(&[_]Feature{ | 575 | .dependencies = featureSet(&[_]Feature{ |
| 312 | .experimental_zfbfmin, | 576 | .zicsr, |
| 313 | .experimental_zvfbfmin, | 577 | .zimop, |
| 314 | }), | 578 | }), |
| 315 | }; | 579 | }; |
| 316 | result[@intFromEnum(Feature.f)] = .{ | 580 | result[@intFromEnum(Feature.f)] = .{ |
| ... | @@ -320,16 +584,16 @@ pub const all_features = blk: { | ... | @@ -320,16 +584,16 @@ pub const all_features = blk: { |
| 320 | .zicsr, | 584 | .zicsr, |
| 321 | }), | 585 | }), |
| 322 | }; | 586 | }; |
| 323 | result[@intFromEnum(Feature.fast_unaligned_access)] = .{ | ||
| 324 | .llvm_name = "fast-unaligned-access", | ||
| 325 | .description = "Has reasonably performant unaligned loads and stores (both scalar and vector)", | ||
| 326 | .dependencies = featureSet(&[_]Feature{}), | ||
| 327 | }; | ||
| 328 | result[@intFromEnum(Feature.forced_atomics)] = .{ | 587 | result[@intFromEnum(Feature.forced_atomics)] = .{ |
| 329 | .llvm_name = "forced-atomics", | 588 | .llvm_name = "forced-atomics", |
| 330 | .description = "Assume that lock-free native-width atomics are available", | 589 | .description = "Assume that lock-free native-width atomics are available", |
| 331 | .dependencies = featureSet(&[_]Feature{}), | 590 | .dependencies = featureSet(&[_]Feature{}), |
| 332 | }; | 591 | }; |
| 592 | result[@intFromEnum(Feature.forced_sw_shadow_stack)] = .{ | ||
| 593 | .llvm_name = "forced-sw-shadow-stack", | ||
| 594 | .description = "Implement shadow stack with software.", | ||
| 595 | .dependencies = featureSet(&[_]Feature{}), | ||
| 596 | }; | ||
| 333 | result[@intFromEnum(Feature.h)] = .{ | 597 | result[@intFromEnum(Feature.h)] = .{ |
| 334 | .llvm_name = "h", | 598 | .llvm_name = "h", |
| 335 | .description = "'H' (Hypervisor)", | 599 | .description = "'H' (Hypervisor)", |
| ... | @@ -353,23 +617,45 @@ pub const all_features = blk: { | ... | @@ -353,23 +617,45 @@ pub const all_features = blk: { |
| 353 | result[@intFromEnum(Feature.m)] = .{ | 617 | result[@intFromEnum(Feature.m)] = .{ |
| 354 | .llvm_name = "m", | 618 | .llvm_name = "m", |
| 355 | .description = "'M' (Integer Multiplication and Division)", | 619 | .description = "'M' (Integer Multiplication and Division)", |
| 356 | .dependencies = featureSet(&[_]Feature{}), | 620 | .dependencies = featureSet(&[_]Feature{ |
| 621 | .zmmul, | ||
| 622 | }), | ||
| 357 | }; | 623 | }; |
| 358 | result[@intFromEnum(Feature.no_default_unroll)] = .{ | 624 | result[@intFromEnum(Feature.no_default_unroll)] = .{ |
| 359 | .llvm_name = "no-default-unroll", | 625 | .llvm_name = "no-default-unroll", |
| 360 | .description = "Disable default unroll preference.", | 626 | .description = "Disable default unroll preference.", |
| 361 | .dependencies = featureSet(&[_]Feature{}), | 627 | .dependencies = featureSet(&[_]Feature{}), |
| 362 | }; | 628 | }; |
| 363 | result[@intFromEnum(Feature.no_optimized_zero_stride_load)] = .{ | ||
| 364 | .llvm_name = "no-optimized-zero-stride-load", | ||
| 365 | .description = "Hasn't optimized (perform fewer memory operations)zero-stride vector load", | ||
| 366 | .dependencies = featureSet(&[_]Feature{}), | ||
| 367 | }; | ||
| 368 | result[@intFromEnum(Feature.no_rvc_hints)] = .{ | 629 | result[@intFromEnum(Feature.no_rvc_hints)] = .{ |
| 369 | .llvm_name = "no-rvc-hints", | 630 | .llvm_name = "no-rvc-hints", |
| 370 | .description = "Disable RVC Hint Instructions.", | 631 | .description = "Disable RVC Hint Instructions.", |
| 371 | .dependencies = featureSet(&[_]Feature{}), | 632 | .dependencies = featureSet(&[_]Feature{}), |
| 372 | }; | 633 | }; |
| 634 | result[@intFromEnum(Feature.no_sink_splat_operands)] = .{ | ||
| 635 | .llvm_name = "no-sink-splat-operands", | ||
| 636 | .description = "Disable sink splat operands to enable .vx, .vf,.wx, and .wf instructions", | ||
| 637 | .dependencies = featureSet(&[_]Feature{}), | ||
| 638 | }; | ||
| 639 | result[@intFromEnum(Feature.no_trailing_seq_cst_fence)] = .{ | ||
| 640 | .llvm_name = "no-trailing-seq-cst-fence", | ||
| 641 | .description = "Disable trailing fence for seq-cst store.", | ||
| 642 | .dependencies = featureSet(&[_]Feature{}), | ||
| 643 | }; | ||
| 644 | result[@intFromEnum(Feature.optimized_zero_stride_load)] = .{ | ||
| 645 | .llvm_name = "optimized-zero-stride-load", | ||
| 646 | .description = "Optimized (perform fewer memory operations)zero-stride vector load", | ||
| 647 | .dependencies = featureSet(&[_]Feature{}), | ||
| 648 | }; | ||
| 649 | result[@intFromEnum(Feature.predictable_select_expensive)] = .{ | ||
| 650 | .llvm_name = "predictable-select-expensive", | ||
| 651 | .description = "Prefer likely predicted branches over selects", | ||
| 652 | .dependencies = featureSet(&[_]Feature{}), | ||
| 653 | }; | ||
| 654 | result[@intFromEnum(Feature.prefer_w_inst)] = .{ | ||
| 655 | .llvm_name = "prefer-w-inst", | ||
| 656 | .description = "Prefer instructions with W suffix", | ||
| 657 | .dependencies = featureSet(&[_]Feature{}), | ||
| 658 | }; | ||
| 373 | result[@intFromEnum(Feature.relax)] = .{ | 659 | result[@intFromEnum(Feature.relax)] = .{ |
| 374 | .llvm_name = "relax", | 660 | .llvm_name = "relax", |
| 375 | .description = "Enable Linker relaxation.", | 661 | .description = "Enable Linker relaxation.", |
| ... | @@ -530,14 +816,144 @@ pub const all_features = blk: { | ... | @@ -530,14 +816,144 @@ pub const all_features = blk: { |
| 530 | .description = "Reserve X9", | 816 | .description = "Reserve X9", |
| 531 | .dependencies = featureSet(&[_]Feature{}), | 817 | .dependencies = featureSet(&[_]Feature{}), |
| 532 | }; | 818 | }; |
| 819 | result[@intFromEnum(Feature.rva20s64)] = .{ | ||
| 820 | .llvm_name = "rva20s64", | ||
| 821 | .description = "RISC-V rva20s64 profile", | ||
| 822 | .dependencies = featureSet(&[_]Feature{ | ||
| 823 | .@"64bit", | ||
| 824 | .a, | ||
| 825 | .c, | ||
| 826 | .d, | ||
| 827 | .i, | ||
| 828 | .m, | ||
| 829 | .ssccptr, | ||
| 830 | .sstvala, | ||
| 831 | .sstvecd, | ||
| 832 | .svade, | ||
| 833 | .svbare, | ||
| 834 | .za128rs, | ||
| 835 | .ziccamoa, | ||
| 836 | .ziccif, | ||
| 837 | .zicclsm, | ||
| 838 | .ziccrse, | ||
| 839 | .zicntr, | ||
| 840 | .zifencei, | ||
| 841 | }), | ||
| 842 | }; | ||
| 843 | result[@intFromEnum(Feature.rva20u64)] = .{ | ||
| 844 | .llvm_name = "rva20u64", | ||
| 845 | .description = "RISC-V rva20u64 profile", | ||
| 846 | .dependencies = featureSet(&[_]Feature{ | ||
| 847 | .@"64bit", | ||
| 848 | .a, | ||
| 849 | .c, | ||
| 850 | .d, | ||
| 851 | .i, | ||
| 852 | .m, | ||
| 853 | .za128rs, | ||
| 854 | .ziccamoa, | ||
| 855 | .ziccif, | ||
| 856 | .zicclsm, | ||
| 857 | .ziccrse, | ||
| 858 | .zicntr, | ||
| 859 | }), | ||
| 860 | }; | ||
| 861 | result[@intFromEnum(Feature.rva22s64)] = .{ | ||
| 862 | .llvm_name = "rva22s64", | ||
| 863 | .description = "RISC-V rva22s64 profile", | ||
| 864 | .dependencies = featureSet(&[_]Feature{ | ||
| 865 | .@"64bit", | ||
| 866 | .a, | ||
| 867 | .c, | ||
| 868 | .d, | ||
| 869 | .i, | ||
| 870 | .m, | ||
| 871 | .ssccptr, | ||
| 872 | .sscounterenw, | ||
| 873 | .sstvala, | ||
| 874 | .sstvecd, | ||
| 875 | .svade, | ||
| 876 | .svbare, | ||
| 877 | .svinval, | ||
| 878 | .svpbmt, | ||
| 879 | .za64rs, | ||
| 880 | .zba, | ||
| 881 | .zbb, | ||
| 882 | .zbs, | ||
| 883 | .zfhmin, | ||
| 884 | .zic64b, | ||
| 885 | .zicbom, | ||
| 886 | .zicbop, | ||
| 887 | .zicboz, | ||
| 888 | .ziccamoa, | ||
| 889 | .ziccif, | ||
| 890 | .zicclsm, | ||
| 891 | .ziccrse, | ||
| 892 | .zicntr, | ||
| 893 | .zifencei, | ||
| 894 | .zihintpause, | ||
| 895 | .zihpm, | ||
| 896 | .zkt, | ||
| 897 | }), | ||
| 898 | }; | ||
| 899 | result[@intFromEnum(Feature.rva22u64)] = .{ | ||
| 900 | .llvm_name = "rva22u64", | ||
| 901 | .description = "RISC-V rva22u64 profile", | ||
| 902 | .dependencies = featureSet(&[_]Feature{ | ||
| 903 | .@"64bit", | ||
| 904 | .a, | ||
| 905 | .c, | ||
| 906 | .d, | ||
| 907 | .i, | ||
| 908 | .m, | ||
| 909 | .za64rs, | ||
| 910 | .zba, | ||
| 911 | .zbb, | ||
| 912 | .zbs, | ||
| 913 | .zfhmin, | ||
| 914 | .zic64b, | ||
| 915 | .zicbom, | ||
| 916 | .zicbop, | ||
| 917 | .zicboz, | ||
| 918 | .ziccamoa, | ||
| 919 | .ziccif, | ||
| 920 | .zicclsm, | ||
| 921 | .ziccrse, | ||
| 922 | .zicntr, | ||
| 923 | .zihintpause, | ||
| 924 | .zihpm, | ||
| 925 | .zkt, | ||
| 926 | }), | ||
| 927 | }; | ||
| 928 | result[@intFromEnum(Feature.rvi20u32)] = .{ | ||
| 929 | .llvm_name = "rvi20u32", | ||
| 930 | .description = "RISC-V rvi20u32 profile", | ||
| 931 | .dependencies = featureSet(&[_]Feature{ | ||
| 932 | .@"32bit", | ||
| 933 | .i, | ||
| 934 | }), | ||
| 935 | }; | ||
| 936 | result[@intFromEnum(Feature.rvi20u64)] = .{ | ||
| 937 | .llvm_name = "rvi20u64", | ||
| 938 | .description = "RISC-V rvi20u64 profile", | ||
| 939 | .dependencies = featureSet(&[_]Feature{ | ||
| 940 | .@"64bit", | ||
| 941 | .i, | ||
| 942 | }), | ||
| 943 | }; | ||
| 533 | result[@intFromEnum(Feature.save_restore)] = .{ | 944 | result[@intFromEnum(Feature.save_restore)] = .{ |
| 534 | .llvm_name = "save-restore", | 945 | .llvm_name = "save-restore", |
| 535 | .description = "Enable save/restore.", | 946 | .description = "Enable save/restore.", |
| 536 | .dependencies = featureSet(&[_]Feature{}), | 947 | .dependencies = featureSet(&[_]Feature{}), |
| 537 | }; | 948 | }; |
| 538 | result[@intFromEnum(Feature.seq_cst_trailing_fence)] = .{ | 949 | result[@intFromEnum(Feature.shcounterenw)] = .{ |
| 539 | .llvm_name = "seq-cst-trailing-fence", | 950 | .llvm_name = "shcounterenw", |
| 540 | .description = "Enable trailing fence for seq-cst store.", | 951 | .description = "'Shcounterenw' (Support writeable hcounteren enable bit for any hpmcounter that is not read-only zero)", |
| 952 | .dependencies = featureSet(&[_]Feature{}), | ||
| 953 | }; | ||
| 954 | result[@intFromEnum(Feature.shgatpa)] = .{ | ||
| 955 | .llvm_name = "shgatpa", | ||
| 956 | .description = "'Sgatpa' (SvNNx4 mode supported for all modes supported by satp, as well as Bare)", | ||
| 541 | .dependencies = featureSet(&[_]Feature{}), | 957 | .dependencies = featureSet(&[_]Feature{}), |
| 542 | }; | 958 | }; |
| 543 | result[@intFromEnum(Feature.shifted_zextw_fusion)] = .{ | 959 | result[@intFromEnum(Feature.shifted_zextw_fusion)] = .{ |
| ... | @@ -550,21 +966,126 @@ pub const all_features = blk: { | ... | @@ -550,21 +966,126 @@ pub const all_features = blk: { |
| 550 | .description = "Enable short forward branch optimization", | 966 | .description = "Enable short forward branch optimization", |
| 551 | .dependencies = featureSet(&[_]Feature{}), | 967 | .dependencies = featureSet(&[_]Feature{}), |
| 552 | }; | 968 | }; |
| 969 | result[@intFromEnum(Feature.shtvala)] = .{ | ||
| 970 | .llvm_name = "shtvala", | ||
| 971 | .description = "'Shtvala' (htval provides all needed values)", | ||
| 972 | .dependencies = featureSet(&[_]Feature{}), | ||
| 973 | }; | ||
| 974 | result[@intFromEnum(Feature.shvsatpa)] = .{ | ||
| 975 | .llvm_name = "shvsatpa", | ||
| 976 | .description = "'Svsatpa' (vsatp supports all modes supported by satp)", | ||
| 977 | .dependencies = featureSet(&[_]Feature{}), | ||
| 978 | }; | ||
| 979 | result[@intFromEnum(Feature.shvstvala)] = .{ | ||
| 980 | .llvm_name = "shvstvala", | ||
| 981 | .description = "'Shvstvala' (vstval provides all needed values)", | ||
| 982 | .dependencies = featureSet(&[_]Feature{}), | ||
| 983 | }; | ||
| 984 | result[@intFromEnum(Feature.shvstvecd)] = .{ | ||
| 985 | .llvm_name = "shvstvecd", | ||
| 986 | .description = "'Shvstvecd' (vstvec supports Direct mode)", | ||
| 987 | .dependencies = featureSet(&[_]Feature{}), | ||
| 988 | }; | ||
| 553 | result[@intFromEnum(Feature.smaia)] = .{ | 989 | result[@intFromEnum(Feature.smaia)] = .{ |
| 554 | .llvm_name = "smaia", | 990 | .llvm_name = "smaia", |
| 555 | .description = "'Smaia' (Advanced Interrupt Architecture Machine Level)", | 991 | .description = "'Smaia' (Advanced Interrupt Architecture Machine Level)", |
| 556 | .dependencies = featureSet(&[_]Feature{}), | 992 | .dependencies = featureSet(&[_]Feature{}), |
| 557 | }; | 993 | }; |
| 994 | result[@intFromEnum(Feature.smcdeleg)] = .{ | ||
| 995 | .llvm_name = "smcdeleg", | ||
| 996 | .description = "'Smcdeleg' (Counter Delegation Machine Level)", | ||
| 997 | .dependencies = featureSet(&[_]Feature{}), | ||
| 998 | }; | ||
| 999 | result[@intFromEnum(Feature.smcsrind)] = .{ | ||
| 1000 | .llvm_name = "smcsrind", | ||
| 1001 | .description = "'Smcsrind' (Indirect CSR Access Machine Level)", | ||
| 1002 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1003 | }; | ||
| 558 | result[@intFromEnum(Feature.smepmp)] = .{ | 1004 | result[@intFromEnum(Feature.smepmp)] = .{ |
| 559 | .llvm_name = "smepmp", | 1005 | .llvm_name = "smepmp", |
| 560 | .description = "'Smepmp' (Enhanced Physical Memory Protection)", | 1006 | .description = "'Smepmp' (Enhanced Physical Memory Protection)", |
| 561 | .dependencies = featureSet(&[_]Feature{}), | 1007 | .dependencies = featureSet(&[_]Feature{}), |
| 562 | }; | 1008 | }; |
| 1009 | result[@intFromEnum(Feature.smstateen)] = .{ | ||
| 1010 | .llvm_name = "smstateen", | ||
| 1011 | .description = "'Smstateen' (Machine-mode view of the state-enable extension)", | ||
| 1012 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1013 | }; | ||
| 563 | result[@intFromEnum(Feature.ssaia)] = .{ | 1014 | result[@intFromEnum(Feature.ssaia)] = .{ |
| 564 | .llvm_name = "ssaia", | 1015 | .llvm_name = "ssaia", |
| 565 | .description = "'Ssaia' (Advanced Interrupt Architecture Supervisor Level)", | 1016 | .description = "'Ssaia' (Advanced Interrupt Architecture Supervisor Level)", |
| 566 | .dependencies = featureSet(&[_]Feature{}), | 1017 | .dependencies = featureSet(&[_]Feature{}), |
| 567 | }; | 1018 | }; |
| 1019 | result[@intFromEnum(Feature.ssccfg)] = .{ | ||
| 1020 | .llvm_name = "ssccfg", | ||
| 1021 | .description = "'Ssccfg' (Counter Configuration Supervisor Level)", | ||
| 1022 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1023 | }; | ||
| 1024 | result[@intFromEnum(Feature.ssccptr)] = .{ | ||
| 1025 | .llvm_name = "ssccptr", | ||
| 1026 | .description = "'Ssccptr' (Main memory supports page table reads)", | ||
| 1027 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1028 | }; | ||
| 1029 | result[@intFromEnum(Feature.sscofpmf)] = .{ | ||
| 1030 | .llvm_name = "sscofpmf", | ||
| 1031 | .description = "'Sscofpmf' (Count Overflow and Mode-Based Filtering)", | ||
| 1032 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1033 | }; | ||
| 1034 | result[@intFromEnum(Feature.sscounterenw)] = .{ | ||
| 1035 | .llvm_name = "sscounterenw", | ||
| 1036 | .description = "'Sscounterenw' (Support writeable scounteren enable bit for any hpmcounter that is not read-only zero)", | ||
| 1037 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1038 | }; | ||
| 1039 | result[@intFromEnum(Feature.sscsrind)] = .{ | ||
| 1040 | .llvm_name = "sscsrind", | ||
| 1041 | .description = "'Sscsrind' (Indirect CSR Access Supervisor Level)", | ||
| 1042 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1043 | }; | ||
| 1044 | result[@intFromEnum(Feature.ssstateen)] = .{ | ||
| 1045 | .llvm_name = "ssstateen", | ||
| 1046 | .description = "'Ssstateen' (Supervisor-mode view of the state-enable extension)", | ||
| 1047 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1048 | }; | ||
| 1049 | result[@intFromEnum(Feature.ssstrict)] = .{ | ||
| 1050 | .llvm_name = "ssstrict", | ||
| 1051 | .description = "'Ssstrict' (No non-conforming extensions are present)", | ||
| 1052 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1053 | }; | ||
| 1054 | result[@intFromEnum(Feature.sstc)] = .{ | ||
| 1055 | .llvm_name = "sstc", | ||
| 1056 | .description = "'Sstc' (Supervisor-mode timer interrupts)", | ||
| 1057 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1058 | }; | ||
| 1059 | result[@intFromEnum(Feature.sstvala)] = .{ | ||
| 1060 | .llvm_name = "sstvala", | ||
| 1061 | .description = "'Sstvala' (stval provides all needed values)", | ||
| 1062 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1063 | }; | ||
| 1064 | result[@intFromEnum(Feature.sstvecd)] = .{ | ||
| 1065 | .llvm_name = "sstvecd", | ||
| 1066 | .description = "'Sstvecd' (stvec supports Direct mode)", | ||
| 1067 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1068 | }; | ||
| 1069 | result[@intFromEnum(Feature.ssu64xl)] = .{ | ||
| 1070 | .llvm_name = "ssu64xl", | ||
| 1071 | .description = "'Ssu64xl' (UXLEN=64 supported)", | ||
| 1072 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1073 | }; | ||
| 1074 | result[@intFromEnum(Feature.svade)] = .{ | ||
| 1075 | .llvm_name = "svade", | ||
| 1076 | .description = "'Svade' (Raise exceptions on improper A/D bits)", | ||
| 1077 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1078 | }; | ||
| 1079 | result[@intFromEnum(Feature.svadu)] = .{ | ||
| 1080 | .llvm_name = "svadu", | ||
| 1081 | .description = "'Svadu' (Hardware A/D updates)", | ||
| 1082 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1083 | }; | ||
| 1084 | result[@intFromEnum(Feature.svbare)] = .{ | ||
| 1085 | .llvm_name = "svbare", | ||
| 1086 | .description = "'Svbare' $(satp mode Bare supported)", | ||
| 1087 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1088 | }; | ||
| 568 | result[@intFromEnum(Feature.svinval)] = .{ | 1089 | result[@intFromEnum(Feature.svinval)] = .{ |
| 569 | .llvm_name = "svinval", | 1090 | .llvm_name = "svinval", |
| 570 | .description = "'Svinval' (Fine-Grained Address-Translation Cache Invalidation)", | 1091 | .description = "'Svinval' (Fine-Grained Address-Translation Cache Invalidation)", |
| ... | @@ -590,6 +1111,11 @@ pub const all_features = blk: { | ... | @@ -590,6 +1111,11 @@ pub const all_features = blk: { |
| 590 | .description = "Has reasonably performant unaligned scalar loads and stores", | 1111 | .description = "Has reasonably performant unaligned scalar loads and stores", |
| 591 | .dependencies = featureSet(&[_]Feature{}), | 1112 | .dependencies = featureSet(&[_]Feature{}), |
| 592 | }; | 1113 | }; |
| 1114 | result[@intFromEnum(Feature.unaligned_vector_mem)] = .{ | ||
| 1115 | .llvm_name = "unaligned-vector-mem", | ||
| 1116 | .description = "Has reasonably performant unaligned vector loads and stores", | ||
| 1117 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1118 | }; | ||
| 593 | result[@intFromEnum(Feature.use_postra_scheduler)] = .{ | 1119 | result[@intFromEnum(Feature.use_postra_scheduler)] = .{ |
| 594 | .llvm_name = "use-postra-scheduler", | 1120 | .llvm_name = "use-postra-scheduler", |
| 595 | .description = "Schedule again after register allocation", | 1121 | .description = "Schedule again after register allocation", |
| ... | @@ -643,6 +1169,11 @@ pub const all_features = blk: { | ... | @@ -643,6 +1169,11 @@ pub const all_features = blk: { |
| 643 | .description = "'XCVsimd' (CORE-V SIMD ALU)", | 1169 | .description = "'XCVsimd' (CORE-V SIMD ALU)", |
| 644 | .dependencies = featureSet(&[_]Feature{}), | 1170 | .dependencies = featureSet(&[_]Feature{}), |
| 645 | }; | 1171 | }; |
| 1172 | result[@intFromEnum(Feature.xsfcease)] = .{ | ||
| 1173 | .llvm_name = "xsfcease", | ||
| 1174 | .description = "'XSfcease' (SiFive sf.cease Instruction)", | ||
| 1175 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1176 | }; | ||
| 646 | result[@intFromEnum(Feature.xsfvcp)] = .{ | 1177 | result[@intFromEnum(Feature.xsfvcp)] = .{ |
| 647 | .llvm_name = "xsfvcp", | 1178 | .llvm_name = "xsfvcp", |
| 648 | .description = "'XSfvcp' (SiFive Custom Vector Coprocessor Interface Instructions)", | 1179 | .description = "'XSfvcp' (SiFive Custom Vector Coprocessor Interface Instructions)", |
| ... | @@ -661,7 +1192,7 @@ pub const all_features = blk: { | ... | @@ -661,7 +1192,7 @@ pub const all_features = blk: { |
| 661 | .llvm_name = "xsfvfwmaccqqq", | 1192 | .llvm_name = "xsfvfwmaccqqq", |
| 662 | .description = "'XSfvfwmaccqqq' (SiFive Matrix Multiply Accumulate Instruction and 4-by-4))", | 1193 | .description = "'XSfvfwmaccqqq' (SiFive Matrix Multiply Accumulate Instruction and 4-by-4))", |
| 663 | .dependencies = featureSet(&[_]Feature{ | 1194 | .dependencies = featureSet(&[_]Feature{ |
| 664 | .experimental_zvfbfmin, | 1195 | .zvfbfmin, |
| 665 | }), | 1196 | }), |
| 666 | }; | 1197 | }; |
| 667 | result[@intFromEnum(Feature.xsfvqmaccdod)] = .{ | 1198 | result[@intFromEnum(Feature.xsfvqmaccdod)] = .{ |
| ... | @@ -678,61 +1209,69 @@ pub const all_features = blk: { | ... | @@ -678,61 +1209,69 @@ pub const all_features = blk: { |
| 678 | .zve32x, | 1209 | .zve32x, |
| 679 | }), | 1210 | }), |
| 680 | }; | 1211 | }; |
| 1212 | result[@intFromEnum(Feature.xsifivecdiscarddlone)] = .{ | ||
| 1213 | .llvm_name = "xsifivecdiscarddlone", | ||
| 1214 | .description = "'XSiFivecdiscarddlone' (SiFive sf.cdiscard.d.l1 Instruction)", | ||
| 1215 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1216 | }; | ||
| 1217 | result[@intFromEnum(Feature.xsifivecflushdlone)] = .{ | ||
| 1218 | .llvm_name = "xsifivecflushdlone", | ||
| 1219 | .description = "'XSiFivecflushdlone' (SiFive sf.cflush.d.l1 Instruction)", | ||
| 1220 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1221 | }; | ||
| 681 | result[@intFromEnum(Feature.xtheadba)] = .{ | 1222 | result[@intFromEnum(Feature.xtheadba)] = .{ |
| 682 | .llvm_name = "xtheadba", | 1223 | .llvm_name = "xtheadba", |
| 683 | .description = "'xtheadba' (T-Head address calculation instructions)", | 1224 | .description = "'XTHeadBa' (T-Head address calculation instructions)", |
| 684 | .dependencies = featureSet(&[_]Feature{}), | 1225 | .dependencies = featureSet(&[_]Feature{}), |
| 685 | }; | 1226 | }; |
| 686 | result[@intFromEnum(Feature.xtheadbb)] = .{ | 1227 | result[@intFromEnum(Feature.xtheadbb)] = .{ |
| 687 | .llvm_name = "xtheadbb", | 1228 | .llvm_name = "xtheadbb", |
| 688 | .description = "'xtheadbb' (T-Head basic bit-manipulation instructions)", | 1229 | .description = "'XTHeadBb' (T-Head basic bit-manipulation instructions)", |
| 689 | .dependencies = featureSet(&[_]Feature{}), | 1230 | .dependencies = featureSet(&[_]Feature{}), |
| 690 | }; | 1231 | }; |
| 691 | result[@intFromEnum(Feature.xtheadbs)] = .{ | 1232 | result[@intFromEnum(Feature.xtheadbs)] = .{ |
| 692 | .llvm_name = "xtheadbs", | 1233 | .llvm_name = "xtheadbs", |
| 693 | .description = "'xtheadbs' (T-Head single-bit instructions)", | 1234 | .description = "'XTHeadBs' (T-Head single-bit instructions)", |
| 694 | .dependencies = featureSet(&[_]Feature{}), | 1235 | .dependencies = featureSet(&[_]Feature{}), |
| 695 | }; | 1236 | }; |
| 696 | result[@intFromEnum(Feature.xtheadcmo)] = .{ | 1237 | result[@intFromEnum(Feature.xtheadcmo)] = .{ |
| 697 | .llvm_name = "xtheadcmo", | 1238 | .llvm_name = "xtheadcmo", |
| 698 | .description = "'xtheadcmo' (T-Head cache management instructions)", | 1239 | .description = "'XTHeadCmo' (T-Head cache management instructions)", |
| 699 | .dependencies = featureSet(&[_]Feature{}), | 1240 | .dependencies = featureSet(&[_]Feature{}), |
| 700 | }; | 1241 | }; |
| 701 | result[@intFromEnum(Feature.xtheadcondmov)] = .{ | 1242 | result[@intFromEnum(Feature.xtheadcondmov)] = .{ |
| 702 | .llvm_name = "xtheadcondmov", | 1243 | .llvm_name = "xtheadcondmov", |
| 703 | .description = "'xtheadcondmov' (T-Head conditional move instructions)", | 1244 | .description = "'XTHeadCondMov' (T-Head conditional move instructions)", |
| 704 | .dependencies = featureSet(&[_]Feature{}), | 1245 | .dependencies = featureSet(&[_]Feature{}), |
| 705 | }; | 1246 | }; |
| 706 | result[@intFromEnum(Feature.xtheadfmemidx)] = .{ | 1247 | result[@intFromEnum(Feature.xtheadfmemidx)] = .{ |
| 707 | .llvm_name = "xtheadfmemidx", | 1248 | .llvm_name = "xtheadfmemidx", |
| 708 | .description = "'xtheadfmemidx' (T-Head FP Indexed Memory Operations)", | 1249 | .description = "'XTHeadFMemIdx' (T-Head FP Indexed Memory Operations)", |
| 709 | .dependencies = featureSet(&[_]Feature{ | 1250 | .dependencies = featureSet(&[_]Feature{}), |
| 710 | .f, | ||
| 711 | }), | ||
| 712 | }; | 1251 | }; |
| 713 | result[@intFromEnum(Feature.xtheadmac)] = .{ | 1252 | result[@intFromEnum(Feature.xtheadmac)] = .{ |
| 714 | .llvm_name = "xtheadmac", | 1253 | .llvm_name = "xtheadmac", |
| 715 | .description = "'xtheadmac' (T-Head Multiply-Accumulate Instructions)", | 1254 | .description = "'XTHeadMac' (T-Head Multiply-Accumulate Instructions)", |
| 716 | .dependencies = featureSet(&[_]Feature{}), | 1255 | .dependencies = featureSet(&[_]Feature{}), |
| 717 | }; | 1256 | }; |
| 718 | result[@intFromEnum(Feature.xtheadmemidx)] = .{ | 1257 | result[@intFromEnum(Feature.xtheadmemidx)] = .{ |
| 719 | .llvm_name = "xtheadmemidx", | 1258 | .llvm_name = "xtheadmemidx", |
| 720 | .description = "'xtheadmemidx' (T-Head Indexed Memory Operations)", | 1259 | .description = "'XTHeadMemIdx' (T-Head Indexed Memory Operations)", |
| 721 | .dependencies = featureSet(&[_]Feature{}), | 1260 | .dependencies = featureSet(&[_]Feature{}), |
| 722 | }; | 1261 | }; |
| 723 | result[@intFromEnum(Feature.xtheadmempair)] = .{ | 1262 | result[@intFromEnum(Feature.xtheadmempair)] = .{ |
| 724 | .llvm_name = "xtheadmempair", | 1263 | .llvm_name = "xtheadmempair", |
| 725 | .description = "'xtheadmempair' (T-Head two-GPR Memory Operations)", | 1264 | .description = "'XTHeadMemPair' (T-Head two-GPR Memory Operations)", |
| 726 | .dependencies = featureSet(&[_]Feature{}), | 1265 | .dependencies = featureSet(&[_]Feature{}), |
| 727 | }; | 1266 | }; |
| 728 | result[@intFromEnum(Feature.xtheadsync)] = .{ | 1267 | result[@intFromEnum(Feature.xtheadsync)] = .{ |
| 729 | .llvm_name = "xtheadsync", | 1268 | .llvm_name = "xtheadsync", |
| 730 | .description = "'xtheadsync' (T-Head multicore synchronization instructions)", | 1269 | .description = "'XTHeadSync' (T-Head multicore synchronization instructions)", |
| 731 | .dependencies = featureSet(&[_]Feature{}), | 1270 | .dependencies = featureSet(&[_]Feature{}), |
| 732 | }; | 1271 | }; |
| 733 | result[@intFromEnum(Feature.xtheadvdot)] = .{ | 1272 | result[@intFromEnum(Feature.xtheadvdot)] = .{ |
| 734 | .llvm_name = "xtheadvdot", | 1273 | .llvm_name = "xtheadvdot", |
| 735 | .description = "'xtheadvdot' (T-Head Vector Extensions for Dot)", | 1274 | .description = "'XTHeadVdot' (T-Head Vector Extensions for Dot)", |
| 736 | .dependencies = featureSet(&[_]Feature{ | 1275 | .dependencies = featureSet(&[_]Feature{ |
| 737 | .v, | 1276 | .v, |
| 738 | }), | 1277 | }), |
| ... | @@ -742,6 +1281,11 @@ pub const all_features = blk: { | ... | @@ -742,6 +1281,11 @@ pub const all_features = blk: { |
| 742 | .description = "'XVentanaCondOps' (Ventana Conditional Ops)", | 1281 | .description = "'XVentanaCondOps' (Ventana Conditional Ops)", |
| 743 | .dependencies = featureSet(&[_]Feature{}), | 1282 | .dependencies = featureSet(&[_]Feature{}), |
| 744 | }; | 1283 | }; |
| 1284 | result[@intFromEnum(Feature.xwchc)] = .{ | ||
| 1285 | .llvm_name = "xwchc", | ||
| 1286 | .description = "'Xwchc' (WCH/QingKe additional compressed opcodes)", | ||
| 1287 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1288 | }; | ||
| 745 | result[@intFromEnum(Feature.za128rs)] = .{ | 1289 | result[@intFromEnum(Feature.za128rs)] = .{ |
| 746 | .llvm_name = "za128rs", | 1290 | .llvm_name = "za128rs", |
| 747 | .description = "'Za128rs' (Reservation Set Size of at Most 128 Bytes)", | 1291 | .description = "'Za128rs' (Reservation Set Size of at Most 128 Bytes)", |
| ... | @@ -752,6 +1296,26 @@ pub const all_features = blk: { | ... | @@ -752,6 +1296,26 @@ pub const all_features = blk: { |
| 752 | .description = "'Za64rs' (Reservation Set Size of at Most 64 Bytes)", | 1296 | .description = "'Za64rs' (Reservation Set Size of at Most 64 Bytes)", |
| 753 | .dependencies = featureSet(&[_]Feature{}), | 1297 | .dependencies = featureSet(&[_]Feature{}), |
| 754 | }; | 1298 | }; |
| 1299 | result[@intFromEnum(Feature.zaamo)] = .{ | ||
| 1300 | .llvm_name = "zaamo", | ||
| 1301 | .description = "'Zaamo' (Atomic Memory Operations)", | ||
| 1302 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1303 | }; | ||
| 1304 | result[@intFromEnum(Feature.zabha)] = .{ | ||
| 1305 | .llvm_name = "zabha", | ||
| 1306 | .description = "'Zabha' (Byte and Halfword Atomic Memory Operations)", | ||
| 1307 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1308 | }; | ||
| 1309 | result[@intFromEnum(Feature.zalrsc)] = .{ | ||
| 1310 | .llvm_name = "zalrsc", | ||
| 1311 | .description = "'Zalrsc' (Load-Reserved/Store-Conditional)", | ||
| 1312 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1313 | }; | ||
| 1314 | result[@intFromEnum(Feature.zama16b)] = .{ | ||
| 1315 | .llvm_name = "zama16b", | ||
| 1316 | .description = "'Zama16b' (Atomic 16-byte misaligned loads, stores and AMOs)", | ||
| 1317 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1318 | }; | ||
| 755 | result[@intFromEnum(Feature.zawrs)] = .{ | 1319 | result[@intFromEnum(Feature.zawrs)] = .{ |
| 756 | .llvm_name = "zawrs", | 1320 | .llvm_name = "zawrs", |
| 757 | .description = "'Zawrs' (Wait on Reservation Set)", | 1321 | .description = "'Zawrs' (Wait on Reservation Set)", |
| ... | @@ -808,6 +1372,7 @@ pub const all_features = blk: { | ... | @@ -808,6 +1372,7 @@ pub const all_features = blk: { |
| 808 | .llvm_name = "zcd", | 1372 | .llvm_name = "zcd", |
| 809 | .description = "'Zcd' (Compressed Double-Precision Floating-Point Instructions)", | 1373 | .description = "'Zcd' (Compressed Double-Precision Floating-Point Instructions)", |
| 810 | .dependencies = featureSet(&[_]Feature{ | 1374 | .dependencies = featureSet(&[_]Feature{ |
| 1375 | .d, | ||
| 811 | .zca, | 1376 | .zca, |
| 812 | }), | 1377 | }), |
| 813 | }; | 1378 | }; |
| ... | @@ -823,6 +1388,14 @@ pub const all_features = blk: { | ... | @@ -823,6 +1388,14 @@ pub const all_features = blk: { |
| 823 | result[@intFromEnum(Feature.zcf)] = .{ | 1388 | result[@intFromEnum(Feature.zcf)] = .{ |
| 824 | .llvm_name = "zcf", | 1389 | .llvm_name = "zcf", |
| 825 | .description = "'Zcf' (Compressed Single-Precision Floating-Point Instructions)", | 1390 | .description = "'Zcf' (Compressed Single-Precision Floating-Point Instructions)", |
| 1391 | .dependencies = featureSet(&[_]Feature{ | ||
| 1392 | .f, | ||
| 1393 | .zca, | ||
| 1394 | }), | ||
| 1395 | }; | ||
| 1396 | result[@intFromEnum(Feature.zcmop)] = .{ | ||
| 1397 | .llvm_name = "zcmop", | ||
| 1398 | .description = "'Zcmop' (Compressed May-Be-Operations)", | ||
| 826 | .dependencies = featureSet(&[_]Feature{ | 1399 | .dependencies = featureSet(&[_]Feature{ |
| 827 | .zca, | 1400 | .zca, |
| 828 | }), | 1401 | }), |
| ... | @@ -866,6 +1439,13 @@ pub const all_features = blk: { | ... | @@ -866,6 +1439,13 @@ pub const all_features = blk: { |
| 866 | .f, | 1439 | .f, |
| 867 | }), | 1440 | }), |
| 868 | }; | 1441 | }; |
| 1442 | result[@intFromEnum(Feature.zfbfmin)] = .{ | ||
| 1443 | .llvm_name = "zfbfmin", | ||
| 1444 | .description = "'Zfbfmin' (Scalar BF16 Converts)", | ||
| 1445 | .dependencies = featureSet(&[_]Feature{ | ||
| 1446 | .f, | ||
| 1447 | }), | ||
| 1448 | }; | ||
| 869 | result[@intFromEnum(Feature.zfh)] = .{ | 1449 | result[@intFromEnum(Feature.zfh)] = .{ |
| 870 | .llvm_name = "zfh", | 1450 | .llvm_name = "zfh", |
| 871 | .description = "'Zfh' (Half-Precision Floating-Point)", | 1451 | .description = "'Zfh' (Half-Precision Floating-Point)", |
| ... | @@ -980,6 +1560,11 @@ pub const all_features = blk: { | ... | @@ -980,6 +1560,11 @@ pub const all_features = blk: { |
| 980 | .zicsr, | 1560 | .zicsr, |
| 981 | }), | 1561 | }), |
| 982 | }; | 1562 | }; |
| 1563 | result[@intFromEnum(Feature.zimop)] = .{ | ||
| 1564 | .llvm_name = "zimop", | ||
| 1565 | .description = "'Zimop' (May-Be-Operations)", | ||
| 1566 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1567 | }; | ||
| 983 | result[@intFromEnum(Feature.zk)] = .{ | 1568 | result[@intFromEnum(Feature.zk)] = .{ |
| 984 | .llvm_name = "zk", | 1569 | .llvm_name = "zk", |
| 985 | .description = "'Zk' (Standard scalar cryptography extension)", | 1570 | .description = "'Zk' (Standard scalar cryptography extension)", |
| ... | @@ -1052,6 +1637,11 @@ pub const all_features = blk: { | ... | @@ -1052,6 +1637,11 @@ pub const all_features = blk: { |
| 1052 | .description = "'Zmmul' (Integer Multiplication)", | 1637 | .description = "'Zmmul' (Integer Multiplication)", |
| 1053 | .dependencies = featureSet(&[_]Feature{}), | 1638 | .dependencies = featureSet(&[_]Feature{}), |
| 1054 | }; | 1639 | }; |
| 1640 | result[@intFromEnum(Feature.ztso)] = .{ | ||
| 1641 | .llvm_name = "ztso", | ||
| 1642 | .description = "'Ztso' (Memory Model - Total Store Order)", | ||
| 1643 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1644 | }; | ||
| 1055 | result[@intFromEnum(Feature.zvbb)] = .{ | 1645 | result[@intFromEnum(Feature.zvbb)] = .{ |
| 1056 | .llvm_name = "zvbb", | 1646 | .llvm_name = "zvbb", |
| 1057 | .description = "'Zvbb' (Vector basic bit-manipulation instructions)", | 1647 | .description = "'Zvbb' (Vector basic bit-manipulation instructions)", |
| ... | @@ -1104,6 +1694,21 @@ pub const all_features = blk: { | ... | @@ -1104,6 +1694,21 @@ pub const all_features = blk: { |
| 1104 | .zvl64b, | 1694 | .zvl64b, |
| 1105 | }), | 1695 | }), |
| 1106 | }; | 1696 | }; |
| 1697 | result[@intFromEnum(Feature.zvfbfmin)] = .{ | ||
| 1698 | .llvm_name = "zvfbfmin", | ||
| 1699 | .description = "'Zvbfmin' (Vector BF16 Converts)", | ||
| 1700 | .dependencies = featureSet(&[_]Feature{ | ||
| 1701 | .zve32f, | ||
| 1702 | }), | ||
| 1703 | }; | ||
| 1704 | result[@intFromEnum(Feature.zvfbfwma)] = .{ | ||
| 1705 | .llvm_name = "zvfbfwma", | ||
| 1706 | .description = "'Zvfbfwma' (Vector BF16 widening mul-add)", | ||
| 1707 | .dependencies = featureSet(&[_]Feature{ | ||
| 1708 | .zfbfmin, | ||
| 1709 | .zvfbfmin, | ||
| 1710 | }), | ||
| 1711 | }; | ||
| 1107 | result[@intFromEnum(Feature.zvfh)] = .{ | 1712 | result[@intFromEnum(Feature.zvfh)] = .{ |
| 1108 | .llvm_name = "zvfh", | 1713 | .llvm_name = "zvfh", |
| 1109 | .description = "'Zvfh' (Vector Half-Precision Floating-Point)", | 1714 | .description = "'Zvfh' (Vector Half-Precision Floating-Point)", |
| ... | @@ -1312,6 +1917,7 @@ pub const cpu = struct { | ... | @@ -1312,6 +1917,7 @@ pub const cpu = struct { |
| 1312 | .a, | 1917 | .a, |
| 1313 | .c, | 1918 | .c, |
| 1314 | .d, | 1919 | .d, |
| 1920 | .i, | ||
| 1315 | .m, | 1921 | .m, |
| 1316 | }), | 1922 | }), |
| 1317 | }; | 1923 | }; |
| ... | @@ -1323,6 +1929,7 @@ pub const cpu = struct { | ... | @@ -1323,6 +1929,7 @@ pub const cpu = struct { |
| 1323 | .a, | 1929 | .a, |
| 1324 | .c, | 1930 | .c, |
| 1325 | .d, | 1931 | .d, |
| 1932 | .i, | ||
| 1326 | .m, | 1933 | .m, |
| 1327 | }), | 1934 | }), |
| 1328 | }; | 1935 | }; |
| ... | @@ -1336,6 +1943,7 @@ pub const cpu = struct { | ... | @@ -1336,6 +1943,7 @@ pub const cpu = struct { |
| 1336 | .llvm_name = "generic-rv32", | 1943 | .llvm_name = "generic-rv32", |
| 1337 | .features = featureSet(&[_]Feature{ | 1944 | .features = featureSet(&[_]Feature{ |
| 1338 | .@"32bit", | 1945 | .@"32bit", |
| 1946 | .i, | ||
| 1339 | }), | 1947 | }), |
| 1340 | }; | 1948 | }; |
| 1341 | pub const generic_rv64 = CpuModel{ | 1949 | pub const generic_rv64 = CpuModel{ |
| ... | @@ -1343,6 +1951,7 @@ pub const cpu = struct { | ... | @@ -1343,6 +1951,7 @@ pub const cpu = struct { |
| 1343 | .llvm_name = "generic-rv64", | 1951 | .llvm_name = "generic-rv64", |
| 1344 | .features = featureSet(&[_]Feature{ | 1952 | .features = featureSet(&[_]Feature{ |
| 1345 | .@"64bit", | 1953 | .@"64bit", |
| 1954 | .i, | ||
| 1346 | }), | 1955 | }), |
| 1347 | }; | 1956 | }; |
| 1348 | pub const rocket = CpuModel{ | 1957 | pub const rocket = CpuModel{ |
| ... | @@ -1355,6 +1964,7 @@ pub const cpu = struct { | ... | @@ -1355,6 +1964,7 @@ pub const cpu = struct { |
| 1355 | .llvm_name = "rocket-rv32", | 1964 | .llvm_name = "rocket-rv32", |
| 1356 | .features = featureSet(&[_]Feature{ | 1965 | .features = featureSet(&[_]Feature{ |
| 1357 | .@"32bit", | 1966 | .@"32bit", |
| 1967 | .i, | ||
| 1358 | .zicsr, | 1968 | .zicsr, |
| 1359 | .zifencei, | 1969 | .zifencei, |
| 1360 | }), | 1970 | }), |
| ... | @@ -1364,6 +1974,7 @@ pub const cpu = struct { | ... | @@ -1364,6 +1974,7 @@ pub const cpu = struct { |
| 1364 | .llvm_name = "rocket-rv64", | 1974 | .llvm_name = "rocket-rv64", |
| 1365 | .features = featureSet(&[_]Feature{ | 1975 | .features = featureSet(&[_]Feature{ |
| 1366 | .@"64bit", | 1976 | .@"64bit", |
| 1977 | .i, | ||
| 1367 | .zicsr, | 1978 | .zicsr, |
| 1368 | .zifencei, | 1979 | .zifencei, |
| 1369 | }), | 1980 | }), |
| ... | @@ -1374,6 +1985,7 @@ pub const cpu = struct { | ... | @@ -1374,6 +1985,7 @@ pub const cpu = struct { |
| 1374 | .features = featureSet(&[_]Feature{ | 1985 | .features = featureSet(&[_]Feature{ |
| 1375 | .no_default_unroll, | 1986 | .no_default_unroll, |
| 1376 | .short_forward_branch_opt, | 1987 | .short_forward_branch_opt, |
| 1988 | .use_postra_scheduler, | ||
| 1377 | }), | 1989 | }), |
| 1378 | }; | 1990 | }; |
| 1379 | pub const sifive_e20 = CpuModel{ | 1991 | pub const sifive_e20 = CpuModel{ |
| ... | @@ -1382,6 +1994,7 @@ pub const cpu = struct { | ... | @@ -1382,6 +1994,7 @@ pub const cpu = struct { |
| 1382 | .features = featureSet(&[_]Feature{ | 1994 | .features = featureSet(&[_]Feature{ |
| 1383 | .@"32bit", | 1995 | .@"32bit", |
| 1384 | .c, | 1996 | .c, |
| 1997 | .i, | ||
| 1385 | .m, | 1998 | .m, |
| 1386 | .zicsr, | 1999 | .zicsr, |
| 1387 | .zifencei, | 2000 | .zifencei, |
| ... | @@ -1394,6 +2007,7 @@ pub const cpu = struct { | ... | @@ -1394,6 +2007,7 @@ pub const cpu = struct { |
| 1394 | .@"32bit", | 2007 | .@"32bit", |
| 1395 | .a, | 2008 | .a, |
| 1396 | .c, | 2009 | .c, |
| 2010 | .i, | ||
| 1397 | .m, | 2011 | .m, |
| 1398 | .zicsr, | 2012 | .zicsr, |
| 1399 | .zifencei, | 2013 | .zifencei, |
| ... | @@ -1407,6 +2021,7 @@ pub const cpu = struct { | ... | @@ -1407,6 +2021,7 @@ pub const cpu = struct { |
| 1407 | .a, | 2021 | .a, |
| 1408 | .c, | 2022 | .c, |
| 1409 | .f, | 2023 | .f, |
| 2024 | .i, | ||
| 1410 | .m, | 2025 | .m, |
| 1411 | .zifencei, | 2026 | .zifencei, |
| 1412 | }), | 2027 | }), |
| ... | @@ -1418,6 +2033,7 @@ pub const cpu = struct { | ... | @@ -1418,6 +2033,7 @@ pub const cpu = struct { |
| 1418 | .@"32bit", | 2033 | .@"32bit", |
| 1419 | .a, | 2034 | .a, |
| 1420 | .c, | 2035 | .c, |
| 2036 | .i, | ||
| 1421 | .m, | 2037 | .m, |
| 1422 | .zicsr, | 2038 | .zicsr, |
| 1423 | .zifencei, | 2039 | .zifencei, |
| ... | @@ -1431,6 +2047,7 @@ pub const cpu = struct { | ... | @@ -1431,6 +2047,7 @@ pub const cpu = struct { |
| 1431 | .a, | 2047 | .a, |
| 1432 | .c, | 2048 | .c, |
| 1433 | .f, | 2049 | .f, |
| 2050 | .i, | ||
| 1434 | .m, | 2051 | .m, |
| 1435 | .zifencei, | 2052 | .zifencei, |
| 1436 | }), | 2053 | }), |
| ... | @@ -1443,9 +2060,11 @@ pub const cpu = struct { | ... | @@ -1443,9 +2060,11 @@ pub const cpu = struct { |
| 1443 | .a, | 2060 | .a, |
| 1444 | .c, | 2061 | .c, |
| 1445 | .f, | 2062 | .f, |
| 2063 | .i, | ||
| 1446 | .m, | 2064 | .m, |
| 1447 | .no_default_unroll, | 2065 | .no_default_unroll, |
| 1448 | .short_forward_branch_opt, | 2066 | .short_forward_branch_opt, |
| 2067 | .use_postra_scheduler, | ||
| 1449 | .zifencei, | 2068 | .zifencei, |
| 1450 | }), | 2069 | }), |
| 1451 | }; | 2070 | }; |
| ... | @@ -1459,10 +2078,13 @@ pub const cpu = struct { | ... | @@ -1459,10 +2078,13 @@ pub const cpu = struct { |
| 1459 | .c, | 2078 | .c, |
| 1460 | .conditional_cmv_fusion, | 2079 | .conditional_cmv_fusion, |
| 1461 | .d, | 2080 | .d, |
| 1462 | .fast_unaligned_access, | 2081 | .i, |
| 1463 | .lui_addi_fusion, | 2082 | .lui_addi_fusion, |
| 1464 | .m, | 2083 | .m, |
| 1465 | .no_default_unroll, | 2084 | .no_default_unroll, |
| 2085 | .unaligned_scalar_mem, | ||
| 2086 | .unaligned_vector_mem, | ||
| 2087 | .use_postra_scheduler, | ||
| 1466 | .za64rs, | 2088 | .za64rs, |
| 1467 | .zba, | 2089 | .zba, |
| 1468 | .zbb, | 2090 | .zbb, |
| ... | @@ -1491,10 +2113,14 @@ pub const cpu = struct { | ... | @@ -1491,10 +2113,14 @@ pub const cpu = struct { |
| 1491 | .auipc_addi_fusion, | 2113 | .auipc_addi_fusion, |
| 1492 | .c, | 2114 | .c, |
| 1493 | .conditional_cmv_fusion, | 2115 | .conditional_cmv_fusion, |
| 1494 | .fast_unaligned_access, | 2116 | .i, |
| 1495 | .lui_addi_fusion, | 2117 | .lui_addi_fusion, |
| 1496 | .m, | 2118 | .m, |
| 1497 | .no_default_unroll, | 2119 | .no_default_unroll, |
| 2120 | .no_sink_splat_operands, | ||
| 2121 | .unaligned_scalar_mem, | ||
| 2122 | .unaligned_vector_mem, | ||
| 2123 | .use_postra_scheduler, | ||
| 1498 | .v, | 2124 | .v, |
| 1499 | .za64rs, | 2125 | .za64rs, |
| 1500 | .zba, | 2126 | .zba, |
| ... | @@ -1527,6 +2153,7 @@ pub const cpu = struct { | ... | @@ -1527,6 +2153,7 @@ pub const cpu = struct { |
| 1527 | .@"64bit", | 2153 | .@"64bit", |
| 1528 | .a, | 2154 | .a, |
| 1529 | .c, | 2155 | .c, |
| 2156 | .i, | ||
| 1530 | .m, | 2157 | .m, |
| 1531 | .zicsr, | 2158 | .zicsr, |
| 1532 | .zifencei, | 2159 | .zifencei, |
| ... | @@ -1539,6 +2166,7 @@ pub const cpu = struct { | ... | @@ -1539,6 +2166,7 @@ pub const cpu = struct { |
| 1539 | .@"64bit", | 2166 | .@"64bit", |
| 1540 | .a, | 2167 | .a, |
| 1541 | .c, | 2168 | .c, |
| 2169 | .i, | ||
| 1542 | .m, | 2170 | .m, |
| 1543 | .zicsr, | 2171 | .zicsr, |
| 1544 | .zifencei, | 2172 | .zifencei, |
| ... | @@ -1552,6 +2180,7 @@ pub const cpu = struct { | ... | @@ -1552,6 +2180,7 @@ pub const cpu = struct { |
| 1552 | .a, | 2180 | .a, |
| 1553 | .c, | 2181 | .c, |
| 1554 | .d, | 2182 | .d, |
| 2183 | .i, | ||
| 1555 | .m, | 2184 | .m, |
| 1556 | .zifencei, | 2185 | .zifencei, |
| 1557 | }), | 2186 | }), |
| ... | @@ -1564,9 +2193,11 @@ pub const cpu = struct { | ... | @@ -1564,9 +2193,11 @@ pub const cpu = struct { |
| 1564 | .a, | 2193 | .a, |
| 1565 | .c, | 2194 | .c, |
| 1566 | .d, | 2195 | .d, |
| 2196 | .i, | ||
| 1567 | .m, | 2197 | .m, |
| 1568 | .no_default_unroll, | 2198 | .no_default_unroll, |
| 1569 | .short_forward_branch_opt, | 2199 | .short_forward_branch_opt, |
| 2200 | .use_postra_scheduler, | ||
| 1570 | .zifencei, | 2201 | .zifencei, |
| 1571 | .zihintpause, | 2202 | .zihintpause, |
| 1572 | }), | 2203 | }), |
| ... | @@ -1579,6 +2210,7 @@ pub const cpu = struct { | ... | @@ -1579,6 +2210,7 @@ pub const cpu = struct { |
| 1579 | .a, | 2210 | .a, |
| 1580 | .c, | 2211 | .c, |
| 1581 | .d, | 2212 | .d, |
| 2213 | .i, | ||
| 1582 | .m, | 2214 | .m, |
| 1583 | .zifencei, | 2215 | .zifencei, |
| 1584 | }), | 2216 | }), |
| ... | @@ -1591,9 +2223,11 @@ pub const cpu = struct { | ... | @@ -1591,9 +2223,11 @@ pub const cpu = struct { |
| 1591 | .a, | 2223 | .a, |
| 1592 | .c, | 2224 | .c, |
| 1593 | .d, | 2225 | .d, |
| 2226 | .i, | ||
| 1594 | .m, | 2227 | .m, |
| 1595 | .no_default_unroll, | 2228 | .no_default_unroll, |
| 1596 | .short_forward_branch_opt, | 2229 | .short_forward_branch_opt, |
| 2230 | .use_postra_scheduler, | ||
| 1597 | .zifencei, | 2231 | .zifencei, |
| 1598 | }), | 2232 | }), |
| 1599 | }; | 2233 | }; |
| ... | @@ -1605,9 +2239,12 @@ pub const cpu = struct { | ... | @@ -1605,9 +2239,12 @@ pub const cpu = struct { |
| 1605 | .a, | 2239 | .a, |
| 1606 | .c, | 2240 | .c, |
| 1607 | .dlen_factor_2, | 2241 | .dlen_factor_2, |
| 2242 | .i, | ||
| 1608 | .m, | 2243 | .m, |
| 1609 | .no_default_unroll, | 2244 | .no_default_unroll, |
| 2245 | .optimized_zero_stride_load, | ||
| 1610 | .short_forward_branch_opt, | 2246 | .short_forward_branch_opt, |
| 2247 | .use_postra_scheduler, | ||
| 1611 | .v, | 2248 | .v, |
| 1612 | .zba, | 2249 | .zba, |
| 1613 | .zbb, | 2250 | .zbb, |
| ... | @@ -1617,12 +2254,61 @@ pub const cpu = struct { | ... | @@ -1617,12 +2254,61 @@ pub const cpu = struct { |
| 1617 | .zvl512b, | 2254 | .zvl512b, |
| 1618 | }), | 2255 | }), |
| 1619 | }; | 2256 | }; |
| 2257 | pub const spacemit_x60 = CpuModel{ | ||
| 2258 | .name = "spacemit_x60", | ||
| 2259 | .llvm_name = "spacemit-x60", | ||
| 2260 | .features = featureSet(&[_]Feature{ | ||
| 2261 | .@"64bit", | ||
| 2262 | .a, | ||
| 2263 | .c, | ||
| 2264 | .dlen_factor_2, | ||
| 2265 | .i, | ||
| 2266 | .m, | ||
| 2267 | .ssccptr, | ||
| 2268 | .sscofpmf, | ||
| 2269 | .sscounterenw, | ||
| 2270 | .sstc, | ||
| 2271 | .sstvala, | ||
| 2272 | .sstvecd, | ||
| 2273 | .svade, | ||
| 2274 | .svbare, | ||
| 2275 | .svinval, | ||
| 2276 | .svnapot, | ||
| 2277 | .svpbmt, | ||
| 2278 | .v, | ||
| 2279 | .za64rs, | ||
| 2280 | .zba, | ||
| 2281 | .zbb, | ||
| 2282 | .zbc, | ||
| 2283 | .zbkc, | ||
| 2284 | .zbs, | ||
| 2285 | .zfh, | ||
| 2286 | .zic64b, | ||
| 2287 | .zicbom, | ||
| 2288 | .zicbop, | ||
| 2289 | .zicboz, | ||
| 2290 | .ziccamoa, | ||
| 2291 | .ziccif, | ||
| 2292 | .zicclsm, | ||
| 2293 | .ziccrse, | ||
| 2294 | .zicntr, | ||
| 2295 | .zicond, | ||
| 2296 | .zifencei, | ||
| 2297 | .zihintpause, | ||
| 2298 | .zihpm, | ||
| 2299 | .zkt, | ||
| 2300 | .zvfh, | ||
| 2301 | .zvkt, | ||
| 2302 | .zvl256b, | ||
| 2303 | }), | ||
| 2304 | }; | ||
| 1620 | pub const syntacore_scr1_base = CpuModel{ | 2305 | pub const syntacore_scr1_base = CpuModel{ |
| 1621 | .name = "syntacore_scr1_base", | 2306 | .name = "syntacore_scr1_base", |
| 1622 | .llvm_name = "syntacore-scr1-base", | 2307 | .llvm_name = "syntacore-scr1-base", |
| 1623 | .features = featureSet(&[_]Feature{ | 2308 | .features = featureSet(&[_]Feature{ |
| 1624 | .@"32bit", | 2309 | .@"32bit", |
| 1625 | .c, | 2310 | .c, |
| 2311 | .i, | ||
| 1626 | .no_default_unroll, | 2312 | .no_default_unroll, |
| 1627 | .zicsr, | 2313 | .zicsr, |
| 1628 | .zifencei, | 2314 | .zifencei, |
| ... | @@ -1634,8 +2320,38 @@ pub const cpu = struct { | ... | @@ -1634,8 +2320,38 @@ pub const cpu = struct { |
| 1634 | .features = featureSet(&[_]Feature{ | 2320 | .features = featureSet(&[_]Feature{ |
| 1635 | .@"32bit", | 2321 | .@"32bit", |
| 1636 | .c, | 2322 | .c, |
| 2323 | .i, | ||
| 2324 | .m, | ||
| 2325 | .no_default_unroll, | ||
| 2326 | .zicsr, | ||
| 2327 | .zifencei, | ||
| 2328 | }), | ||
| 2329 | }; | ||
| 2330 | pub const syntacore_scr3_rv32 = CpuModel{ | ||
| 2331 | .name = "syntacore_scr3_rv32", | ||
| 2332 | .llvm_name = "syntacore-scr3-rv32", | ||
| 2333 | .features = featureSet(&[_]Feature{ | ||
| 2334 | .@"32bit", | ||
| 2335 | .c, | ||
| 2336 | .i, | ||
| 2337 | .m, | ||
| 2338 | .no_default_unroll, | ||
| 2339 | .use_postra_scheduler, | ||
| 2340 | .zicsr, | ||
| 2341 | .zifencei, | ||
| 2342 | }), | ||
| 2343 | }; | ||
| 2344 | pub const syntacore_scr3_rv64 = CpuModel{ | ||
| 2345 | .name = "syntacore_scr3_rv64", | ||
| 2346 | .llvm_name = "syntacore-scr3-rv64", | ||
| 2347 | .features = featureSet(&[_]Feature{ | ||
| 2348 | .@"64bit", | ||
| 2349 | .a, | ||
| 2350 | .c, | ||
| 2351 | .i, | ||
| 1637 | .m, | 2352 | .m, |
| 1638 | .no_default_unroll, | 2353 | .no_default_unroll, |
| 2354 | .use_postra_scheduler, | ||
| 1639 | .zicsr, | 2355 | .zicsr, |
| 1640 | .zifencei, | 2356 | .zifencei, |
| 1641 | }), | 2357 | }), |
| ... | @@ -1649,6 +2365,7 @@ pub const cpu = struct { | ... | @@ -1649,6 +2365,7 @@ pub const cpu = struct { |
| 1649 | .auipc_addi_fusion, | 2365 | .auipc_addi_fusion, |
| 1650 | .c, | 2366 | .c, |
| 1651 | .d, | 2367 | .d, |
| 2368 | .i, | ||
| 1652 | .ld_add_fusion, | 2369 | .ld_add_fusion, |
| 1653 | .lui_addi_fusion, | 2370 | .lui_addi_fusion, |
| 1654 | .m, | 2371 | .m, |
| ... | @@ -1678,12 +2395,17 @@ pub const cpu = struct { | ... | @@ -1678,12 +2395,17 @@ pub const cpu = struct { |
| 1678 | .a, | 2395 | .a, |
| 1679 | .c, | 2396 | .c, |
| 1680 | .d, | 2397 | .d, |
| 2398 | .i, | ||
| 1681 | .m, | 2399 | .m, |
| 2400 | .no_default_unroll, | ||
| 2401 | .shifted_zextw_fusion, | ||
| 1682 | .svinval, | 2402 | .svinval, |
| 1683 | .zba, | 2403 | .zba, |
| 1684 | .zbb, | 2404 | .zbb, |
| 1685 | .zbc, | 2405 | .zbc, |
| 1686 | .zbs, | 2406 | .zbs, |
| 2407 | .zexth_fusion, | ||
| 2408 | .zextw_fusion, | ||
| 1687 | .zicbom, | 2409 | .zicbom, |
| 1688 | .zicboz, | 2410 | .zicboz, |
| 1689 | .zifencei, | 2411 | .zifencei, |
lib/std/Target/s390x.zig+18| ... | @@ -40,7 +40,9 @@ pub const Feature = enum { | ... | @@ -40,7 +40,9 @@ pub const Feature = enum { |
| 40 | reset_dat_protection, | 40 | reset_dat_protection, |
| 41 | reset_reference_bits_multiple, | 41 | reset_reference_bits_multiple, |
| 42 | soft_float, | 42 | soft_float, |
| 43 | test_pending_external_interruption, | ||
| 43 | transactional_execution, | 44 | transactional_execution, |
| 45 | unaligned_symbols, | ||
| 44 | vector, | 46 | vector, |
| 45 | vector_enhancements_1, | 47 | vector_enhancements_1, |
| 46 | vector_enhancements_2, | 48 | vector_enhancements_2, |
| ... | @@ -233,11 +235,21 @@ pub const all_features = blk: { | ... | @@ -233,11 +235,21 @@ pub const all_features = blk: { |
| 233 | .description = "Use software emulation for floating point", | 235 | .description = "Use software emulation for floating point", |
| 234 | .dependencies = featureSet(&[_]Feature{}), | 236 | .dependencies = featureSet(&[_]Feature{}), |
| 235 | }; | 237 | }; |
| 238 | result[@intFromEnum(Feature.test_pending_external_interruption)] = .{ | ||
| 239 | .llvm_name = "test-pending-external-interruption", | ||
| 240 | .description = "Assume that the test-pending-external-interruption facility is installed", | ||
| 241 | .dependencies = featureSet(&[_]Feature{}), | ||
| 242 | }; | ||
| 236 | result[@intFromEnum(Feature.transactional_execution)] = .{ | 243 | result[@intFromEnum(Feature.transactional_execution)] = .{ |
| 237 | .llvm_name = "transactional-execution", | 244 | .llvm_name = "transactional-execution", |
| 238 | .description = "Assume that the transactional-execution facility is installed", | 245 | .description = "Assume that the transactional-execution facility is installed", |
| 239 | .dependencies = featureSet(&[_]Feature{}), | 246 | .dependencies = featureSet(&[_]Feature{}), |
| 240 | }; | 247 | }; |
| 248 | result[@intFromEnum(Feature.unaligned_symbols)] = .{ | ||
| 249 | .llvm_name = "unaligned-symbols", | ||
| 250 | .description = "Don't apply the ABI minimum alignment to external symbols.", | ||
| 251 | .dependencies = featureSet(&[_]Feature{}), | ||
| 252 | }; | ||
| 241 | result[@intFromEnum(Feature.vector)] = .{ | 253 | result[@intFromEnum(Feature.vector)] = .{ |
| 242 | .llvm_name = "vector", | 254 | .llvm_name = "vector", |
| 243 | .description = "Assume that the vectory facility is installed", | 255 | .description = "Assume that the vectory facility is installed", |
| ... | @@ -357,6 +369,7 @@ pub const cpu = struct { | ... | @@ -357,6 +369,7 @@ pub const cpu = struct { |
| 357 | .population_count, | 369 | .population_count, |
| 358 | .processor_assist, | 370 | .processor_assist, |
| 359 | .reset_reference_bits_multiple, | 371 | .reset_reference_bits_multiple, |
| 372 | .test_pending_external_interruption, | ||
| 360 | .transactional_execution, | 373 | .transactional_execution, |
| 361 | .vector, | 374 | .vector, |
| 362 | .vector_enhancements_1, | 375 | .vector_enhancements_1, |
| ... | @@ -396,6 +409,7 @@ pub const cpu = struct { | ... | @@ -396,6 +409,7 @@ pub const cpu = struct { |
| 396 | .population_count, | 409 | .population_count, |
| 397 | .processor_assist, | 410 | .processor_assist, |
| 398 | .reset_reference_bits_multiple, | 411 | .reset_reference_bits_multiple, |
| 412 | .test_pending_external_interruption, | ||
| 399 | .transactional_execution, | 413 | .transactional_execution, |
| 400 | .vector, | 414 | .vector, |
| 401 | .vector_enhancements_1, | 415 | .vector_enhancements_1, |
| ... | @@ -441,6 +455,7 @@ pub const cpu = struct { | ... | @@ -441,6 +455,7 @@ pub const cpu = struct { |
| 441 | .processor_assist, | 455 | .processor_assist, |
| 442 | .reset_dat_protection, | 456 | .reset_dat_protection, |
| 443 | .reset_reference_bits_multiple, | 457 | .reset_reference_bits_multiple, |
| 458 | .test_pending_external_interruption, | ||
| 444 | .transactional_execution, | 459 | .transactional_execution, |
| 445 | .vector, | 460 | .vector, |
| 446 | .vector_enhancements_1, | 461 | .vector_enhancements_1, |
| ... | @@ -538,6 +553,7 @@ pub const cpu = struct { | ... | @@ -538,6 +553,7 @@ pub const cpu = struct { |
| 538 | .population_count, | 553 | .population_count, |
| 539 | .processor_assist, | 554 | .processor_assist, |
| 540 | .reset_reference_bits_multiple, | 555 | .reset_reference_bits_multiple, |
| 556 | .test_pending_external_interruption, | ||
| 541 | .transactional_execution, | 557 | .transactional_execution, |
| 542 | .vector, | 558 | .vector, |
| 543 | .vector_enhancements_1, | 559 | .vector_enhancements_1, |
| ... | @@ -577,6 +593,7 @@ pub const cpu = struct { | ... | @@ -577,6 +593,7 @@ pub const cpu = struct { |
| 577 | .population_count, | 593 | .population_count, |
| 578 | .processor_assist, | 594 | .processor_assist, |
| 579 | .reset_reference_bits_multiple, | 595 | .reset_reference_bits_multiple, |
| 596 | .test_pending_external_interruption, | ||
| 580 | .transactional_execution, | 597 | .transactional_execution, |
| 581 | .vector, | 598 | .vector, |
| 582 | .vector_enhancements_1, | 599 | .vector_enhancements_1, |
| ... | @@ -622,6 +639,7 @@ pub const cpu = struct { | ... | @@ -622,6 +639,7 @@ pub const cpu = struct { |
| 622 | .processor_assist, | 639 | .processor_assist, |
| 623 | .reset_dat_protection, | 640 | .reset_dat_protection, |
| 624 | .reset_reference_bits_multiple, | 641 | .reset_reference_bits_multiple, |
| 642 | .test_pending_external_interruption, | ||
| 625 | .transactional_execution, | 643 | .transactional_execution, |
| 626 | .vector, | 644 | .vector, |
| 627 | .vector_enhancements_1, | 645 | .vector_enhancements_1, |
lib/std/Target/wasm.zig+15| ... | @@ -9,6 +9,7 @@ pub const Feature = enum { | ... | @@ -9,6 +9,7 @@ pub const Feature = enum { |
| 9 | bulk_memory, | 9 | bulk_memory, |
| 10 | exception_handling, | 10 | exception_handling, |
| 11 | extended_const, | 11 | extended_const, |
| 12 | half_precision, | ||
| 12 | multimemory, | 13 | multimemory, |
| 13 | multivalue, | 14 | multivalue, |
| 14 | mutable_globals, | 15 | mutable_globals, |
| ... | @@ -49,6 +50,11 @@ pub const all_features = blk: { | ... | @@ -49,6 +50,11 @@ pub const all_features = blk: { |
| 49 | .description = "Enable extended const expressions", | 50 | .description = "Enable extended const expressions", |
| 50 | .dependencies = featureSet(&[_]Feature{}), | 51 | .dependencies = featureSet(&[_]Feature{}), |
| 51 | }; | 52 | }; |
| 53 | result[@intFromEnum(Feature.half_precision)] = .{ | ||
| 54 | .llvm_name = "half-precision", | ||
| 55 | .description = "Enable half precision instructions", | ||
| 56 | .dependencies = featureSet(&[_]Feature{}), | ||
| 57 | }; | ||
| 52 | result[@intFromEnum(Feature.multimemory)] = .{ | 58 | result[@intFromEnum(Feature.multimemory)] = .{ |
| 53 | .llvm_name = "multimemory", | 59 | .llvm_name = "multimemory", |
| 54 | .description = "Enable multiple memories", | 60 | .description = "Enable multiple memories", |
| ... | @@ -109,8 +115,15 @@ pub const cpu = struct { | ... | @@ -109,8 +115,15 @@ pub const cpu = struct { |
| 109 | .features = featureSet(&[_]Feature{ | 115 | .features = featureSet(&[_]Feature{ |
| 110 | .atomics, | 116 | .atomics, |
| 111 | .bulk_memory, | 117 | .bulk_memory, |
| 118 | .exception_handling, | ||
| 119 | .extended_const, | ||
| 120 | .half_precision, | ||
| 121 | .multimemory, | ||
| 122 | .multivalue, | ||
| 112 | .mutable_globals, | 123 | .mutable_globals, |
| 113 | .nontrapping_fptoint, | 124 | .nontrapping_fptoint, |
| 125 | .reference_types, | ||
| 126 | .relaxed_simd, | ||
| 114 | .sign_ext, | 127 | .sign_ext, |
| 115 | .simd128, | 128 | .simd128, |
| 116 | .tail_call, | 129 | .tail_call, |
| ... | @@ -120,7 +133,9 @@ pub const cpu = struct { | ... | @@ -120,7 +133,9 @@ pub const cpu = struct { |
| 120 | .name = "generic", | 133 | .name = "generic", |
| 121 | .llvm_name = "generic", | 134 | .llvm_name = "generic", |
| 122 | .features = featureSet(&[_]Feature{ | 135 | .features = featureSet(&[_]Feature{ |
| 136 | .multivalue, | ||
| 123 | .mutable_globals, | 137 | .mutable_globals, |
| 138 | .reference_types, | ||
| 124 | .sign_ext, | 139 | .sign_ext, |
| 125 | }), | 140 | }), |
| 126 | }; | 141 | }; |
lib/std/Target/x86.zig+106-19| ... | @@ -45,6 +45,7 @@ pub const Feature = enum { | ... | @@ -45,6 +45,7 @@ pub const Feature = enum { |
| 45 | avxvnniint8, | 45 | avxvnniint8, |
| 46 | bmi, | 46 | bmi, |
| 47 | bmi2, | 47 | bmi2, |
| 48 | branch_hint, | ||
| 48 | branchfusion, | 49 | branchfusion, |
| 49 | ccmp, | 50 | ccmp, |
| 50 | cf, | 51 | cf, |
| ... | @@ -73,8 +74,10 @@ pub const Feature = enum { | ... | @@ -73,8 +74,10 @@ pub const Feature = enum { |
| 73 | fast_15bytenop, | 74 | fast_15bytenop, |
| 74 | fast_7bytenop, | 75 | fast_7bytenop, |
| 75 | fast_bextr, | 76 | fast_bextr, |
| 77 | fast_dpwssd, | ||
| 76 | fast_gather, | 78 | fast_gather, |
| 77 | fast_hops, | 79 | fast_hops, |
| 80 | fast_imm16, | ||
| 78 | fast_lzcnt, | 81 | fast_lzcnt, |
| 79 | fast_movbe, | 82 | fast_movbe, |
| 80 | fast_scalar_fsqrt, | 83 | fast_scalar_fsqrt, |
| ... | @@ -96,6 +99,7 @@ pub const Feature = enum { | ... | @@ -96,6 +99,7 @@ pub const Feature = enum { |
| 96 | hreset, | 99 | hreset, |
| 97 | idivl_to_divb, | 100 | idivl_to_divb, |
| 98 | idivq_to_divl, | 101 | idivq_to_divl, |
| 102 | inline_asm_use_gpr32, | ||
| 99 | invpcid, | 103 | invpcid, |
| 100 | kl, | 104 | kl, |
| 101 | lea_sp, | 105 | lea_sp, |
| ... | @@ -111,6 +115,7 @@ pub const Feature = enum { | ... | @@ -111,6 +115,7 @@ pub const Feature = enum { |
| 111 | movdiri, | 115 | movdiri, |
| 112 | mwaitx, | 116 | mwaitx, |
| 113 | ndd, | 117 | ndd, |
| 118 | nf, | ||
| 114 | no_bypass_delay, | 119 | no_bypass_delay, |
| 115 | no_bypass_delay_blend, | 120 | no_bypass_delay_blend, |
| 116 | no_bypass_delay_mov, | 121 | no_bypass_delay_mov, |
| ... | @@ -191,6 +196,7 @@ pub const Feature = enum { | ... | @@ -191,6 +196,7 @@ pub const Feature = enum { |
| 191 | xsavec, | 196 | xsavec, |
| 192 | xsaveopt, | 197 | xsaveopt, |
| 193 | xsaves, | 198 | xsaves, |
| 199 | zu, | ||
| 194 | }; | 200 | }; |
| 195 | 201 | ||
| 196 | pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet; | 202 | pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet; |
| ... | @@ -213,14 +219,14 @@ pub const all_features = blk: { | ... | @@ -213,14 +219,14 @@ pub const all_features = blk: { |
| 213 | .dependencies = featureSet(&[_]Feature{}), | 219 | .dependencies = featureSet(&[_]Feature{}), |
| 214 | }; | 220 | }; |
| 215 | result[@intFromEnum(Feature.@"3dnow")] = .{ | 221 | result[@intFromEnum(Feature.@"3dnow")] = .{ |
| 216 | .llvm_name = "3dnow", | 222 | .llvm_name = null, |
| 217 | .description = "Enable 3DNow! instructions", | 223 | .description = "Enable 3DNow! instructions", |
| 218 | .dependencies = featureSet(&[_]Feature{ | 224 | .dependencies = featureSet(&[_]Feature{ |
| 219 | .mmx, | 225 | .mmx, |
| 220 | }), | 226 | }), |
| 221 | }; | 227 | }; |
| 222 | result[@intFromEnum(Feature.@"3dnowa")] = .{ | 228 | result[@intFromEnum(Feature.@"3dnowa")] = .{ |
| 223 | .llvm_name = "3dnowa", | 229 | .llvm_name = null, |
| 224 | .description = "Enable 3DNow! Athlon instructions", | 230 | .description = "Enable 3DNow! Athlon instructions", |
| 225 | .dependencies = featureSet(&[_]Feature{ | 231 | .dependencies = featureSet(&[_]Feature{ |
| 226 | .@"3dnow", | 232 | .@"3dnow", |
| ... | @@ -356,7 +362,7 @@ pub const all_features = blk: { | ... | @@ -356,7 +362,7 @@ pub const all_features = blk: { |
| 356 | }), | 362 | }), |
| 357 | }; | 363 | }; |
| 358 | result[@intFromEnum(Feature.avx512er)] = .{ | 364 | result[@intFromEnum(Feature.avx512er)] = .{ |
| 359 | .llvm_name = "avx512er", | 365 | .llvm_name = null, |
| 360 | .description = "Enable AVX-512 Exponential and Reciprocal Instructions", | 366 | .description = "Enable AVX-512 Exponential and Reciprocal Instructions", |
| 361 | .dependencies = featureSet(&[_]Feature{ | 367 | .dependencies = featureSet(&[_]Feature{ |
| 362 | .avx512f, | 368 | .avx512f, |
| ... | @@ -388,7 +394,7 @@ pub const all_features = blk: { | ... | @@ -388,7 +394,7 @@ pub const all_features = blk: { |
| 388 | }), | 394 | }), |
| 389 | }; | 395 | }; |
| 390 | result[@intFromEnum(Feature.avx512pf)] = .{ | 396 | result[@intFromEnum(Feature.avx512pf)] = .{ |
| 391 | .llvm_name = "avx512pf", | 397 | .llvm_name = null, |
| 392 | .description = "Enable AVX-512 PreFetch Instructions", | 398 | .description = "Enable AVX-512 PreFetch Instructions", |
| 393 | .dependencies = featureSet(&[_]Feature{ | 399 | .dependencies = featureSet(&[_]Feature{ |
| 394 | .avx512f, | 400 | .avx512f, |
| ... | @@ -481,6 +487,11 @@ pub const all_features = blk: { | ... | @@ -481,6 +487,11 @@ pub const all_features = blk: { |
| 481 | .description = "Support BMI2 instructions", | 487 | .description = "Support BMI2 instructions", |
| 482 | .dependencies = featureSet(&[_]Feature{}), | 488 | .dependencies = featureSet(&[_]Feature{}), |
| 483 | }; | 489 | }; |
| 490 | result[@intFromEnum(Feature.branch_hint)] = .{ | ||
| 491 | .llvm_name = "branch-hint", | ||
| 492 | .description = "Target has branch hint feature", | ||
| 493 | .dependencies = featureSet(&[_]Feature{}), | ||
| 494 | }; | ||
| 484 | result[@intFromEnum(Feature.branchfusion)] = .{ | 495 | result[@intFromEnum(Feature.branchfusion)] = .{ |
| 485 | .llvm_name = "branchfusion", | 496 | .llvm_name = "branchfusion", |
| 486 | .description = "CMP/TEST can be fused with conditional branches", | 497 | .description = "CMP/TEST can be fused with conditional branches", |
| ... | @@ -625,6 +636,11 @@ pub const all_features = blk: { | ... | @@ -625,6 +636,11 @@ pub const all_features = blk: { |
| 625 | .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput", | 636 | .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput", |
| 626 | .dependencies = featureSet(&[_]Feature{}), | 637 | .dependencies = featureSet(&[_]Feature{}), |
| 627 | }; | 638 | }; |
| 639 | result[@intFromEnum(Feature.fast_dpwssd)] = .{ | ||
| 640 | .llvm_name = "fast-dpwssd", | ||
| 641 | .description = "Prefer vpdpwssd instruction over vpmaddwd+vpaddd instruction sequence", | ||
| 642 | .dependencies = featureSet(&[_]Feature{}), | ||
| 643 | }; | ||
| 628 | result[@intFromEnum(Feature.fast_gather)] = .{ | 644 | result[@intFromEnum(Feature.fast_gather)] = .{ |
| 629 | .llvm_name = "fast-gather", | 645 | .llvm_name = "fast-gather", |
| 630 | .description = "Indicates if gather is reasonably fast (this is true for Skylake client and all AVX-512 CPUs)", | 646 | .description = "Indicates if gather is reasonably fast (this is true for Skylake client and all AVX-512 CPUs)", |
| ... | @@ -635,6 +651,11 @@ pub const all_features = blk: { | ... | @@ -635,6 +651,11 @@ pub const all_features = blk: { |
| 635 | .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles", | 651 | .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles", |
| 636 | .dependencies = featureSet(&[_]Feature{}), | 652 | .dependencies = featureSet(&[_]Feature{}), |
| 637 | }; | 653 | }; |
| 654 | result[@intFromEnum(Feature.fast_imm16)] = .{ | ||
| 655 | .llvm_name = "fast-imm16", | ||
| 656 | .description = "Prefer a i16 instruction with i16 immediate over extension to i32", | ||
| 657 | .dependencies = featureSet(&[_]Feature{}), | ||
| 658 | }; | ||
| 638 | result[@intFromEnum(Feature.fast_lzcnt)] = .{ | 659 | result[@intFromEnum(Feature.fast_lzcnt)] = .{ |
| 639 | .llvm_name = "fast-lzcnt", | 660 | .llvm_name = "fast-lzcnt", |
| 640 | .description = "LZCNT instructions are as fast as most simple integer ops", | 661 | .description = "LZCNT instructions are as fast as most simple integer ops", |
| ... | @@ -747,6 +768,11 @@ pub const all_features = blk: { | ... | @@ -747,6 +768,11 @@ pub const all_features = blk: { |
| 747 | .description = "Use 32-bit divide for positive values less than 2^32", | 768 | .description = "Use 32-bit divide for positive values less than 2^32", |
| 748 | .dependencies = featureSet(&[_]Feature{}), | 769 | .dependencies = featureSet(&[_]Feature{}), |
| 749 | }; | 770 | }; |
| 771 | result[@intFromEnum(Feature.inline_asm_use_gpr32)] = .{ | ||
| 772 | .llvm_name = "inline-asm-use-gpr32", | ||
| 773 | .description = "Enable use of GPR32 in inline assembly for APX", | ||
| 774 | .dependencies = featureSet(&[_]Feature{}), | ||
| 775 | }; | ||
| 750 | result[@intFromEnum(Feature.invpcid)] = .{ | 776 | result[@intFromEnum(Feature.invpcid)] = .{ |
| 751 | .llvm_name = "invpcid", | 777 | .llvm_name = "invpcid", |
| 752 | .description = "Invalidate Process-Context Identifier", | 778 | .description = "Invalidate Process-Context Identifier", |
| ... | @@ -824,6 +850,11 @@ pub const all_features = blk: { | ... | @@ -824,6 +850,11 @@ pub const all_features = blk: { |
| 824 | .description = "Support non-destructive destination", | 850 | .description = "Support non-destructive destination", |
| 825 | .dependencies = featureSet(&[_]Feature{}), | 851 | .dependencies = featureSet(&[_]Feature{}), |
| 826 | }; | 852 | }; |
| 853 | result[@intFromEnum(Feature.nf)] = .{ | ||
| 854 | .llvm_name = "nf", | ||
| 855 | .description = "Support status flags update suppression", | ||
| 856 | .dependencies = featureSet(&[_]Feature{}), | ||
| 857 | }; | ||
| 827 | result[@intFromEnum(Feature.no_bypass_delay)] = .{ | 858 | result[@intFromEnum(Feature.no_bypass_delay)] = .{ |
| 828 | .llvm_name = "no-bypass-delay", | 859 | .llvm_name = "no-bypass-delay", |
| 829 | .description = "Has no bypass delay when using the 'wrong' domain", | 860 | .description = "Has no bypass delay when using the 'wrong' domain", |
| ... | @@ -917,7 +948,7 @@ pub const all_features = blk: { | ... | @@ -917,7 +948,7 @@ pub const all_features = blk: { |
| 917 | .dependencies = featureSet(&[_]Feature{}), | 948 | .dependencies = featureSet(&[_]Feature{}), |
| 918 | }; | 949 | }; |
| 919 | result[@intFromEnum(Feature.prefetchwt1)] = .{ | 950 | result[@intFromEnum(Feature.prefetchwt1)] = .{ |
| 920 | .llvm_name = "prefetchwt1", | 951 | .llvm_name = null, |
| 921 | .description = "Prefetch with Intent to Write and T1 Hint", | 952 | .description = "Prefetch with Intent to Write and T1 Hint", |
| 922 | .dependencies = featureSet(&[_]Feature{}), | 953 | .dependencies = featureSet(&[_]Feature{}), |
| 923 | }; | 954 | }; |
| ... | @@ -1269,6 +1300,11 @@ pub const all_features = blk: { | ... | @@ -1269,6 +1300,11 @@ pub const all_features = blk: { |
| 1269 | .xsave, | 1300 | .xsave, |
| 1270 | }), | 1301 | }), |
| 1271 | }; | 1302 | }; |
| 1303 | result[@intFromEnum(Feature.zu)] = .{ | ||
| 1304 | .llvm_name = "zu", | ||
| 1305 | .description = "Support zero-upper SETcc/IMUL", | ||
| 1306 | .dependencies = featureSet(&[_]Feature{}), | ||
| 1307 | }; | ||
| 1272 | const ti = @typeInfo(Feature); | 1308 | const ti = @typeInfo(Feature); |
| 1273 | for (&result, 0..) |*elem, i| { | 1309 | for (&result, 0..) |*elem, i| { |
| 1274 | elem.index = i; | 1310 | elem.index = i; |
| ... | @@ -1357,6 +1393,7 @@ pub const cpu = struct { | ... | @@ -1357,6 +1393,7 @@ pub const cpu = struct { |
| 1357 | .cx16, | 1393 | .cx16, |
| 1358 | .fast_scalar_shift_masks, | 1394 | .fast_scalar_shift_masks, |
| 1359 | .fxsr, | 1395 | .fxsr, |
| 1396 | .idivq_to_divl, | ||
| 1360 | .lzcnt, | 1397 | .lzcnt, |
| 1361 | .nopl, | 1398 | .nopl, |
| 1362 | .popcnt, | 1399 | .popcnt, |
| ... | @@ -1531,6 +1568,7 @@ pub const cpu = struct { | ... | @@ -1531,6 +1568,7 @@ pub const cpu = struct { |
| 1531 | .cmov, | 1568 | .cmov, |
| 1532 | .cx8, | 1569 | .cx8, |
| 1533 | .nopl, | 1570 | .nopl, |
| 1571 | .prfchw, | ||
| 1534 | .slow_shld, | 1572 | .slow_shld, |
| 1535 | .slow_unaligned_mem_16, | 1573 | .slow_unaligned_mem_16, |
| 1536 | .vzeroupper, | 1574 | .vzeroupper, |
| ... | @@ -1548,6 +1586,7 @@ pub const cpu = struct { | ... | @@ -1548,6 +1586,7 @@ pub const cpu = struct { |
| 1548 | .fast_scalar_shift_masks, | 1586 | .fast_scalar_shift_masks, |
| 1549 | .fxsr, | 1587 | .fxsr, |
| 1550 | .nopl, | 1588 | .nopl, |
| 1589 | .prfchw, | ||
| 1551 | .sbb_dep_breaking, | 1590 | .sbb_dep_breaking, |
| 1552 | .slow_shld, | 1591 | .slow_shld, |
| 1553 | .slow_unaligned_mem_16, | 1592 | .slow_unaligned_mem_16, |
| ... | @@ -1567,6 +1606,7 @@ pub const cpu = struct { | ... | @@ -1567,6 +1606,7 @@ pub const cpu = struct { |
| 1567 | .fast_scalar_shift_masks, | 1606 | .fast_scalar_shift_masks, |
| 1568 | .fxsr, | 1607 | .fxsr, |
| 1569 | .nopl, | 1608 | .nopl, |
| 1609 | .prfchw, | ||
| 1570 | .sbb_dep_breaking, | 1610 | .sbb_dep_breaking, |
| 1571 | .slow_shld, | 1611 | .slow_shld, |
| 1572 | .slow_unaligned_mem_16, | 1612 | .slow_unaligned_mem_16, |
| ... | @@ -1584,6 +1624,7 @@ pub const cpu = struct { | ... | @@ -1584,6 +1624,7 @@ pub const cpu = struct { |
| 1584 | .cx8, | 1624 | .cx8, |
| 1585 | .fxsr, | 1625 | .fxsr, |
| 1586 | .nopl, | 1626 | .nopl, |
| 1627 | .prfchw, | ||
| 1587 | .slow_shld, | 1628 | .slow_shld, |
| 1588 | .slow_unaligned_mem_16, | 1629 | .slow_unaligned_mem_16, |
| 1589 | .sse, | 1630 | .sse, |
| ... | @@ -1602,6 +1643,7 @@ pub const cpu = struct { | ... | @@ -1602,6 +1643,7 @@ pub const cpu = struct { |
| 1602 | .fast_scalar_shift_masks, | 1643 | .fast_scalar_shift_masks, |
| 1603 | .fxsr, | 1644 | .fxsr, |
| 1604 | .nopl, | 1645 | .nopl, |
| 1646 | .prfchw, | ||
| 1605 | .sbb_dep_breaking, | 1647 | .sbb_dep_breaking, |
| 1606 | .slow_shld, | 1648 | .slow_shld, |
| 1607 | .slow_unaligned_mem_16, | 1649 | .slow_unaligned_mem_16, |
| ... | @@ -1619,6 +1661,7 @@ pub const cpu = struct { | ... | @@ -1619,6 +1661,7 @@ pub const cpu = struct { |
| 1619 | .cx8, | 1661 | .cx8, |
| 1620 | .fxsr, | 1662 | .fxsr, |
| 1621 | .nopl, | 1663 | .nopl, |
| 1664 | .prfchw, | ||
| 1622 | .slow_shld, | 1665 | .slow_shld, |
| 1623 | .slow_unaligned_mem_16, | 1666 | .slow_unaligned_mem_16, |
| 1624 | .sse, | 1667 | .sse, |
| ... | @@ -1634,6 +1677,7 @@ pub const cpu = struct { | ... | @@ -1634,6 +1677,7 @@ pub const cpu = struct { |
| 1634 | .cmov, | 1677 | .cmov, |
| 1635 | .cx8, | 1678 | .cx8, |
| 1636 | .nopl, | 1679 | .nopl, |
| 1680 | .prfchw, | ||
| 1637 | .slow_shld, | 1681 | .slow_shld, |
| 1638 | .slow_unaligned_mem_16, | 1682 | .slow_unaligned_mem_16, |
| 1639 | .vzeroupper, | 1683 | .vzeroupper, |
| ... | @@ -1649,6 +1693,7 @@ pub const cpu = struct { | ... | @@ -1649,6 +1693,7 @@ pub const cpu = struct { |
| 1649 | .cx8, | 1693 | .cx8, |
| 1650 | .fxsr, | 1694 | .fxsr, |
| 1651 | .nopl, | 1695 | .nopl, |
| 1696 | .prfchw, | ||
| 1652 | .slow_shld, | 1697 | .slow_shld, |
| 1653 | .slow_unaligned_mem_16, | 1698 | .slow_unaligned_mem_16, |
| 1654 | .sse, | 1699 | .sse, |
| ... | @@ -1663,6 +1708,7 @@ pub const cpu = struct { | ... | @@ -1663,6 +1708,7 @@ pub const cpu = struct { |
| 1663 | .@"64bit", | 1708 | .@"64bit", |
| 1664 | .cmov, | 1709 | .cmov, |
| 1665 | .cx16, | 1710 | .cx16, |
| 1711 | .fast_imm16, | ||
| 1666 | .fxsr, | 1712 | .fxsr, |
| 1667 | .idivl_to_divb, | 1713 | .idivl_to_divb, |
| 1668 | .idivq_to_divl, | 1714 | .idivq_to_divl, |
| ... | @@ -1693,6 +1739,7 @@ pub const cpu = struct { | ... | @@ -1693,6 +1739,7 @@ pub const cpu = struct { |
| 1693 | .cx16, | 1739 | .cx16, |
| 1694 | .false_deps_popcnt, | 1740 | .false_deps_popcnt, |
| 1695 | .fast_7bytenop, | 1741 | .fast_7bytenop, |
| 1742 | .fast_imm16, | ||
| 1696 | .fast_movbe, | 1743 | .fast_movbe, |
| 1697 | .fsgsbase, | 1744 | .fsgsbase, |
| 1698 | .fxsr, | 1745 | .fxsr, |
| ... | @@ -1731,6 +1778,7 @@ pub const cpu = struct { | ... | @@ -1731,6 +1778,7 @@ pub const cpu = struct { |
| 1731 | .cx16, | 1778 | .cx16, |
| 1732 | .fast_scalar_shift_masks, | 1779 | .fast_scalar_shift_masks, |
| 1733 | .fxsr, | 1780 | .fxsr, |
| 1781 | .idivq_to_divl, | ||
| 1734 | .lzcnt, | 1782 | .lzcnt, |
| 1735 | .nopl, | 1783 | .nopl, |
| 1736 | .popcnt, | 1784 | .popcnt, |
| ... | @@ -1756,6 +1804,7 @@ pub const cpu = struct { | ... | @@ -1756,6 +1804,7 @@ pub const cpu = struct { |
| 1756 | .fast_11bytenop, | 1804 | .fast_11bytenop, |
| 1757 | .fast_scalar_shift_masks, | 1805 | .fast_scalar_shift_masks, |
| 1758 | .fxsr, | 1806 | .fxsr, |
| 1807 | .idivq_to_divl, | ||
| 1759 | .lwp, | 1808 | .lwp, |
| 1760 | .lzcnt, | 1809 | .lzcnt, |
| 1761 | .mmx, | 1810 | .mmx, |
| ... | @@ -1790,6 +1839,7 @@ pub const cpu = struct { | ... | @@ -1790,6 +1839,7 @@ pub const cpu = struct { |
| 1790 | .fast_scalar_shift_masks, | 1839 | .fast_scalar_shift_masks, |
| 1791 | .fma, | 1840 | .fma, |
| 1792 | .fxsr, | 1841 | .fxsr, |
| 1842 | .idivq_to_divl, | ||
| 1793 | .lwp, | 1843 | .lwp, |
| 1794 | .lzcnt, | 1844 | .lzcnt, |
| 1795 | .mmx, | 1845 | .mmx, |
| ... | @@ -1826,6 +1876,7 @@ pub const cpu = struct { | ... | @@ -1826,6 +1876,7 @@ pub const cpu = struct { |
| 1826 | .fma, | 1876 | .fma, |
| 1827 | .fsgsbase, | 1877 | .fsgsbase, |
| 1828 | .fxsr, | 1878 | .fxsr, |
| 1879 | .idivq_to_divl, | ||
| 1829 | .lwp, | 1880 | .lwp, |
| 1830 | .lzcnt, | 1881 | .lzcnt, |
| 1831 | .mmx, | 1882 | .mmx, |
| ... | @@ -1864,6 +1915,7 @@ pub const cpu = struct { | ... | @@ -1864,6 +1915,7 @@ pub const cpu = struct { |
| 1864 | .fma, | 1915 | .fma, |
| 1865 | .fsgsbase, | 1916 | .fsgsbase, |
| 1866 | .fxsr, | 1917 | .fxsr, |
| 1918 | .idivq_to_divl, | ||
| 1867 | .lwp, | 1919 | .lwp, |
| 1868 | .lzcnt, | 1920 | .lzcnt, |
| 1869 | .mmx, | 1921 | .mmx, |
| ... | @@ -1891,6 +1943,7 @@ pub const cpu = struct { | ... | @@ -1891,6 +1943,7 @@ pub const cpu = struct { |
| 1891 | .@"64bit", | 1943 | .@"64bit", |
| 1892 | .cmov, | 1944 | .cmov, |
| 1893 | .cx16, | 1945 | .cx16, |
| 1946 | .fast_imm16, | ||
| 1894 | .fxsr, | 1947 | .fxsr, |
| 1895 | .idivl_to_divb, | 1948 | .idivl_to_divb, |
| 1896 | .idivq_to_divl, | 1949 | .idivq_to_divl, |
| ... | @@ -1963,9 +2016,11 @@ pub const cpu = struct { | ... | @@ -1963,9 +2016,11 @@ pub const cpu = struct { |
| 1963 | .cmov, | 2016 | .cmov, |
| 1964 | .cx16, | 2017 | .cx16, |
| 1965 | .fast_15bytenop, | 2018 | .fast_15bytenop, |
| 2019 | .fast_imm16, | ||
| 1966 | .fast_scalar_shift_masks, | 2020 | .fast_scalar_shift_masks, |
| 1967 | .fast_vector_shift_masks, | 2021 | .fast_vector_shift_masks, |
| 1968 | .fxsr, | 2022 | .fxsr, |
| 2023 | .idivq_to_divl, | ||
| 1969 | .lzcnt, | 2024 | .lzcnt, |
| 1970 | .mmx, | 2025 | .mmx, |
| 1971 | .nopl, | 2026 | .nopl, |
| ... | @@ -1994,11 +2049,13 @@ pub const cpu = struct { | ... | @@ -1994,11 +2049,13 @@ pub const cpu = struct { |
| 1994 | .fast_15bytenop, | 2049 | .fast_15bytenop, |
| 1995 | .fast_bextr, | 2050 | .fast_bextr, |
| 1996 | .fast_hops, | 2051 | .fast_hops, |
| 2052 | .fast_imm16, | ||
| 1997 | .fast_lzcnt, | 2053 | .fast_lzcnt, |
| 1998 | .fast_movbe, | 2054 | .fast_movbe, |
| 1999 | .fast_scalar_shift_masks, | 2055 | .fast_scalar_shift_masks, |
| 2000 | .fast_vector_shift_masks, | 2056 | .fast_vector_shift_masks, |
| 2001 | .fxsr, | 2057 | .fxsr, |
| 2058 | .idivq_to_divl, | ||
| 2002 | .lzcnt, | 2059 | .lzcnt, |
| 2003 | .mmx, | 2060 | .mmx, |
| 2004 | .movbe, | 2061 | .movbe, |
| ... | @@ -2019,6 +2076,7 @@ pub const cpu = struct { | ... | @@ -2019,6 +2076,7 @@ pub const cpu = struct { |
| 2019 | .llvm_name = "c3", | 2076 | .llvm_name = "c3", |
| 2020 | .features = featureSet(&[_]Feature{ | 2077 | .features = featureSet(&[_]Feature{ |
| 2021 | .@"3dnow", | 2078 | .@"3dnow", |
| 2079 | .prfchw, | ||
| 2022 | .slow_unaligned_mem_16, | 2080 | .slow_unaligned_mem_16, |
| 2023 | .vzeroupper, | 2081 | .vzeroupper, |
| 2024 | .x87, | 2082 | .x87, |
| ... | @@ -2324,6 +2382,7 @@ pub const cpu = struct { | ... | @@ -2324,6 +2382,7 @@ pub const cpu = struct { |
| 2324 | .crc32, | 2382 | .crc32, |
| 2325 | .cx16, | 2383 | .cx16, |
| 2326 | .fxsr, | 2384 | .fxsr, |
| 2385 | .idivq_to_divl, | ||
| 2327 | .macrofusion, | 2386 | .macrofusion, |
| 2328 | .mmx, | 2387 | .mmx, |
| 2329 | .no_bypass_delay_mov, | 2388 | .no_bypass_delay_mov, |
| ... | @@ -2441,6 +2500,7 @@ pub const cpu = struct { | ... | @@ -2441,6 +2500,7 @@ pub const cpu = struct { |
| 2441 | .features = featureSet(&[_]Feature{ | 2500 | .features = featureSet(&[_]Feature{ |
| 2442 | .@"3dnowa", | 2501 | .@"3dnowa", |
| 2443 | .cx8, | 2502 | .cx8, |
| 2503 | .prfchw, | ||
| 2444 | .slow_unaligned_mem_16, | 2504 | .slow_unaligned_mem_16, |
| 2445 | .vzeroupper, | 2505 | .vzeroupper, |
| 2446 | .x87, | 2506 | .x87, |
| ... | @@ -2457,6 +2517,7 @@ pub const cpu = struct { | ... | @@ -2457,6 +2517,7 @@ pub const cpu = struct { |
| 2457 | .crc32, | 2517 | .crc32, |
| 2458 | .cx16, | 2518 | .cx16, |
| 2459 | .false_deps_popcnt, | 2519 | .false_deps_popcnt, |
| 2520 | .fast_imm16, | ||
| 2460 | .fast_movbe, | 2521 | .fast_movbe, |
| 2461 | .fsgsbase, | 2522 | .fsgsbase, |
| 2462 | .fxsr, | 2523 | .fxsr, |
| ... | @@ -2493,6 +2554,7 @@ pub const cpu = struct { | ... | @@ -2493,6 +2554,7 @@ pub const cpu = struct { |
| 2493 | .cmov, | 2554 | .cmov, |
| 2494 | .crc32, | 2555 | .crc32, |
| 2495 | .cx16, | 2556 | .cx16, |
| 2557 | .fast_imm16, | ||
| 2496 | .fast_movbe, | 2558 | .fast_movbe, |
| 2497 | .fsgsbase, | 2559 | .fsgsbase, |
| 2498 | .fxsr, | 2560 | .fxsr, |
| ... | @@ -2547,8 +2609,6 @@ pub const cpu = struct { | ... | @@ -2547,8 +2609,6 @@ pub const cpu = struct { |
| 2547 | .fxsr, | 2609 | .fxsr, |
| 2548 | .gfni, | 2610 | .gfni, |
| 2549 | .hreset, | 2611 | .hreset, |
| 2550 | .idivl_to_divb, | ||
| 2551 | .idivq_to_divl, | ||
| 2552 | .invpcid, | 2612 | .invpcid, |
| 2553 | .lzcnt, | 2613 | .lzcnt, |
| 2554 | .macrofusion, | 2614 | .macrofusion, |
| ... | @@ -2602,7 +2662,11 @@ pub const cpu = struct { | ... | @@ -2602,7 +2662,11 @@ pub const cpu = struct { |
| 2602 | .cx16, | 2662 | .cx16, |
| 2603 | .enqcmd, | 2663 | .enqcmd, |
| 2604 | .f16c, | 2664 | .f16c, |
| 2605 | .fast_movbe, | 2665 | .false_deps_popcnt, |
| 2666 | .fast_15bytenop, | ||
| 2667 | .fast_scalar_fsqrt, | ||
| 2668 | .fast_variable_perlane_shuffle, | ||
| 2669 | .fast_vector_fsqrt, | ||
| 2606 | .fma, | 2670 | .fma, |
| 2607 | .fsgsbase, | 2671 | .fsgsbase, |
| 2608 | .fxsr, | 2672 | .fxsr, |
| ... | @@ -2610,11 +2674,11 @@ pub const cpu = struct { | ... | @@ -2610,11 +2674,11 @@ pub const cpu = struct { |
| 2610 | .hreset, | 2674 | .hreset, |
| 2611 | .invpcid, | 2675 | .invpcid, |
| 2612 | .lzcnt, | 2676 | .lzcnt, |
| 2677 | .macrofusion, | ||
| 2613 | .mmx, | 2678 | .mmx, |
| 2614 | .movbe, | 2679 | .movbe, |
| 2615 | .movdir64b, | 2680 | .movdir64b, |
| 2616 | .movdiri, | 2681 | .movdiri, |
| 2617 | .no_bypass_delay, | ||
| 2618 | .nopl, | 2682 | .nopl, |
| 2619 | .pconfig, | 2683 | .pconfig, |
| 2620 | .pku, | 2684 | .pku, |
| ... | @@ -2628,11 +2692,8 @@ pub const cpu = struct { | ... | @@ -2628,11 +2692,8 @@ pub const cpu = struct { |
| 2628 | .serialize, | 2692 | .serialize, |
| 2629 | .sha, | 2693 | .sha, |
| 2630 | .shstk, | 2694 | .shstk, |
| 2631 | .slow_incdec, | 2695 | .slow_3ops_lea, |
| 2632 | .slow_lea, | ||
| 2633 | .slow_two_mem_ops, | ||
| 2634 | .uintr, | 2696 | .uintr, |
| 2635 | .use_glm_div_sqrt_costs, | ||
| 2636 | .vaes, | 2697 | .vaes, |
| 2637 | .vpclmulqdq, | 2698 | .vpclmulqdq, |
| 2638 | .vzeroupper, | 2699 | .vzeroupper, |
| ... | @@ -2666,6 +2727,7 @@ pub const cpu = struct { | ... | @@ -2666,6 +2727,7 @@ pub const cpu = struct { |
| 2666 | .avxvnni, | 2727 | .avxvnni, |
| 2667 | .bmi, | 2728 | .bmi, |
| 2668 | .bmi2, | 2729 | .bmi2, |
| 2730 | .branch_hint, | ||
| 2669 | .cldemote, | 2731 | .cldemote, |
| 2670 | .clflushopt, | 2732 | .clflushopt, |
| 2671 | .clwb, | 2733 | .clwb, |
| ... | @@ -2754,6 +2816,7 @@ pub const cpu = struct { | ... | @@ -2754,6 +2816,7 @@ pub const cpu = struct { |
| 2754 | .avxvnni, | 2816 | .avxvnni, |
| 2755 | .bmi, | 2817 | .bmi, |
| 2756 | .bmi2, | 2818 | .bmi2, |
| 2819 | .branch_hint, | ||
| 2757 | .cldemote, | 2820 | .cldemote, |
| 2758 | .clflushopt, | 2821 | .clflushopt, |
| 2759 | .clwb, | 2822 | .clwb, |
| ... | @@ -3080,6 +3143,7 @@ pub const cpu = struct { | ... | @@ -3080,6 +3143,7 @@ pub const cpu = struct { |
| 3080 | .features = featureSet(&[_]Feature{ | 3143 | .features = featureSet(&[_]Feature{ |
| 3081 | .@"3dnow", | 3144 | .@"3dnow", |
| 3082 | .cx8, | 3145 | .cx8, |
| 3146 | .prfchw, | ||
| 3083 | .slow_unaligned_mem_16, | 3147 | .slow_unaligned_mem_16, |
| 3084 | .vzeroupper, | 3148 | .vzeroupper, |
| 3085 | .x87, | 3149 | .x87, |
| ... | @@ -3091,6 +3155,7 @@ pub const cpu = struct { | ... | @@ -3091,6 +3155,7 @@ pub const cpu = struct { |
| 3091 | .features = featureSet(&[_]Feature{ | 3155 | .features = featureSet(&[_]Feature{ |
| 3092 | .@"3dnow", | 3156 | .@"3dnow", |
| 3093 | .cx8, | 3157 | .cx8, |
| 3158 | .prfchw, | ||
| 3094 | .slow_unaligned_mem_16, | 3159 | .slow_unaligned_mem_16, |
| 3095 | .vzeroupper, | 3160 | .vzeroupper, |
| 3096 | .x87, | 3161 | .x87, |
| ... | @@ -3107,6 +3172,7 @@ pub const cpu = struct { | ... | @@ -3107,6 +3172,7 @@ pub const cpu = struct { |
| 3107 | .fast_scalar_shift_masks, | 3172 | .fast_scalar_shift_masks, |
| 3108 | .fxsr, | 3173 | .fxsr, |
| 3109 | .nopl, | 3174 | .nopl, |
| 3175 | .prfchw, | ||
| 3110 | .sbb_dep_breaking, | 3176 | .sbb_dep_breaking, |
| 3111 | .slow_shld, | 3177 | .slow_shld, |
| 3112 | .slow_unaligned_mem_16, | 3178 | .slow_unaligned_mem_16, |
| ... | @@ -3126,6 +3192,7 @@ pub const cpu = struct { | ... | @@ -3126,6 +3192,7 @@ pub const cpu = struct { |
| 3126 | .fast_scalar_shift_masks, | 3192 | .fast_scalar_shift_masks, |
| 3127 | .fxsr, | 3193 | .fxsr, |
| 3128 | .nopl, | 3194 | .nopl, |
| 3195 | .prfchw, | ||
| 3129 | .sbb_dep_breaking, | 3196 | .sbb_dep_breaking, |
| 3130 | .slow_shld, | 3197 | .slow_shld, |
| 3131 | .slow_unaligned_mem_16, | 3198 | .slow_unaligned_mem_16, |
| ... | @@ -3151,6 +3218,7 @@ pub const cpu = struct { | ... | @@ -3151,6 +3218,7 @@ pub const cpu = struct { |
| 3151 | .cx16, | 3218 | .cx16, |
| 3152 | .evex512, | 3219 | .evex512, |
| 3153 | .fast_gather, | 3220 | .fast_gather, |
| 3221 | .fast_imm16, | ||
| 3154 | .fast_movbe, | 3222 | .fast_movbe, |
| 3155 | .fsgsbase, | 3223 | .fsgsbase, |
| 3156 | .fxsr, | 3224 | .fxsr, |
| ... | @@ -3193,6 +3261,7 @@ pub const cpu = struct { | ... | @@ -3193,6 +3261,7 @@ pub const cpu = struct { |
| 3193 | .cx16, | 3261 | .cx16, |
| 3194 | .evex512, | 3262 | .evex512, |
| 3195 | .fast_gather, | 3263 | .fast_gather, |
| 3264 | .fast_imm16, | ||
| 3196 | .fast_movbe, | 3265 | .fast_movbe, |
| 3197 | .fsgsbase, | 3266 | .fsgsbase, |
| 3198 | .fxsr, | 3267 | .fxsr, |
| ... | @@ -3384,6 +3453,7 @@ pub const cpu = struct { | ... | @@ -3384,6 +3453,7 @@ pub const cpu = struct { |
| 3384 | .crc32, | 3453 | .crc32, |
| 3385 | .cx16, | 3454 | .cx16, |
| 3386 | .fxsr, | 3455 | .fxsr, |
| 3456 | .idivq_to_divl, | ||
| 3387 | .macrofusion, | 3457 | .macrofusion, |
| 3388 | .mmx, | 3458 | .mmx, |
| 3389 | .no_bypass_delay_mov, | 3459 | .no_bypass_delay_mov, |
| ... | @@ -3422,6 +3492,7 @@ pub const cpu = struct { | ... | @@ -3422,6 +3492,7 @@ pub const cpu = struct { |
| 3422 | .fast_scalar_shift_masks, | 3492 | .fast_scalar_shift_masks, |
| 3423 | .fxsr, | 3493 | .fxsr, |
| 3424 | .nopl, | 3494 | .nopl, |
| 3495 | .prfchw, | ||
| 3425 | .sbb_dep_breaking, | 3496 | .sbb_dep_breaking, |
| 3426 | .slow_shld, | 3497 | .slow_shld, |
| 3427 | .slow_unaligned_mem_16, | 3498 | .slow_unaligned_mem_16, |
| ... | @@ -3441,6 +3512,7 @@ pub const cpu = struct { | ... | @@ -3441,6 +3512,7 @@ pub const cpu = struct { |
| 3441 | .fast_scalar_shift_masks, | 3512 | .fast_scalar_shift_masks, |
| 3442 | .fxsr, | 3513 | .fxsr, |
| 3443 | .nopl, | 3514 | .nopl, |
| 3515 | .prfchw, | ||
| 3444 | .sbb_dep_breaking, | 3516 | .sbb_dep_breaking, |
| 3445 | .slow_shld, | 3517 | .slow_shld, |
| 3446 | .slow_unaligned_mem_16, | 3518 | .slow_unaligned_mem_16, |
| ... | @@ -3937,7 +4009,11 @@ pub const cpu = struct { | ... | @@ -3937,7 +4009,11 @@ pub const cpu = struct { |
| 3937 | .cx16, | 4009 | .cx16, |
| 3938 | .enqcmd, | 4010 | .enqcmd, |
| 3939 | .f16c, | 4011 | .f16c, |
| 3940 | .fast_movbe, | 4012 | .false_deps_popcnt, |
| 4013 | .fast_15bytenop, | ||
| 4014 | .fast_scalar_fsqrt, | ||
| 4015 | .fast_variable_perlane_shuffle, | ||
| 4016 | .fast_vector_fsqrt, | ||
| 3941 | .fma, | 4017 | .fma, |
| 3942 | .fsgsbase, | 4018 | .fsgsbase, |
| 3943 | .fxsr, | 4019 | .fxsr, |
| ... | @@ -3945,11 +4021,11 @@ pub const cpu = struct { | ... | @@ -3945,11 +4021,11 @@ pub const cpu = struct { |
| 3945 | .hreset, | 4021 | .hreset, |
| 3946 | .invpcid, | 4022 | .invpcid, |
| 3947 | .lzcnt, | 4023 | .lzcnt, |
| 4024 | .macrofusion, | ||
| 3948 | .mmx, | 4025 | .mmx, |
| 3949 | .movbe, | 4026 | .movbe, |
| 3950 | .movdir64b, | 4027 | .movdir64b, |
| 3951 | .movdiri, | 4028 | .movdiri, |
| 3952 | .no_bypass_delay, | ||
| 3953 | .nopl, | 4029 | .nopl, |
| 3954 | .pconfig, | 4030 | .pconfig, |
| 3955 | .pku, | 4031 | .pku, |
| ... | @@ -3963,11 +4039,8 @@ pub const cpu = struct { | ... | @@ -3963,11 +4039,8 @@ pub const cpu = struct { |
| 3963 | .serialize, | 4039 | .serialize, |
| 3964 | .sha, | 4040 | .sha, |
| 3965 | .shstk, | 4041 | .shstk, |
| 3966 | .slow_incdec, | 4042 | .slow_3ops_lea, |
| 3967 | .slow_lea, | ||
| 3968 | .slow_two_mem_ops, | ||
| 3969 | .uintr, | 4043 | .uintr, |
| 3970 | .use_glm_div_sqrt_costs, | ||
| 3971 | .vaes, | 4044 | .vaes, |
| 3972 | .vpclmulqdq, | 4045 | .vpclmulqdq, |
| 3973 | .vzeroupper, | 4046 | .vzeroupper, |
| ... | @@ -3989,6 +4062,7 @@ pub const cpu = struct { | ... | @@ -3989,6 +4062,7 @@ pub const cpu = struct { |
| 3989 | .cx16, | 4062 | .cx16, |
| 3990 | .false_deps_popcnt, | 4063 | .false_deps_popcnt, |
| 3991 | .fast_7bytenop, | 4064 | .fast_7bytenop, |
| 4065 | .fast_imm16, | ||
| 3992 | .fast_movbe, | 4066 | .fast_movbe, |
| 3993 | .fxsr, | 4067 | .fxsr, |
| 3994 | .idivq_to_divl, | 4068 | .idivq_to_divl, |
| ... | @@ -4191,6 +4265,7 @@ pub const cpu = struct { | ... | @@ -4191,6 +4265,7 @@ pub const cpu = struct { |
| 4191 | .cx16, | 4265 | .cx16, |
| 4192 | .false_deps_popcnt, | 4266 | .false_deps_popcnt, |
| 4193 | .fast_7bytenop, | 4267 | .fast_7bytenop, |
| 4268 | .fast_imm16, | ||
| 4194 | .fast_movbe, | 4269 | .fast_movbe, |
| 4195 | .fxsr, | 4270 | .fxsr, |
| 4196 | .idivq_to_divl, | 4271 | .idivq_to_divl, |
| ... | @@ -4293,6 +4368,7 @@ pub const cpu = struct { | ... | @@ -4293,6 +4368,7 @@ pub const cpu = struct { |
| 4293 | .cmov, | 4368 | .cmov, |
| 4294 | .crc32, | 4369 | .crc32, |
| 4295 | .cx16, | 4370 | .cx16, |
| 4371 | .fast_imm16, | ||
| 4296 | .fast_movbe, | 4372 | .fast_movbe, |
| 4297 | .fsgsbase, | 4373 | .fsgsbase, |
| 4298 | .fxsr, | 4374 | .fxsr, |
| ... | @@ -4331,6 +4407,7 @@ pub const cpu = struct { | ... | @@ -4331,6 +4407,7 @@ pub const cpu = struct { |
| 4331 | .crc32, | 4407 | .crc32, |
| 4332 | .cx16, | 4408 | .cx16, |
| 4333 | .fxsr, | 4409 | .fxsr, |
| 4410 | .idivq_to_divl, | ||
| 4334 | .macrofusion, | 4411 | .macrofusion, |
| 4335 | .mmx, | 4412 | .mmx, |
| 4336 | .no_bypass_delay_mov, | 4413 | .no_bypass_delay_mov, |
| ... | @@ -4348,6 +4425,7 @@ pub const cpu = struct { | ... | @@ -4348,6 +4425,7 @@ pub const cpu = struct { |
| 4348 | .llvm_name = "winchip2", | 4425 | .llvm_name = "winchip2", |
| 4349 | .features = featureSet(&[_]Feature{ | 4426 | .features = featureSet(&[_]Feature{ |
| 4350 | .@"3dnow", | 4427 | .@"3dnow", |
| 4428 | .prfchw, | ||
| 4351 | .slow_unaligned_mem_16, | 4429 | .slow_unaligned_mem_16, |
| 4352 | .vzeroupper, | 4430 | .vzeroupper, |
| 4353 | .x87, | 4431 | .x87, |
| ... | @@ -4519,6 +4597,7 @@ pub const cpu = struct { | ... | @@ -4519,6 +4597,7 @@ pub const cpu = struct { |
| 4519 | .f16c, | 4597 | .f16c, |
| 4520 | .fast_15bytenop, | 4598 | .fast_15bytenop, |
| 4521 | .fast_bextr, | 4599 | .fast_bextr, |
| 4600 | .fast_imm16, | ||
| 4522 | .fast_lzcnt, | 4601 | .fast_lzcnt, |
| 4523 | .fast_movbe, | 4602 | .fast_movbe, |
| 4524 | .fast_scalar_fsqrt, | 4603 | .fast_scalar_fsqrt, |
| ... | @@ -4528,6 +4607,7 @@ pub const cpu = struct { | ... | @@ -4528,6 +4607,7 @@ pub const cpu = struct { |
| 4528 | .fma, | 4607 | .fma, |
| 4529 | .fsgsbase, | 4608 | .fsgsbase, |
| 4530 | .fxsr, | 4609 | .fxsr, |
| 4610 | .idivq_to_divl, | ||
| 4531 | .lzcnt, | 4611 | .lzcnt, |
| 4532 | .mmx, | 4612 | .mmx, |
| 4533 | .movbe, | 4613 | .movbe, |
| ... | @@ -4571,6 +4651,7 @@ pub const cpu = struct { | ... | @@ -4571,6 +4651,7 @@ pub const cpu = struct { |
| 4571 | .f16c, | 4651 | .f16c, |
| 4572 | .fast_15bytenop, | 4652 | .fast_15bytenop, |
| 4573 | .fast_bextr, | 4653 | .fast_bextr, |
| 4654 | .fast_imm16, | ||
| 4574 | .fast_lzcnt, | 4655 | .fast_lzcnt, |
| 4575 | .fast_movbe, | 4656 | .fast_movbe, |
| 4576 | .fast_scalar_fsqrt, | 4657 | .fast_scalar_fsqrt, |
| ... | @@ -4580,6 +4661,7 @@ pub const cpu = struct { | ... | @@ -4580,6 +4661,7 @@ pub const cpu = struct { |
| 4580 | .fma, | 4661 | .fma, |
| 4581 | .fsgsbase, | 4662 | .fsgsbase, |
| 4582 | .fxsr, | 4663 | .fxsr, |
| 4664 | .idivq_to_divl, | ||
| 4583 | .lzcnt, | 4665 | .lzcnt, |
| 4584 | .mmx, | 4666 | .mmx, |
| 4585 | .movbe, | 4667 | .movbe, |
| ... | @@ -4624,6 +4706,7 @@ pub const cpu = struct { | ... | @@ -4624,6 +4706,7 @@ pub const cpu = struct { |
| 4624 | .f16c, | 4706 | .f16c, |
| 4625 | .fast_15bytenop, | 4707 | .fast_15bytenop, |
| 4626 | .fast_bextr, | 4708 | .fast_bextr, |
| 4709 | .fast_imm16, | ||
| 4627 | .fast_lzcnt, | 4710 | .fast_lzcnt, |
| 4628 | .fast_movbe, | 4711 | .fast_movbe, |
| 4629 | .fast_scalar_fsqrt, | 4712 | .fast_scalar_fsqrt, |
| ... | @@ -4634,6 +4717,7 @@ pub const cpu = struct { | ... | @@ -4634,6 +4717,7 @@ pub const cpu = struct { |
| 4634 | .fsgsbase, | 4717 | .fsgsbase, |
| 4635 | .fsrm, | 4718 | .fsrm, |
| 4636 | .fxsr, | 4719 | .fxsr, |
| 4720 | .idivq_to_divl, | ||
| 4637 | .invpcid, | 4721 | .invpcid, |
| 4638 | .lzcnt, | 4722 | .lzcnt, |
| 4639 | .macrofusion, | 4723 | .macrofusion, |
| ... | @@ -4692,6 +4776,8 @@ pub const cpu = struct { | ... | @@ -4692,6 +4776,8 @@ pub const cpu = struct { |
| 4692 | .evex512, | 4776 | .evex512, |
| 4693 | .fast_15bytenop, | 4777 | .fast_15bytenop, |
| 4694 | .fast_bextr, | 4778 | .fast_bextr, |
| 4779 | .fast_dpwssd, | ||
| 4780 | .fast_imm16, | ||
| 4695 | .fast_lzcnt, | 4781 | .fast_lzcnt, |
| 4696 | .fast_movbe, | 4782 | .fast_movbe, |
| 4697 | .fast_scalar_fsqrt, | 4783 | .fast_scalar_fsqrt, |
| ... | @@ -4702,6 +4788,7 @@ pub const cpu = struct { | ... | @@ -4702,6 +4788,7 @@ pub const cpu = struct { |
| 4702 | .fsrm, | 4788 | .fsrm, |
| 4703 | .fxsr, | 4789 | .fxsr, |
| 4704 | .gfni, | 4790 | .gfni, |
| 4791 | .idivq_to_divl, | ||
| 4705 | .invpcid, | 4792 | .invpcid, |
| 4706 | .lzcnt, | 4793 | .lzcnt, |
| 4707 | .macrofusion, | 4794 | .macrofusion, |