Files

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,
}),
};
};