| ... | @@ -4692,11 +4692,17 @@ fn parseRegName(name: []const u8) ?Register { | ... | @@ -4692,11 +4692,17 @@ fn parseRegName(name: []const u8) ?Register { |
| 4692 | | 4692 | |
| 4693 | fn registerAlias(reg: Register, size_bytes: u32) Register { | 4693 | fn registerAlias(reg: Register, size_bytes: u32) Register { |
| 4694 | // For x86_64 we have to pick a smaller register alias depending on abi size. | 4694 | // For x86_64 we have to pick a smaller register alias depending on abi size. |
| 4695 | switch (size_bytes) { | 4695 | if (size_bytes == 0) { |
| 4696 | 1 => return reg.to8(), | 4696 | unreachable; // should be comptime known |
| 4697 | 2 => return reg.to16(), | 4697 | } else if (size_bytes <= 1) { |
| 4698 | 4 => return reg.to32(), | 4698 | return reg.to8(); |
| 4699 | 8 => return reg.to64(), | 4699 | } else if (size_bytes <= 2) { |
| 4700 | else => unreachable, | 4700 | return reg.to16(); |
| | 4701 | } else if (size_bytes <= 4) { |
| | 4702 | return reg.to32(); |
| | 4703 | } else if (size_bytes <= 8) { |
| | 4704 | return reg.to64(); |
| | 4705 | } else { |
| | 4706 | unreachable; // TODO handle floating-point registers |
| 4701 | } | 4707 | } |
| 4702 | } | 4708 | } |