aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Target/wasm.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-04-05 01:46:13 -0400
committerGitHub <noreply@github.com>2025-04-05 01:46:13 -0400
commit0cd31fc7ff157551cfbba5da35cd79f118d2a2e3 (patch)
treea308488f5d85184c8ec402fb3f55f1cf2704443e /lib/std/Target/wasm.zig
parent8acedfd5baabab705946ad097746f9183ef62420 (diff)
parentcefe65c1b8abe65a22d4b68410db1be264fdeda0 (diff)
downloadzig-0cd31fc7ff157551cfbba5da35cd79f118d2a2e3.tar.gz
zig-0cd31fc7ff157551cfbba5da35cd79f118d2a2e3.zip
Merge pull request #22780 from ziglang/llvm20
LLVM 20
Diffstat (limited to 'lib/std/Target/wasm.zig')
-rw-r--r--lib/std/Target/wasm.zig43
1 files changed, 34 insertions, 9 deletions
diff --git a/lib/std/Target/wasm.zig b/lib/std/Target/wasm.zig
index d5d4dc8f7e..3862a91edd 100644
--- a/lib/std/Target/wasm.zig
+++ b/lib/std/Target/wasm.zig
@@ -7,9 +7,11 @@ const CpuModel = std.Target.Cpu.Model;
pub const Feature = enum {
atomics,
bulk_memory,
+ bulk_memory_opt,
+ call_indirect_overlong,
exception_handling,
extended_const,
- half_precision,
+ fp16,
multimemory,
multivalue,
mutable_globals,
@@ -20,6 +22,7 @@ pub const Feature = enum {
sign_ext,
simd128,
tail_call,
+ wide_arithmetic,
};
pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
@@ -39,6 +42,18 @@ pub const all_features = blk: {
result[@intFromEnum(Feature.bulk_memory)] = .{
.llvm_name = "bulk-memory",
.description = "Enable bulk memory operations",
+ .dependencies = featureSet(&[_]Feature{
+ .bulk_memory_opt,
+ }),
+ };
+ result[@intFromEnum(Feature.bulk_memory_opt)] = .{
+ .llvm_name = "bulk-memory-opt",
+ .description = "Enable bulk memory optimization operations",
+ .dependencies = featureSet(&[_]Feature{}),
+ };
+ result[@intFromEnum(Feature.call_indirect_overlong)] = .{
+ .llvm_name = "call-indirect-overlong",
+ .description = "Enable overlong encoding for call_indirect immediates",
.dependencies = featureSet(&[_]Feature{}),
};
result[@intFromEnum(Feature.exception_handling)] = .{
@@ -51,9 +66,9 @@ pub const all_features = blk: {
.description = "Enable extended const expressions",
.dependencies = featureSet(&[_]Feature{}),
};
- result[@intFromEnum(Feature.half_precision)] = .{
- .llvm_name = "half-precision",
- .description = "Enable half precision instructions",
+ result[@intFromEnum(Feature.fp16)] = .{
+ .llvm_name = "fp16",
+ .description = "Enable FP16 instructions",
.dependencies = featureSet(&[_]Feature{}),
};
result[@intFromEnum(Feature.multimemory)] = .{
@@ -75,7 +90,7 @@ pub const all_features = blk: {
.llvm_name = null,
.description = "Bulk memory operations with a zero length do not trap",
.dependencies = featureSet(&[_]Feature{
- .bulk_memory,
+ .bulk_memory_opt,
}),
};
result[@intFromEnum(Feature.nontrapping_fptoint)] = .{
@@ -86,7 +101,9 @@ pub const all_features = blk: {
result[@intFromEnum(Feature.reference_types)] = .{
.llvm_name = "reference-types",
.description = "Enable reference types",
- .dependencies = featureSet(&[_]Feature{}),
+ .dependencies = featureSet(&[_]Feature{
+ .call_indirect_overlong,
+ }),
};
result[@intFromEnum(Feature.relaxed_simd)] = .{
.llvm_name = "relaxed-simd",
@@ -108,6 +125,11 @@ pub const all_features = blk: {
.description = "Enable tail call instructions",
.dependencies = featureSet(&[_]Feature{}),
};
+ result[@intFromEnum(Feature.wide_arithmetic)] = .{
+ .llvm_name = "wide-arithmetic",
+ .description = "Enable wide-arithmetic instructions",
+ .dependencies = featureSet(&[_]Feature{}),
+ };
const ti = @typeInfo(Feature);
for (&result, 0..) |*elem, i| {
elem.index = i;
@@ -125,7 +147,7 @@ pub const cpu = struct {
.bulk_memory,
.exception_handling,
.extended_const,
- .half_precision,
+ .fp16,
.multimemory,
.multivalue,
.mutable_globals,
@@ -141,17 +163,20 @@ pub const cpu = struct {
.name = "generic",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
+ .bulk_memory,
.multivalue,
.mutable_globals,
+ .nontrapping_fptoint,
.reference_types,
.sign_ext,
}),
};
pub const lime1: CpuModel = .{
.name = "lime1",
- .llvm_name = null,
+ .llvm_name = "lime1",
.features = featureSet(&[_]Feature{
- .bulk_memory,
+ .bulk_memory_opt,
+ .call_indirect_overlong,
.extended_const,
.multivalue,
.mutable_globals,