authorgravatar for 81774659+gracefuu@users.noreply.github.comgracefu <81774659+gracefuu@users.noreply.github.com> 2021-04-11 18:46:05+08:00
committergravatar for 81774659+gracefuu@users.noreply.github.comgracefu <81774659+gracefuu@users.noreply.github.com> 2021-04-16 15:21:17+08:00
log62e755623fb02257ac5d8fe85be01f5056469cb5
treee62dbc34fe0edc58c94d17bf8ca4d3d660d273fe
parentb004c3da159645cf4a3387f808ab3e8a6277ba2f
signaturelock-open Commit is signed but in an unrecognized format.

stage2 x86_64: bugfix abi_size == 64 should be abi_size == 8


1 files changed, 18 insertions(+), 18 deletions(-)

src/codegen.zig+18-18
...@@ -1691,10 +1691,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1691,10 +1691,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1691 .register => |src_reg| {1691 .register => |src_reg| {
1692 // for register, register use mr + 11692 // for register, register use mr + 1
1693 // addressing mode: *r/m16/32/64*, r16/32/641693 // addressing mode: *r/m16/32/64*, r16/32/64
1694 const operand_size = dst_ty.abiSize(self.target.*);1694 const abi_size = dst_ty.abiSize(self.target.*);
1695 const encoder = try X8664Encoder.init(self.code, 3);1695 const encoder = try X8664Encoder.init(self.code, 3);
1696 encoder.rex(.{1696 encoder.rex(.{
1697 .w = operand_size == 64,1697 .w = abi_size == 8,
1698 .r = src_reg.isExtended(),1698 .r = src_reg.isExtended(),
1699 .b = dst_reg.isExtended(),1699 .b = dst_reg.isExtended(),
1700 });1700 });
...@@ -1710,10 +1710,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1710,10 +1710,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1710 // opx = 83: r/m16/32/64, imm81710 // opx = 83: r/m16/32/64, imm8
1711 const imm32 = @intCast(i32, imm); // This case must be handled before calling genX8664BinMathCode.1711 const imm32 = @intCast(i32, imm); // This case must be handled before calling genX8664BinMathCode.
1712 if (imm32 <= math.maxInt(i8)) {1712 if (imm32 <= math.maxInt(i8)) {
1713 const operand_size = dst_ty.abiSize(self.target.*);1713 const abi_size = dst_ty.abiSize(self.target.*);
1714 const encoder = try X8664Encoder.init(self.code, 4);1714 const encoder = try X8664Encoder.init(self.code, 4);
1715 encoder.rex(.{1715 encoder.rex(.{
1716 .w = operand_size == 64,1716 .w = abi_size == 8,
1717 .b = dst_reg.isExtended(),1717 .b = dst_reg.isExtended(),
1718 });1718 });
1719 encoder.opcode_1byte(0x83);1719 encoder.opcode_1byte(0x83);
...@@ -1723,10 +1723,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1723,10 +1723,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1723 );1723 );
1724 encoder.imm8(@intCast(i8, imm32));1724 encoder.imm8(@intCast(i8, imm32));
1725 } else {1725 } else {
1726 const operand_size = dst_ty.abiSize(self.target.*);1726 const abi_size = dst_ty.abiSize(self.target.*);
1727 const encoder = try X8664Encoder.init(self.code, 7);1727 const encoder = try X8664Encoder.init(self.code, 7);
1728 encoder.rex(.{1728 encoder.rex(.{
1729 .w = operand_size == 64,1729 .w = abi_size == 8,
1730 .b = dst_reg.isExtended(),1730 .b = dst_reg.isExtended(),
1731 });1731 });
1732 encoder.opcode_1byte(0x81);1732 encoder.opcode_1byte(0x81);
...@@ -1750,7 +1750,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1750,7 +1750,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1750 }1750 }
1751 const encoder = try X8664Encoder.init(self.code, 7);1751 const encoder = try X8664Encoder.init(self.code, 7);
1752 encoder.rex(.{1752 encoder.rex(.{
1753 .w = abi_size == 64,1753 .w = abi_size == 8,
1754 .r = dst_reg.isExtended(),1754 .r = dst_reg.isExtended(),
1755 });1755 });
1756 encoder.opcode_1byte(mr + 3);1756 encoder.opcode_1byte(mr + 3);
...@@ -1837,7 +1837,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1837,7 +1837,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1837 const abi_size = dst_ty.abiSize(self.target.*);1837 const abi_size = dst_ty.abiSize(self.target.*);
1838 const encoder = try X8664Encoder.init(self.code, 4);1838 const encoder = try X8664Encoder.init(self.code, 4);
1839 encoder.rex(.{1839 encoder.rex(.{
1840 .w = abi_size == 64,1840 .w = abi_size == 8,
1841 .r = dst_reg.isExtended(),1841 .r = dst_reg.isExtended(),
1842 .b = src_reg.isExtended(),1842 .b = src_reg.isExtended(),
1843 });1843 });
...@@ -1866,7 +1866,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1866,7 +1866,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1866 const abi_size = dst_ty.abiSize(self.target.*);1866 const abi_size = dst_ty.abiSize(self.target.*);
1867 const encoder = try X8664Encoder.init(self.code, 4);1867 const encoder = try X8664Encoder.init(self.code, 4);
1868 encoder.rex(.{1868 encoder.rex(.{
1869 .w = abi_size == 64,1869 .w = abi_size == 8,
1870 .r = dst_reg.isExtended(),1870 .r = dst_reg.isExtended(),
1871 .b = dst_reg.isExtended(),1871 .b = dst_reg.isExtended(),
1872 });1872 });
...@@ -1880,7 +1880,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1880,7 +1880,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1880 const abi_size = dst_ty.abiSize(self.target.*);1880 const abi_size = dst_ty.abiSize(self.target.*);
1881 const encoder = try X8664Encoder.init(self.code, 7);1881 const encoder = try X8664Encoder.init(self.code, 7);
1882 encoder.rex(.{1882 encoder.rex(.{
1883 .w = abi_size == 64,1883 .w = abi_size == 8,
1884 .r = dst_reg.isExtended(),1884 .r = dst_reg.isExtended(),
1885 .b = dst_reg.isExtended(),1885 .b = dst_reg.isExtended(),
1886 });1886 });
...@@ -1923,7 +1923,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1923,7 +1923,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1923 const abi_size = dst_ty.abiSize(self.target.*);1923 const abi_size = dst_ty.abiSize(self.target.*);
1924 const encoder = try X8664Encoder.init(self.code, 4);1924 const encoder = try X8664Encoder.init(self.code, 4);
1925 encoder.rex(.{1925 encoder.rex(.{
1926 .w = abi_size == 64,1926 .w = abi_size == 8,
1927 .r = dst_reg.isExtended(),1927 .r = dst_reg.isExtended(),
1928 .b = src_reg.isExtended(),1928 .b = src_reg.isExtended(),
1929 });1929 });
...@@ -1965,7 +1965,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1965,7 +1965,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1965 const i_adj_off = -@intCast(i32, adj_off);1965 const i_adj_off = -@intCast(i32, adj_off);
1966 const encoder = try X8664Encoder.init(self.code, 7);1966 const encoder = try X8664Encoder.init(self.code, 7);
1967 encoder.rex(.{1967 encoder.rex(.{
1968 .w = abi_size == 64,1968 .w = abi_size == 8,
1969 .r = reg.isExtended(),1969 .r = reg.isExtended(),
1970 });1970 });
1971 encoder.opcode_1byte(opcode);1971 encoder.opcode_1byte(opcode);
...@@ -3850,7 +3850,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -3850,7 +3850,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
3850 const abi_size = ty.abiSize(self.target.*);3850 const abi_size = ty.abiSize(self.target.*);
3851 const encoder = try X8664Encoder.init(self.code, 3);3851 const encoder = try X8664Encoder.init(self.code, 3);
3852 encoder.rex(.{3852 encoder.rex(.{
3853 .w = abi_size == 64,3853 .w = abi_size == 8,
3854 .r = reg.isExtended(),3854 .r = reg.isExtended(),
3855 .b = src_reg.isExtended(),3855 .b = src_reg.isExtended(),
3856 });3856 });
...@@ -3869,7 +3869,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -3869,7 +3869,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
3869 // After we encode the instruction, we will know that the displacement bytes3869 // After we encode the instruction, we will know that the displacement bytes
3870 // for [<offset>] will be at self.code.items.len - 4.3870 // for [<offset>] will be at self.code.items.len - 4.
3871 encoder.rex(.{3871 encoder.rex(.{
3872 .w = abi_size == 64,3872 .w = abi_size == 8,
3873 .r = reg.isExtended(),3873 .r = reg.isExtended(),
3874 });3874 });
3875 encoder.opcode_1byte(0x8D);3875 encoder.opcode_1byte(0x8D);
...@@ -3891,7 +3891,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -3891,7 +3891,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
38913891
3892 // MOV reg, [reg]3892 // MOV reg, [reg]
3893 encoder.rex(.{3893 encoder.rex(.{
3894 .w = abi_size == 64,3894 .w = abi_size == 8,
3895 .r = reg.isExtended(),3895 .r = reg.isExtended(),
3896 .b = reg.isExtended(),3896 .b = reg.isExtended(),
3897 });3897 });
...@@ -3908,7 +3908,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -3908,7 +3908,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
3908 const abi_size = ty.abiSize(self.target.*);3908 const abi_size = ty.abiSize(self.target.*);
3909 const encoder = try X8664Encoder.init(self.code, 8);3909 const encoder = try X8664Encoder.init(self.code, 8);
3910 encoder.rex(.{3910 encoder.rex(.{
3911 .w = abi_size == 64,3911 .w = abi_size == 8,
3912 .r = reg.isExtended(),3912 .r = reg.isExtended(),
3913 });3913 });
3914 encoder.opcode_1byte(0x8B);3914 encoder.opcode_1byte(0x8B);
...@@ -3952,7 +3952,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -3952,7 +3952,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
3952 const abi_size = ty.abiSize(self.target.*);3952 const abi_size = ty.abiSize(self.target.*);
3953 const encoder = try X8664Encoder.init(self.code, 3);3953 const encoder = try X8664Encoder.init(self.code, 3);
3954 encoder.rex(.{3954 encoder.rex(.{
3955 .w = abi_size == 64,3955 .w = abi_size == 8,
3956 .r = reg.isExtended(),3956 .r = reg.isExtended(),
3957 .b = reg.isExtended(),3957 .b = reg.isExtended(),
3958 });3958 });
...@@ -3970,7 +3970,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -3970,7 +3970,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
3970 const ioff = -@intCast(i32, off);3970 const ioff = -@intCast(i32, off);
3971 const encoder = try X8664Encoder.init(self.code, 3);3971 const encoder = try X8664Encoder.init(self.code, 3);
3972 encoder.rex(.{3972 encoder.rex(.{
3973 .w = abi_size == 64,3973 .w = abi_size == 8,
3974 .r = reg.isExtended(),3974 .r = reg.isExtended(),
3975 });3975 });
3976 encoder.opcode_1byte(0x8B);3976 encoder.opcode_1byte(0x8B);