Files
zig/lib/std/Target/microblaze.zig

302 lines
8.5 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 {
barrel,
div,
fpu,
fpu2,
msr,
mul,
mul64,
pcmp,
pipe3,
pipe8,
reorder,
v10_0,
v7_20,
v8_10,
v8_30,
};
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.barrel)] = .{
.llvm_name = null,
.description = "Enable barrel shift instructions (C_USE_BARREL)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.div)] = .{
.llvm_name = null,
.description = "Enable hardware divide instructions (C_USE_DIV)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.fpu)] = .{
.llvm_name = null,
.description = "Enable single-precision floating point instructions (C_USE_FPU >= 1)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.fpu2)] = .{
.llvm_name = null,
.description = "Enable floating point conversion and square root instructions (C_USE_FPU = 2)",
.dependencies = featureSet(&[_]Feature{
.fpu,
}),
};
result[@backingInt(Feature.msr)] = .{
.llvm_name = null,
.description = "Enable msrset and msrclr instructions (C_USE_MSR_INSTR)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.mul)] = .{
.llvm_name = null,
.description = "Enable 32-bit multiply instructions (C_USE_HW_MUL >= 1)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.mul64)] = .{
.llvm_name = null,
.description = "Enable multiply high instructions (C_USE_HW_MUL = 2)",
.dependencies = featureSet(&[_]Feature{
.mul,
}),
};
result[@backingInt(Feature.pcmp)] = .{
.llvm_name = null,
.description = "Enable pattern compare instructions, and clz with v8.10 (C_USE_PCMP_INSTR)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.pipe3)] = .{
.llvm_name = null,
.description = "Tune for the 3-stage pipeline (C_AREA_OPTIMIZED = 1)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.pipe8)] = .{
.llvm_name = null,
.description = "Tune for the 8-stage pipeline (C_AREA_OPTIMIZED = 2)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.reorder)] = .{
.llvm_name = null,
.description = "Enable byte-reversed load/store instructions, and swapb and swaph with v8.30 (C_USE_REORDER_INSTR)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.v10_0)] = .{
.llvm_name = null,
.description = "Enable MicroBlaze v10.0 instructions (bsefi and bsifi with barrel)",
.dependencies = featureSet(&[_]Feature{
.v8_30,
}),
};
result[@backingInt(Feature.v7_20)] = .{
.llvm_name = null,
.description = "Enable MicroBlaze v7.20 instructions (lwx, swx)",
.dependencies = featureSet(&[_]Feature{}),
};
result[@backingInt(Feature.v8_10)] = .{
.llvm_name = null,
.description = "Enable MicroBlaze v8.10 instructions (mbar)",
.dependencies = featureSet(&[_]Feature{
.v7_20,
}),
};
result[@backingInt(Feature.v8_30)] = .{
.llvm_name = null,
.description = "Enable MicroBlaze v8.30 instructions (swapb and swaph with reorder)",
.dependencies = featureSet(&[_]Feature{
.v8_10,
}),
};
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 v10_0: CpuModel = .{
.name = "v10_0",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v10_0,
}),
};
pub const v11_0: CpuModel = .{
.name = "v11_0",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v10_0,
}),
};
pub const v2_00: CpuModel = .{
.name = "v2_00",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.pipe3,
}),
};
pub const v2_10: CpuModel = .{
.name = "v2_10",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.pipe3,
}),
};
pub const v3_00: CpuModel = .{
.name = "v3_00",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.pipe3,
}),
};
pub const v4_00: CpuModel = .{
.name = "v4_00",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.pipe3,
}),
};
pub const v5_00: CpuModel = .{
.name = "v5_00",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.msr,
.pcmp,
}),
};
pub const v6_00: CpuModel = .{
.name = "v6_00",
.llvm_name = null,
.features = featureSet(&[_]Feature{}),
};
pub const v7_00: CpuModel = .{
.name = "v7_00",
.llvm_name = null,
.features = featureSet(&[_]Feature{}),
};
pub const v7_10: CpuModel = .{
.name = "v7_10",
.llvm_name = null,
.features = featureSet(&[_]Feature{}),
};
pub const v7_20: CpuModel = .{
.name = "v7_20",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v7_20,
}),
};
pub const v7_30: CpuModel = .{
.name = "v7_30",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v7_20,
}),
};
pub const v8_00: CpuModel = .{
.name = "v8_00",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.reorder,
.v7_20,
}),
};
pub const v8_10: CpuModel = .{
.name = "v8_10",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.reorder,
.v8_10,
}),
};
pub const v8_20: CpuModel = .{
.name = "v8_20",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.reorder,
.v8_10,
}),
};
pub const v8_30: CpuModel = .{
.name = "v8_30",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
pub const v8_40: CpuModel = .{
.name = "v8_40",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
pub const v8_50: CpuModel = .{
.name = "v8_50",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
pub const v9_0: CpuModel = .{
.name = "v9_0",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
pub const v9_1: CpuModel = .{
.name = "v9_1",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
pub const v9_2: CpuModel = .{
.name = "v9_2",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
pub const v9_3: CpuModel = .{
.name = "v9_3",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
pub const v9_4: CpuModel = .{
.name = "v9_4",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
pub const v9_5: CpuModel = .{
.name = "v9_5",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
pub const v9_6: CpuModel = .{
.name = "v9_6",
.llvm_name = null,
.features = featureSet(&[_]Feature{
.v8_30,
}),
};
};