mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-10-29 03:06:10 +08:00
237 lines
6.1 KiB
Zig
237 lines
6.1 KiB
Zig
//! This file is auto-generated by tools/update_cpu_features.zig.
|
|
|
|
const std = @import("../std.zig");
|
|
const CpuFeature = std.Target.Cpu.Feature;
|
|
const CpuModel = std.Target.Cpu.Model;
|
|
|
|
pub const Feature = enum {
|
|
cas,
|
|
dsp,
|
|
dynshift,
|
|
fpu,
|
|
fsca,
|
|
fsrra,
|
|
mmu,
|
|
sh2,
|
|
sh2a,
|
|
sh3,
|
|
sh4,
|
|
sh4a,
|
|
};
|
|
|
|
pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
|
|
pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
|
|
pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
|
|
pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
|
|
|
|
pub const all_features = blk: {
|
|
const len = @typeInfo(Feature).@"enum".field_names.len;
|
|
std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
|
|
var result: [len]CpuFeature = undefined;
|
|
result[@backingInt(Feature.cas)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable cas.l instruction",
|
|
.dependencies = featureSet(&[_]Feature{}),
|
|
};
|
|
result[@backingInt(Feature.dsp)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable DSP extension",
|
|
.dependencies = featureSet(&[_]Feature{}),
|
|
};
|
|
result[@backingInt(Feature.dynshift)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable dynamic shift instructions",
|
|
.dependencies = featureSet(&[_]Feature{}),
|
|
};
|
|
result[@backingInt(Feature.fpu)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable floating point unit",
|
|
.dependencies = featureSet(&[_]Feature{}),
|
|
};
|
|
result[@backingInt(Feature.fsca)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable fsca instruction",
|
|
.dependencies = featureSet(&[_]Feature{
|
|
.fpu,
|
|
}),
|
|
};
|
|
result[@backingInt(Feature.fsrra)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable fsrra instruction",
|
|
.dependencies = featureSet(&[_]Feature{
|
|
.fpu,
|
|
}),
|
|
};
|
|
result[@backingInt(Feature.mmu)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable memory management unit",
|
|
.dependencies = featureSet(&[_]Feature{}),
|
|
};
|
|
result[@backingInt(Feature.sh2)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable SH-2 instructions",
|
|
.dependencies = featureSet(&[_]Feature{}),
|
|
};
|
|
result[@backingInt(Feature.sh2a)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable SH-2A instructions",
|
|
.dependencies = featureSet(&[_]Feature{
|
|
.dynshift,
|
|
.sh2,
|
|
}),
|
|
};
|
|
result[@backingInt(Feature.sh3)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable SH-3 instructions",
|
|
.dependencies = featureSet(&[_]Feature{
|
|
.dynshift,
|
|
.sh2,
|
|
}),
|
|
};
|
|
result[@backingInt(Feature.sh4)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable SH-4 instructions",
|
|
.dependencies = featureSet(&[_]Feature{
|
|
.sh3,
|
|
}),
|
|
};
|
|
result[@backingInt(Feature.sh4a)] = .{
|
|
.llvm_name = null,
|
|
.description = "Enable SH-4A instructions",
|
|
.dependencies = featureSet(&[_]Feature{
|
|
.sh4,
|
|
}),
|
|
};
|
|
const ti = @typeInfo(Feature);
|
|
for (&result, 0..) |*elem, i| {
|
|
elem.index = i;
|
|
elem.name = ti.@"enum".field_names[i];
|
|
}
|
|
break :blk result;
|
|
};
|
|
|
|
pub const cpu = struct {
|
|
pub const j2: CpuModel = .{
|
|
.name = "j2",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.cas,
|
|
.dynshift,
|
|
.sh2,
|
|
}),
|
|
};
|
|
pub const sh1: CpuModel = .{
|
|
.name = "sh1",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{}),
|
|
};
|
|
pub const sh2: CpuModel = .{
|
|
.name = "sh2",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.sh2,
|
|
}),
|
|
};
|
|
pub const sh2_dsp: CpuModel = .{
|
|
.name = "sh2_dsp",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.dsp,
|
|
.sh2,
|
|
}),
|
|
};
|
|
pub const sh2a: CpuModel = .{
|
|
.name = "sh2a",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.fpu,
|
|
.sh2a,
|
|
}),
|
|
};
|
|
pub const sh2a_nofpu: CpuModel = .{
|
|
.name = "sh2a_nofpu",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.sh2a,
|
|
}),
|
|
};
|
|
pub const sh2e: CpuModel = .{
|
|
.name = "sh2e",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.fpu,
|
|
.sh2,
|
|
}),
|
|
};
|
|
pub const sh3: CpuModel = .{
|
|
.name = "sh3",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.mmu,
|
|
.sh3,
|
|
}),
|
|
};
|
|
pub const sh3_dsp: CpuModel = .{
|
|
.name = "sh3_dsp",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.dsp,
|
|
.mmu,
|
|
.sh3,
|
|
}),
|
|
};
|
|
pub const sh3e: CpuModel = .{
|
|
.name = "sh3e",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.fpu,
|
|
.mmu,
|
|
.sh3,
|
|
}),
|
|
};
|
|
pub const sh4: CpuModel = .{
|
|
.name = "sh4",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.fpu,
|
|
.mmu,
|
|
.sh4,
|
|
}),
|
|
};
|
|
pub const sh4_nofpu: CpuModel = .{
|
|
.name = "sh4_nofpu",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.mmu,
|
|
.sh4,
|
|
}),
|
|
};
|
|
pub const sh4a: CpuModel = .{
|
|
.name = "sh4a",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.fsca,
|
|
.fsrra,
|
|
.mmu,
|
|
.sh4a,
|
|
}),
|
|
};
|
|
pub const sh4a_nofpu: CpuModel = .{
|
|
.name = "sh4a_nofpu",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.mmu,
|
|
.sh4a,
|
|
}),
|
|
};
|
|
pub const sh4al_dsp: CpuModel = .{
|
|
.name = "sh4al_dsp",
|
|
.llvm_name = null,
|
|
.features = featureSet(&[_]Feature{
|
|
.dsp,
|
|
.mmu,
|
|
.sh4a,
|
|
}),
|
|
};
|
|
};
|