hit a comptime limitation with computing dense sets
This commit is contained in:
@@ -59,417 +59,321 @@ pub usingnamespace Cpu.Feature.feature_set_fns(Feature);
|
||||
|
||||
pub const all_features = blk: {
|
||||
const len = @typeInfo(Feature).Enum.fields.len;
|
||||
std.debug.assert(len <= Cpu.Feature.Set.bit_count);
|
||||
std.debug.assert(len <= Cpu.Feature.Set.needed_bit_count);
|
||||
var result: [len]Cpu.Feature = undefined;
|
||||
result[@enumToInt(Feature.@"64bit")] = .{
|
||||
.index = @enumToInt(Feature.@"64bit"),
|
||||
.name = @tagName(Feature.@"64bit"),
|
||||
.llvm_name = "64bit",
|
||||
.description = "Enable 64-bit instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.@"64bitregs")] = .{
|
||||
.index = @enumToInt(Feature.@"64bitregs"),
|
||||
.name = @tagName(Feature.@"64bitregs"),
|
||||
.llvm_name = "64bitregs",
|
||||
.description = "Enable 64-bit registers usage for ppc32 [beta]",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.altivec)] = .{
|
||||
.index = @enumToInt(Feature.altivec),
|
||||
.name = @tagName(Feature.altivec),
|
||||
.llvm_name = "altivec",
|
||||
.description = "Enable Altivec instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.booke)] = .{
|
||||
.index = @enumToInt(Feature.booke),
|
||||
.name = @tagName(Feature.booke),
|
||||
.llvm_name = "booke",
|
||||
.description = "Enable Book E instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.icbt,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.bpermd)] = .{
|
||||
.index = @enumToInt(Feature.bpermd),
|
||||
.name = @tagName(Feature.bpermd),
|
||||
.llvm_name = "bpermd",
|
||||
.description = "Enable the bpermd instruction",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.cmpb)] = .{
|
||||
.index = @enumToInt(Feature.cmpb),
|
||||
.name = @tagName(Feature.cmpb),
|
||||
.llvm_name = "cmpb",
|
||||
.description = "Enable the cmpb instruction",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.crbits)] = .{
|
||||
.index = @enumToInt(Feature.crbits),
|
||||
.name = @tagName(Feature.crbits),
|
||||
.llvm_name = "crbits",
|
||||
.description = "Use condition-register bits individually",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.crypto)] = .{
|
||||
.index = @enumToInt(Feature.crypto),
|
||||
.name = @tagName(Feature.crypto),
|
||||
.llvm_name = "crypto",
|
||||
.description = "Enable POWER8 Crypto instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.power8_altivec,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.direct_move)] = .{
|
||||
.index = @enumToInt(Feature.direct_move),
|
||||
.name = @tagName(Feature.direct_move),
|
||||
.llvm_name = "direct-move",
|
||||
.description = "Enable Power8 direct move instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.vsx,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.e500)] = .{
|
||||
.index = @enumToInt(Feature.e500),
|
||||
.name = @tagName(Feature.e500),
|
||||
.llvm_name = "e500",
|
||||
.description = "Enable E500/E500mc instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.extdiv)] = .{
|
||||
.index = @enumToInt(Feature.extdiv),
|
||||
.name = @tagName(Feature.extdiv),
|
||||
.llvm_name = "extdiv",
|
||||
.description = "Enable extended divide instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.fcpsgn)] = .{
|
||||
.index = @enumToInt(Feature.fcpsgn),
|
||||
.name = @tagName(Feature.fcpsgn),
|
||||
.llvm_name = "fcpsgn",
|
||||
.description = "Enable the fcpsgn instruction",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.float128)] = .{
|
||||
.index = @enumToInt(Feature.float128),
|
||||
.name = @tagName(Feature.float128),
|
||||
.llvm_name = "float128",
|
||||
.description = "Enable the __float128 data type for IEEE-754R Binary128.",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.vsx,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.fpcvt)] = .{
|
||||
.index = @enumToInt(Feature.fpcvt),
|
||||
.name = @tagName(Feature.fpcvt),
|
||||
.llvm_name = "fpcvt",
|
||||
.description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.fprnd)] = .{
|
||||
.index = @enumToInt(Feature.fprnd),
|
||||
.name = @tagName(Feature.fprnd),
|
||||
.llvm_name = "fprnd",
|
||||
.description = "Enable the fri[mnpz] instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.fpu)] = .{
|
||||
.index = @enumToInt(Feature.fpu),
|
||||
.name = @tagName(Feature.fpu),
|
||||
.llvm_name = "fpu",
|
||||
.description = "Enable classic FPU instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.hard_float,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.fre)] = .{
|
||||
.index = @enumToInt(Feature.fre),
|
||||
.name = @tagName(Feature.fre),
|
||||
.llvm_name = "fre",
|
||||
.description = "Enable the fre instruction",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.fres)] = .{
|
||||
.index = @enumToInt(Feature.fres),
|
||||
.name = @tagName(Feature.fres),
|
||||
.llvm_name = "fres",
|
||||
.description = "Enable the fres instruction",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.frsqrte)] = .{
|
||||
.index = @enumToInt(Feature.frsqrte),
|
||||
.name = @tagName(Feature.frsqrte),
|
||||
.llvm_name = "frsqrte",
|
||||
.description = "Enable the frsqrte instruction",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.frsqrtes)] = .{
|
||||
.index = @enumToInt(Feature.frsqrtes),
|
||||
.name = @tagName(Feature.frsqrtes),
|
||||
.llvm_name = "frsqrtes",
|
||||
.description = "Enable the frsqrtes instruction",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.fsqrt)] = .{
|
||||
.index = @enumToInt(Feature.fsqrt),
|
||||
.name = @tagName(Feature.fsqrt),
|
||||
.llvm_name = "fsqrt",
|
||||
.description = "Enable the fsqrt instruction",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.hard_float)] = .{
|
||||
.index = @enumToInt(Feature.hard_float),
|
||||
.name = @tagName(Feature.hard_float),
|
||||
.llvm_name = "hard-float",
|
||||
.description = "Enable floating-point instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.htm)] = .{
|
||||
.index = @enumToInt(Feature.htm),
|
||||
.name = @tagName(Feature.htm),
|
||||
.llvm_name = "htm",
|
||||
.description = "Enable Hardware Transactional Memory instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.icbt)] = .{
|
||||
.index = @enumToInt(Feature.icbt),
|
||||
.name = @tagName(Feature.icbt),
|
||||
.llvm_name = "icbt",
|
||||
.description = "Enable icbt instruction",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.invariant_function_descriptors)] = .{
|
||||
.index = @enumToInt(Feature.invariant_function_descriptors),
|
||||
.name = @tagName(Feature.invariant_function_descriptors),
|
||||
.llvm_name = "invariant-function-descriptors",
|
||||
.description = "Assume function descriptors are invariant",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.isa_v30_instructions)] = .{
|
||||
.index = @enumToInt(Feature.isa_v30_instructions),
|
||||
.name = @tagName(Feature.isa_v30_instructions),
|
||||
.llvm_name = "isa-v30-instructions",
|
||||
.description = "Enable instructions added in ISA 3.0.",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.isel)] = .{
|
||||
.index = @enumToInt(Feature.isel),
|
||||
.name = @tagName(Feature.isel),
|
||||
.llvm_name = "isel",
|
||||
.description = "Enable the isel instruction",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.ldbrx)] = .{
|
||||
.index = @enumToInt(Feature.ldbrx),
|
||||
.name = @tagName(Feature.ldbrx),
|
||||
.llvm_name = "ldbrx",
|
||||
.description = "Enable the ldbrx instruction",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.lfiwax)] = .{
|
||||
.index = @enumToInt(Feature.lfiwax),
|
||||
.name = @tagName(Feature.lfiwax),
|
||||
.llvm_name = "lfiwax",
|
||||
.description = "Enable the lfiwax instruction",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.longcall)] = .{
|
||||
.index = @enumToInt(Feature.longcall),
|
||||
.name = @tagName(Feature.longcall),
|
||||
.llvm_name = "longcall",
|
||||
.description = "Always use indirect calls",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.mfocrf)] = .{
|
||||
.index = @enumToInt(Feature.mfocrf),
|
||||
.name = @tagName(Feature.mfocrf),
|
||||
.llvm_name = "mfocrf",
|
||||
.description = "Enable the MFOCRF instruction",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.msync)] = .{
|
||||
.index = @enumToInt(Feature.msync),
|
||||
.name = @tagName(Feature.msync),
|
||||
.llvm_name = "msync",
|
||||
.description = "Has only the msync instruction instead of sync",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.booke,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.partword_atomics)] = .{
|
||||
.index = @enumToInt(Feature.partword_atomics),
|
||||
.name = @tagName(Feature.partword_atomics),
|
||||
.llvm_name = "partword-atomics",
|
||||
.description = "Enable l[bh]arx and st[bh]cx.",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.popcntd)] = .{
|
||||
.index = @enumToInt(Feature.popcntd),
|
||||
.name = @tagName(Feature.popcntd),
|
||||
.llvm_name = "popcntd",
|
||||
.description = "Enable the popcnt[dw] instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.power8_altivec)] = .{
|
||||
.index = @enumToInt(Feature.power8_altivec),
|
||||
.name = @tagName(Feature.power8_altivec),
|
||||
.llvm_name = "power8-altivec",
|
||||
.description = "Enable POWER8 Altivec instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.altivec,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.power8_vector)] = .{
|
||||
.index = @enumToInt(Feature.power8_vector),
|
||||
.name = @tagName(Feature.power8_vector),
|
||||
.llvm_name = "power8-vector",
|
||||
.description = "Enable POWER8 vector instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.power8_altivec,
|
||||
.vsx,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.power9_altivec)] = .{
|
||||
.index = @enumToInt(Feature.power9_altivec),
|
||||
.name = @tagName(Feature.power9_altivec),
|
||||
.llvm_name = "power9-altivec",
|
||||
.description = "Enable POWER9 Altivec instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.isa_v30_instructions,
|
||||
.power8_altivec,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.power9_vector)] = .{
|
||||
.index = @enumToInt(Feature.power9_vector),
|
||||
.name = @tagName(Feature.power9_vector),
|
||||
.llvm_name = "power9-vector",
|
||||
.description = "Enable POWER9 vector instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.isa_v30_instructions,
|
||||
.power8_vector,
|
||||
.power9_altivec,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.ppc_postra_sched)] = .{
|
||||
.index = @enumToInt(Feature.ppc_postra_sched),
|
||||
.name = @tagName(Feature.ppc_postra_sched),
|
||||
.llvm_name = "ppc-postra-sched",
|
||||
.description = "Use PowerPC post-RA scheduling strategy",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.ppc_prera_sched)] = .{
|
||||
.index = @enumToInt(Feature.ppc_prera_sched),
|
||||
.name = @tagName(Feature.ppc_prera_sched),
|
||||
.llvm_name = "ppc-prera-sched",
|
||||
.description = "Use PowerPC pre-RA scheduling strategy",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.ppc4xx)] = .{
|
||||
.index = @enumToInt(Feature.ppc4xx),
|
||||
.name = @tagName(Feature.ppc4xx),
|
||||
.llvm_name = "ppc4xx",
|
||||
.description = "Enable PPC 4xx instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.ppc6xx)] = .{
|
||||
.index = @enumToInt(Feature.ppc6xx),
|
||||
.name = @tagName(Feature.ppc6xx),
|
||||
.llvm_name = "ppc6xx",
|
||||
.description = "Enable PPC 6xx instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.qpx)] = .{
|
||||
.index = @enumToInt(Feature.qpx),
|
||||
.name = @tagName(Feature.qpx),
|
||||
.llvm_name = "qpx",
|
||||
.description = "Enable QPX instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.recipprec)] = .{
|
||||
.index = @enumToInt(Feature.recipprec),
|
||||
.name = @tagName(Feature.recipprec),
|
||||
.llvm_name = "recipprec",
|
||||
.description = "Assume higher precision reciprocal estimates",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.secure_plt)] = .{
|
||||
.index = @enumToInt(Feature.secure_plt),
|
||||
.name = @tagName(Feature.secure_plt),
|
||||
.llvm_name = "secure-plt",
|
||||
.description = "Enable secure plt mode",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.slow_popcntd)] = .{
|
||||
.index = @enumToInt(Feature.slow_popcntd),
|
||||
.name = @tagName(Feature.slow_popcntd),
|
||||
.llvm_name = "slow-popcntd",
|
||||
.description = "Has slow popcnt[dw] instructions",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.spe)] = .{
|
||||
.index = @enumToInt(Feature.spe),
|
||||
.name = @tagName(Feature.spe),
|
||||
.llvm_name = "spe",
|
||||
.description = "Enable SPE instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.hard_float,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.stfiwx)] = .{
|
||||
.index = @enumToInt(Feature.stfiwx),
|
||||
.name = @tagName(Feature.stfiwx),
|
||||
.llvm_name = "stfiwx",
|
||||
.description = "Enable the stfiwx instruction",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
result[@enumToInt(Feature.two_const_nr)] = .{
|
||||
.index = @enumToInt(Feature.two_const_nr),
|
||||
.name = @tagName(Feature.two_const_nr),
|
||||
.llvm_name = "two-const-nr",
|
||||
.description = "Requires two constant Newton-Raphson computation",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.vectors_use_two_units)] = .{
|
||||
.index = @enumToInt(Feature.vectors_use_two_units),
|
||||
.name = @tagName(Feature.vectors_use_two_units),
|
||||
.llvm_name = "vectors-use-two-units",
|
||||
.description = "Vectors use two units",
|
||||
.dependencies = featureSet(&[_]Feature{}),
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{}),
|
||||
};
|
||||
result[@enumToInt(Feature.vsx)] = .{
|
||||
.index = @enumToInt(Feature.vsx),
|
||||
.name = @tagName(Feature.vsx),
|
||||
.llvm_name = "vsx",
|
||||
.description = "Enable VSX instructions",
|
||||
.dependencies = featureSet(&[_]Feature{
|
||||
.dependencies = sparseFeatureSet(&[_]Feature{
|
||||
.altivec,
|
||||
}),
|
||||
};
|
||||
const ti = @typeInfo(Feature);
|
||||
for (result) |*elem, i| {
|
||||
elem.index = i;
|
||||
elem.name = ti.Enum.fields[i].name;
|
||||
elem.dependencies.initAsDependencies(i, &result);
|
||||
}
|
||||
break :blk result;
|
||||
};
|
||||
|
||||
@@ -477,7 +381,7 @@ pub const cpu = struct {
|
||||
pub const @"440" = Cpu{
|
||||
.name = "440",
|
||||
.llvm_name = "440",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.booke,
|
||||
.fres,
|
||||
.frsqrte,
|
||||
@@ -489,7 +393,7 @@ pub const cpu = struct {
|
||||
pub const @"450" = Cpu{
|
||||
.name = "450",
|
||||
.llvm_name = "450",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.booke,
|
||||
.fres,
|
||||
.frsqrte,
|
||||
@@ -501,21 +405,21 @@ pub const cpu = struct {
|
||||
pub const @"601" = Cpu{
|
||||
.name = "601",
|
||||
.llvm_name = "601",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
pub const @"602" = Cpu{
|
||||
.name = "602",
|
||||
.llvm_name = "602",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fpu,
|
||||
}),
|
||||
};
|
||||
pub const @"603" = Cpu{
|
||||
.name = "603",
|
||||
.llvm_name = "603",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fres,
|
||||
.frsqrte,
|
||||
}),
|
||||
@@ -523,7 +427,7 @@ pub const cpu = struct {
|
||||
pub const @"603e" = Cpu{
|
||||
.name = "603e",
|
||||
.llvm_name = "603e",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fres,
|
||||
.frsqrte,
|
||||
}),
|
||||
@@ -531,7 +435,7 @@ pub const cpu = struct {
|
||||
pub const @"603ev" = Cpu{
|
||||
.name = "603ev",
|
||||
.llvm_name = "603ev",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fres,
|
||||
.frsqrte,
|
||||
}),
|
||||
@@ -539,7 +443,7 @@ pub const cpu = struct {
|
||||
pub const @"604" = Cpu{
|
||||
.name = "604",
|
||||
.llvm_name = "604",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fres,
|
||||
.frsqrte,
|
||||
}),
|
||||
@@ -547,7 +451,7 @@ pub const cpu = struct {
|
||||
pub const @"604e" = Cpu{
|
||||
.name = "604e",
|
||||
.llvm_name = "604e",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fres,
|
||||
.frsqrte,
|
||||
}),
|
||||
@@ -555,7 +459,7 @@ pub const cpu = struct {
|
||||
pub const @"620" = Cpu{
|
||||
.name = "620",
|
||||
.llvm_name = "620",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fres,
|
||||
.frsqrte,
|
||||
}),
|
||||
@@ -563,7 +467,7 @@ pub const cpu = struct {
|
||||
pub const @"7400" = Cpu{
|
||||
.name = "7400",
|
||||
.llvm_name = "7400",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.altivec,
|
||||
.fres,
|
||||
.frsqrte,
|
||||
@@ -572,7 +476,7 @@ pub const cpu = struct {
|
||||
pub const @"7450" = Cpu{
|
||||
.name = "7450",
|
||||
.llvm_name = "7450",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.altivec,
|
||||
.fres,
|
||||
.frsqrte,
|
||||
@@ -581,7 +485,7 @@ pub const cpu = struct {
|
||||
pub const @"750" = Cpu{
|
||||
.name = "750",
|
||||
.llvm_name = "750",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fres,
|
||||
.frsqrte,
|
||||
}),
|
||||
@@ -589,7 +493,7 @@ pub const cpu = struct {
|
||||
pub const @"970" = Cpu{
|
||||
.name = "970",
|
||||
.llvm_name = "970",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.fres,
|
||||
@@ -602,7 +506,7 @@ pub const cpu = struct {
|
||||
pub const a2 = Cpu{
|
||||
.name = "a2",
|
||||
.llvm_name = "a2",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.booke,
|
||||
.cmpb,
|
||||
@@ -627,7 +531,7 @@ pub const cpu = struct {
|
||||
pub const a2q = Cpu{
|
||||
.name = "a2q",
|
||||
.llvm_name = "a2q",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.booke,
|
||||
.cmpb,
|
||||
@@ -653,7 +557,7 @@ pub const cpu = struct {
|
||||
pub const e500 = Cpu{
|
||||
.name = "e500",
|
||||
.llvm_name = "e500",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.booke,
|
||||
.icbt,
|
||||
.isel,
|
||||
@@ -662,7 +566,7 @@ pub const cpu = struct {
|
||||
pub const e500mc = Cpu{
|
||||
.name = "e500mc",
|
||||
.llvm_name = "e500mc",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.booke,
|
||||
.icbt,
|
||||
.isel,
|
||||
@@ -672,7 +576,7 @@ pub const cpu = struct {
|
||||
pub const e5500 = Cpu{
|
||||
.name = "e5500",
|
||||
.llvm_name = "e5500",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.booke,
|
||||
.icbt,
|
||||
@@ -684,7 +588,7 @@ pub const cpu = struct {
|
||||
pub const g3 = Cpu{
|
||||
.name = "g3",
|
||||
.llvm_name = "g3",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.fres,
|
||||
.frsqrte,
|
||||
}),
|
||||
@@ -692,7 +596,7 @@ pub const cpu = struct {
|
||||
pub const g4 = Cpu{
|
||||
.name = "g4",
|
||||
.llvm_name = "g4",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.altivec,
|
||||
.fres,
|
||||
.frsqrte,
|
||||
@@ -701,7 +605,7 @@ pub const cpu = struct {
|
||||
pub const @"g4+" = Cpu{
|
||||
.name = "g4+",
|
||||
.llvm_name = "g4+",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.altivec,
|
||||
.fres,
|
||||
.frsqrte,
|
||||
@@ -710,7 +614,7 @@ pub const cpu = struct {
|
||||
pub const g5 = Cpu{
|
||||
.name = "g5",
|
||||
.llvm_name = "g5",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.fres,
|
||||
@@ -723,28 +627,28 @@ pub const cpu = struct {
|
||||
pub const generic = Cpu{
|
||||
.name = "generic",
|
||||
.llvm_name = "generic",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.hard_float,
|
||||
}),
|
||||
};
|
||||
pub const ppc = Cpu{
|
||||
.name = "ppc",
|
||||
.llvm_name = "ppc",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.hard_float,
|
||||
}),
|
||||
};
|
||||
pub const ppc32 = Cpu{
|
||||
.name = "ppc32",
|
||||
.llvm_name = "ppc32",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.hard_float,
|
||||
}),
|
||||
};
|
||||
pub const ppc64 = Cpu{
|
||||
.name = "ppc64",
|
||||
.llvm_name = "ppc64",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.fres,
|
||||
@@ -757,7 +661,7 @@ pub const cpu = struct {
|
||||
pub const ppc64le = Cpu{
|
||||
.name = "ppc64le",
|
||||
.llvm_name = "ppc64le",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.bpermd,
|
||||
@@ -792,7 +696,7 @@ pub const cpu = struct {
|
||||
pub const pwr3 = Cpu{
|
||||
.name = "pwr3",
|
||||
.llvm_name = "pwr3",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.fres,
|
||||
@@ -804,7 +708,7 @@ pub const cpu = struct {
|
||||
pub const pwr4 = Cpu{
|
||||
.name = "pwr4",
|
||||
.llvm_name = "pwr4",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.fres,
|
||||
@@ -817,7 +721,7 @@ pub const cpu = struct {
|
||||
pub const pwr5 = Cpu{
|
||||
.name = "pwr5",
|
||||
.llvm_name = "pwr5",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.fre,
|
||||
@@ -832,7 +736,7 @@ pub const cpu = struct {
|
||||
pub const pwr5x = Cpu{
|
||||
.name = "pwr5x",
|
||||
.llvm_name = "pwr5x",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.fprnd,
|
||||
@@ -848,7 +752,7 @@ pub const cpu = struct {
|
||||
pub const pwr6 = Cpu{
|
||||
.name = "pwr6",
|
||||
.llvm_name = "pwr6",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.cmpb,
|
||||
@@ -868,7 +772,7 @@ pub const cpu = struct {
|
||||
pub const pwr6x = Cpu{
|
||||
.name = "pwr6x",
|
||||
.llvm_name = "pwr6x",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.cmpb,
|
||||
@@ -888,7 +792,7 @@ pub const cpu = struct {
|
||||
pub const pwr7 = Cpu{
|
||||
.name = "pwr7",
|
||||
.llvm_name = "pwr7",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.bpermd,
|
||||
@@ -916,7 +820,7 @@ pub const cpu = struct {
|
||||
pub const pwr8 = Cpu{
|
||||
.name = "pwr8",
|
||||
.llvm_name = "pwr8",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.bpermd,
|
||||
@@ -951,7 +855,7 @@ pub const cpu = struct {
|
||||
pub const pwr9 = Cpu{
|
||||
.name = "pwr9",
|
||||
.llvm_name = "pwr9",
|
||||
.features = featureSet(&[_]Feature{
|
||||
.features = featureSet(&all_features, &[_]Feature{
|
||||
.@"64bit",
|
||||
.altivec,
|
||||
.bpermd,
|
||||
|
||||
Reference in New Issue
Block a user