authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-05-22 21:11:09+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-05-22 21:12:45+02:00
logc717b0d08df5a0d1ca94d718fd4d28d3334eed57
treea3834305f9436a87218002722fb481f573c14459
parent3a6ddce4cf303d7a2bb618223043898d7b1bcc49
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.Target: add spacemit_x100 and spacemit_a100 RISC-V CPU models

Backported from LLVM main branch.

2 files changed, 194 insertions(+), 0 deletions(-)

lib/std/Target/riscv.zig+97
...@@ -3370,6 +3370,103 @@ pub const cpu = struct {...@@ -3370,6 +3370,103 @@ pub const cpu = struct {
3370 .zvl1024b,3370 .zvl1024b,
3371 }),3371 }),
3372 };3372 };
3373 pub const spacemit_a100: CpuModel = .{
3374 .name = "spacemit_a100",
3375 .llvm_name = null,
3376 .features = featureSet(&[_]Feature{
3377 .@"64bit",
3378 .a,
3379 .b,
3380 .c,
3381 .dlen_factor_2,
3382 .i,
3383 .m,
3384 .optimized_nf2_segment_load_store,
3385 .optimized_nf3_segment_load_store,
3386 .optimized_nf4_segment_load_store,
3387 .smepmp,
3388 .smnpm,
3389 .smstateen,
3390 .ssccptr,
3391 .sscofpmf,
3392 .sscounterenw,
3393 .ssnpm,
3394 .sspm,
3395 .sstc,
3396 .sstvala,
3397 .sstvecd,
3398 .ssu64xl,
3399 .supm,
3400 .svade,
3401 .svbare,
3402 .svinval,
3403 .svnapot,
3404 .svpbmt,
3405 .unaligned_scalar_mem,
3406 .v,
3407 .vxrm_pipeline_flush,
3408 .za64rs,
3409 .zawrs,
3410 .zbc,
3411 .zbkc,
3412 .zcb,
3413 .zcmop,
3414 .zfa,
3415 .zfh,
3416 .zic64b,
3417 .zicbom,
3418 .zicbop,
3419 .zicboz,
3420 .ziccamoa,
3421 .ziccif,
3422 .zicclsm,
3423 .ziccrse,
3424 .zicntr,
3425 .zicond,
3426 .zifencei,
3427 .zihintntl,
3428 .zihintpause,
3429 .zihpm,
3430 .zimop,
3431 .zkt,
3432 .zvbb,
3433 .zvfbfwma,
3434 .zvfh,
3435 .zvkng,
3436 .zvknha,
3437 .zvksc,
3438 .zvksg,
3439 .zvl1024b,
3440 }),
3441 };
3442 pub const spacemit_x100: CpuModel = .{
3443 .name = "spacemit_x100",
3444 .llvm_name = null,
3445 .features = featureSet(&[_]Feature{
3446 .dlen_factor_2,
3447 .optimized_nf2_segment_load_store,
3448 .optimized_nf3_segment_load_store,
3449 .optimized_nf4_segment_load_store,
3450 .rva23s64,
3451 .smepmp,
3452 .smnpm,
3453 .smstateen,
3454 .sspm,
3455 .unaligned_scalar_mem,
3456 .vxrm_pipeline_flush,
3457 .xsmtvdot,
3458 .zbc,
3459 .zbkc,
3460 .zfh,
3461 .zvfbfwma,
3462 .zvfh,
3463 .zvkng,
3464 .zvknha,
3465 .zvksc,
3466 .zvksg,
3467 .zvl256b,
3468 }),
3469 };
3373 pub const spacemit_x60: CpuModel = .{3470 pub const spacemit_x60: CpuModel = .{
3374 .name = "spacemit_x60",3471 .name = "spacemit_x60",
3375 .llvm_name = "spacemit-x60",3472 .llvm_name = "spacemit-x60",
tools/update_cpu_features.zig+97
...@@ -1548,6 +1548,103 @@ const targets = [_]ArchTarget{...@@ -1548,6 +1548,103 @@ const targets = [_]ArchTarget{
1548 .zig_name = "baseline_rv64",1548 .zig_name = "baseline_rv64",
1549 .features = &.{ "64bit", "a", "c", "d", "f", "i", "m" },1549 .features = &.{ "64bit", "a", "c", "d", "f", "i", "m" },
1550 },1550 },
1551 .{
1552 .llvm_name = null,
1553 .zig_name = "spacemit_a100",
1554 .features = &.{
1555 "64bit",
1556 "a",
1557 "b",
1558 "c",
1559 "dlen_factor_2",
1560 "i",
1561 "m",
1562 "optimized_nf2_segment_load_store",
1563 "optimized_nf3_segment_load_store",
1564 "optimized_nf4_segment_load_store",
1565 "smepmp",
1566 "smnpm",
1567 "smstateen",
1568 "ssccptr",
1569 "sscofpmf",
1570 "sscounterenw",
1571 "ssnpm",
1572 "sspm",
1573 "sstc",
1574 "sstvala",
1575 "sstvecd",
1576 "ssu64xl",
1577 "supm",
1578 "svade",
1579 "svbare",
1580 "svinval",
1581 "svnapot",
1582 "svpbmt",
1583 "unaligned_scalar_mem",
1584 "v",
1585 "vxrm_pipeline_flush",
1586 "za64rs",
1587 "zawrs",
1588 "zbc",
1589 "zbkc",
1590 "zcb",
1591 "zcmop",
1592 "zfa",
1593 "zfh",
1594 "zic64b",
1595 "zicbom",
1596 "zicbop",
1597 "zicboz",
1598 "ziccamoa",
1599 "ziccif",
1600 "zicclsm",
1601 "ziccrse",
1602 "zicntr",
1603 "zicond",
1604 "zifencei",
1605 "zihintntl",
1606 "zihintpause",
1607 "zihpm",
1608 "zimop",
1609 "zkt",
1610 "zvbb",
1611 "zvfbfwma",
1612 "zvfh",
1613 "zvkng",
1614 "zvknha",
1615 "zvksc",
1616 "zvksg",
1617 "zvl1024b",
1618 },
1619 },
1620 .{
1621 .llvm_name = null,
1622 .zig_name = "spacemit_x100",
1623 .features = &.{
1624 "dlen_factor_2",
1625 "optimized_nf2_segment_load_store",
1626 "optimized_nf3_segment_load_store",
1627 "optimized_nf4_segment_load_store",
1628 "rva23s64",
1629 "smepmp",
1630 "smnpm",
1631 "smstateen",
1632 "sspm",
1633 "unaligned_scalar_mem",
1634 "vxrm_pipeline_flush",
1635 "xsmtvdot",
1636 "zbc",
1637 "zbkc",
1638 "zfh",
1639 "zvfbfwma",
1640 "zvfh",
1641 "zvkng",
1642 "zvknha",
1643 "zvksc",
1644 "zvksg",
1645 "zvl256b",
1646 },
1647 },
1551 },1648 },
1552 },1649 },
1553 .{1650 .{