authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-10-26 11:13:14-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-10-29 19:31:44-04:00
log09aa4add2a00454077b5421204acf5e96b6d51cf
tree1a4cd26d75b1aca9c16ba594cdb6cc557dd601a7
parent52a029e503f1c8180a5479871737f01a3b43d1b5

x86_64: add `lret` encoding

Closes #25608

3 files changed, 5 insertions(+), 3 deletions(-)

src/codegen/x86_64/Encoding.zig+1-1
...@@ -297,7 +297,7 @@ pub const Mnemonic = enum {...@@ -297,7 +297,7 @@ pub const Mnemonic = enum {
297 jnc, jne, jng, jnge, jnl, jnle, jno, jnp, jns, jnz, jo, jp, jpe, jpo, jrcxz, js, jz,297 jnc, jne, jng, jnge, jnl, jnle, jno, jnp, jns, jnz, jo, jp, jpe, jpo, jrcxz, js, jz,
298 lahf, lar, lea, leave, lfence, lgdt, lidt, lldt, lmsw, loop, loope, loopne,298 lahf, lar, lea, leave, lfence, lgdt, lidt, lldt, lmsw, loop, loope, loopne,
299 lods, lodsb, lodsd, lodsq, lodsw,299 lods, lodsb, lodsd, lodsq, lodsw,
300 lsl, ltr,300 lret, lsl, ltr,
301 mfence, mov, movbe,301 mfence, mov, movbe,
302 movs, movsb, movsd, movsq, movsw,302 movs, movsb, movsd, movsq, movsw,
303 movsx, movsxd, movzx, mul,303 movsx, movsxd, movzx, mul,
src/codegen/x86_64/Mir.zig+2-2
...@@ -1732,7 +1732,7 @@ pub const Inst = struct {...@@ -1732,7 +1732,7 @@ pub const Inst = struct {
1732 assert(@sizeOf(Data) == 8);1732 assert(@sizeOf(Data) == 8);
1733 }1733 }
1734 const Mnemonic = @import("Encoding.zig").Mnemonic;1734 const Mnemonic = @import("Encoding.zig").Mnemonic;
1735 if (@typeInfo(Mnemonic).@"enum".fields.len != 977 or1735 if (@typeInfo(Mnemonic).@"enum".fields.len != 978 or
1736 @typeInfo(Fixes).@"enum".fields.len != 231 or1736 @typeInfo(Fixes).@"enum".fields.len != 231 or
1737 @typeInfo(Tag).@"enum".fields.len != 251)1737 @typeInfo(Tag).@"enum".fields.len != 251)
1738 {1738 {
...@@ -1741,7 +1741,7 @@ pub const Inst = struct {...@@ -1741,7 +1741,7 @@ pub const Inst = struct {
1741 return @src();1741 return @src();
1742 }1742 }
1743 }).src();1743 }).src();
1744 @setEvalBranchQuota(1_750_000);1744 @setEvalBranchQuota(2_000_000);
1745 for (@typeInfo(Mnemonic).@"enum".fields) |mnemonic| {1745 for (@typeInfo(Mnemonic).@"enum".fields) |mnemonic| {
1746 if (mnemonic.name[0] == '.') continue;1746 if (mnemonic.name[0] == '.') continue;
1747 for (@typeInfo(Fixes).@"enum".fields) |fixes| {1747 for (@typeInfo(Fixes).@"enum".fields) |fixes| {
src/codegen/x86_64/encodings.zon+2
...@@ -459,6 +459,8 @@...@@ -459,6 +459,8 @@
459 .{ .loope, .d, .{ .rel8 }, .{ 0xe1 }, 0, .none, .none },459 .{ .loope, .d, .{ .rel8 }, .{ 0xe1 }, 0, .none, .none },
460 .{ .loopne, .d, .{ .rel8 }, .{ 0xe0 }, 0, .none, .none },460 .{ .loopne, .d, .{ .rel8 }, .{ 0xe0 }, 0, .none, .none },
461461
462 .{ .lret, .z, .{}, .{ 0xcb }, 0, .none, .none },
463
462 .{ .lsl, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x03 }, 0, .none, .none },464 .{ .lsl, .rm, .{ .r16, .rm16 }, .{ 0x0f, 0x03 }, 0, .none, .none },
463 .{ .lsl, .rm, .{ .r32, .r32_m16 }, .{ 0x0f, 0x03 }, 0, .none, .none },465 .{ .lsl, .rm, .{ .r32, .r32_m16 }, .{ 0x0f, 0x03 }, 0, .none, .none },
464 .{ .lsl, .rm, .{ .r64, .r32_m16 }, .{ 0x0f, 0x03 }, 0, .none, .none },466 .{ .lsl, .rm, .{ .r64, .r32_m16 }, .{ 0x0f, 0x03 }, 0, .none, .none },