| ... | ... | @@ -895,7 +895,7 @@ pub const Value = struct { |
| 895 | 895 | }; |
| 896 | 896 | const unused_bits = @max(new_unused_bits, old_unused_bits); |
| 897 | 897 | if (dst_ext == src_ext and bit_size <= old_bits) return; |
| 898 | | tracking_log.debug("{f}: {t} ({t}) -> {t} ({t}), {d}b -> {d}b", .{ vi, src_ext, new_ext, dst_ext, old_ext, old_bits, bit_size }); |
| 898 | tracking_log.debug("{f}: in {t} ({t}) -> out {t} ({t}), {d}b -> {d}b", .{ vi, src_ext, new_ext, dst_ext, old_ext, old_bits, bit_size }); |
| 899 | 899 | |
| 900 | 900 | // avoid setting extension to .garbage to reduce MIR for sequences like |
| 901 | 901 | // zero_ext -> garbage -> zero_ext |
| ... | ... | @@ -914,7 +914,10 @@ pub const Value = struct { |
| 914 | 914 | try vi_mat.finish(isel); |
| 915 | 915 | } else { |
| 916 | 916 | const unused_bytes = std.math.divCeil(u64, unused_bits, 8) catch unreachable; |
| 917 | | assert(unused_bytes <= isel.gprSize()); // TODO larger extending |
| 917 | if (unused_bytes > isel.gprSize()) { |
| 918 | try isel.failUnimplemented("unimplemented sign-extend width > GPR", .{}); |
| 919 | return; |
| 920 | } |
| 918 | 921 | const used_bytes = vi.size(isel) - unused_bytes; |
| 919 | 922 | |
| 920 | 923 | var hit = false; |