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