Skip to content

Commit e0a955a

Browse files
committed
x86_64: use ZON for encodings
1 parent de8a121 commit e0a955a

File tree

4 files changed

+2620
-2629
lines changed

4 files changed

+2620
-2629
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ set(ZIG_STAGE2_SOURCES
559559
src/arch/x86_64/abi.zig
560560
src/arch/x86_64/bits.zig
561561
src/arch/x86_64/encoder.zig
562-
src/arch/x86_64/encodings.zig
562+
src/arch/x86_64/encodings.zon
563563
src/clang.zig
564564
src/clang_options.zig
565565
src/clang_options_data.zig

src/arch/x86_64/Encoding.zig

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,11 +1015,14 @@ fn estimateInstructionLength(prefix: Prefix, encoding: Encoding, ops: []const Op
10151015

10161016
const mnemonic_to_encodings_map = init: {
10171017
@setEvalBranchQuota(5_800);
1018+
const ModrmExt = u3;
1019+
const Entry = struct { Mnemonic, OpEn, []const Op, []const u8, ModrmExt, Mode, Feature };
1020+
const encodings: []const Entry = @import("encodings.zon");
1021+
10181022
const mnemonic_count = @typeInfo(Mnemonic).@"enum".fields.len;
10191023
var mnemonic_map: [mnemonic_count][]Data = @splat(&.{});
1020-
const encodings = @import("encodings.zig");
1021-
for (encodings.table) |entry| mnemonic_map[@intFromEnum(entry[0])].len += 1;
1022-
var data_storage: [encodings.table.len]Data = undefined;
1024+
for (encodings) |entry| mnemonic_map[@intFromEnum(entry[0])].len += 1;
1025+
var data_storage: [encodings.len]Data = undefined;
10231026
var storage_i: usize = 0;
10241027
for (&mnemonic_map) |*value| {
10251028
value.ptr = data_storage[storage_i..].ptr;
@@ -1028,7 +1031,7 @@ const mnemonic_to_encodings_map = init: {
10281031
var mnemonic_i: [mnemonic_count]usize = @splat(0);
10291032
const ops_len = @typeInfo(std.meta.FieldType(Data, .ops)).array.len;
10301033
const opc_len = @typeInfo(std.meta.FieldType(Data, .opc)).array.len;
1031-
for (encodings.table) |entry| {
1034+
for (encodings) |entry| {
10321035
const i = &mnemonic_i[@intFromEnum(entry[0])];
10331036
mnemonic_map[@intFromEnum(entry[0])][i.*] = .{
10341037
.op_en = entry[1],

0 commit comments

Comments
 (0)