commit c717b0d08df5a0d1ca94d718fd4d28d3334eed57 (tree)
parent 3a6ddce4cf303d7a2bb618223043898d7b1bcc49
Author: Alex Rønne Petersen <alex@alexrp.com>
Date: Fri, 22 May 2026 21:11:09 +0200
std.Target: add spacemit_x100 and spacemit_a100 RISC-V CPU models
Backported from LLVM main branch.
Diffstat:
2 files changed, 194 insertions(+), 0 deletions(-)
diff --git a/lib/std/Target/riscv.zig b/lib/std/Target/riscv.zig
@@ -3370,6 +3370,103 @@ pub const cpu = struct {
.zvl1024b,
}),
};
+ pub const spacemit_a100: CpuModel = .{
+ .name = "spacemit_a100",
+ .llvm_name = null,
+ .features = featureSet(&[_]Feature{
+ .@"64bit",
+ .a,
+ .b,
+ .c,
+ .dlen_factor_2,
+ .i,
+ .m,
+ .optimized_nf2_segment_load_store,
+ .optimized_nf3_segment_load_store,
+ .optimized_nf4_segment_load_store,
+ .smepmp,
+ .smnpm,
+ .smstateen,
+ .ssccptr,
+ .sscofpmf,
+ .sscounterenw,
+ .ssnpm,
+ .sspm,
+ .sstc,
+ .sstvala,
+ .sstvecd,
+ .ssu64xl,
+ .supm,
+ .svade,
+ .svbare,
+ .svinval,
+ .svnapot,
+ .svpbmt,
+ .unaligned_scalar_mem,
+ .v,
+ .vxrm_pipeline_flush,
+ .za64rs,
+ .zawrs,
+ .zbc,
+ .zbkc,
+ .zcb,
+ .zcmop,
+ .zfa,
+ .zfh,
+ .zic64b,
+ .zicbom,
+ .zicbop,
+ .zicboz,
+ .ziccamoa,
+ .ziccif,
+ .zicclsm,
+ .ziccrse,
+ .zicntr,
+ .zicond,
+ .zifencei,
+ .zihintntl,
+ .zihintpause,
+ .zihpm,
+ .zimop,
+ .zkt,
+ .zvbb,
+ .zvfbfwma,
+ .zvfh,
+ .zvkng,
+ .zvknha,
+ .zvksc,
+ .zvksg,
+ .zvl1024b,
+ }),
+ };
+ pub const spacemit_x100: CpuModel = .{
+ .name = "spacemit_x100",
+ .llvm_name = null,
+ .features = featureSet(&[_]Feature{
+ .dlen_factor_2,
+ .optimized_nf2_segment_load_store,
+ .optimized_nf3_segment_load_store,
+ .optimized_nf4_segment_load_store,
+ .rva23s64,
+ .smepmp,
+ .smnpm,
+ .smstateen,
+ .sspm,
+ .unaligned_scalar_mem,
+ .vxrm_pipeline_flush,
+ .xsmtvdot,
+ .zbc,
+ .zbkc,
+ .zfh,
+ .zvfbfwma,
+ .zvfh,
+ .zvkng,
+ .zvknha,
+ .zvksc,
+ .zvksg,
+ .zvl256b,
+ }),
+ };
pub const spacemit_x60: CpuModel = .{
.name = "spacemit_x60",
.llvm_name = "spacemit-x60",
diff --git a/tools/update_cpu_features.zig b/tools/update_cpu_features.zig
@@ -1548,6 +1548,103 @@ const targets = [_]ArchTarget{
.zig_name = "baseline_rv64",
.features = &.{ "64bit", "a", "c", "d", "f", "i", "m" },
},
+ .{
+ .llvm_name = null,
+ .zig_name = "spacemit_a100",
+ .features = &.{
+ "64bit",
+ "a",
+ "b",
+ "c",
+ "dlen_factor_2",
+ "i",
+ "m",
+ "optimized_nf2_segment_load_store",
+ "optimized_nf3_segment_load_store",
+ "optimized_nf4_segment_load_store",
+ "smepmp",
+ "smnpm",
+ "smstateen",
+ "ssccptr",
+ "sscofpmf",
+ "sscounterenw",
+ "ssnpm",
+ "sspm",
+ "sstc",
+ "sstvala",
+ "sstvecd",
+ "ssu64xl",
+ "supm",
+ "svade",
+ "svbare",
+ "svinval",
+ "svnapot",
+ "svpbmt",
+ "unaligned_scalar_mem",
+ "v",
+ "vxrm_pipeline_flush",
+ "za64rs",
+ "zawrs",
+ "zbc",
+ "zbkc",
+ "zcb",
+ "zcmop",
+ "zfa",
+ "zfh",
+ "zic64b",
+ "zicbom",
+ "zicbop",
+ "zicboz",
+ "ziccamoa",
+ "ziccif",
+ "zicclsm",
+ "ziccrse",
+ "zicntr",
+ "zicond",
+ "zifencei",
+ "zihintntl",
+ "zihintpause",
+ "zihpm",
+ "zimop",
+ "zkt",
+ "zvbb",
+ "zvfbfwma",
+ "zvfh",
+ "zvkng",
+ "zvknha",
+ "zvksc",
+ "zvksg",
+ "zvl1024b",
+ },
+ },
+ .{
+ .llvm_name = null,
+ .zig_name = "spacemit_x100",
+ .features = &.{
+ "dlen_factor_2",
+ "optimized_nf2_segment_load_store",
+ "optimized_nf3_segment_load_store",
+ "optimized_nf4_segment_load_store",
+ "rva23s64",
+ "smepmp",
+ "smnpm",
+ "smstateen",
+ "sspm",
+ "unaligned_scalar_mem",
+ "vxrm_pipeline_flush",
+ "xsmtvdot",
+ "zbc",
+ "zbkc",
+ "zfh",
+ "zvfbfwma",
+ "zvfh",
+ "zvkng",
+ "zvknha",
+ "zvksc",
+ "zvksg",
+ "zvl256b",
+ },
+ },
},
},
.{