| ... | ... | @@ -6147,6 +6147,26 @@ pub fn body(isel: *Select, air_body: []const Air.Inst.Index) error{ OutOfMemory, |
| 6147 | 6147 | } |
| 6148 | 6148 | if (air.next()) |next_air_tag| continue :air_tag next_air_tag; |
| 6149 | 6149 | }, |
| 6150 | .ptr_slice_len_ptr => { |
| 6151 | if (isel.live_values.fetchRemove(air.inst_index)) |dst_vi| unused: { |
| 6152 | defer dst_vi.value.deref(isel); |
| 6153 | const ty_op = air.data(air.inst_index).ty_op; |
| 6154 | const dst_ra = try dst_vi.value.defReg(isel) orelse break :unused; |
| 6155 | const src_vi = try isel.use(ty_op.operand); |
| 6156 | const src_mat = try src_vi.matReg(isel); |
| 6157 | try isel.emit(.add(dst_ra.x(), src_mat.ra.x(), .{ .immediate = 8 })); |
| 6158 | try src_mat.finish(isel); |
| 6159 | } |
| 6160 | if (air.next()) |next_air_tag| continue :air_tag next_air_tag; |
| 6161 | }, |
| 6162 | .ptr_slice_ptr_ptr => { |
| 6163 | if (isel.live_values.fetchRemove(air.inst_index)) |dst_vi| { |
| 6164 | defer dst_vi.value.deref(isel); |
| 6165 | const ty_op = air.data(air.inst_index).ty_op; |
| 6166 | try dst_vi.value.move(isel, ty_op.operand); |
| 6167 | } |
| 6168 | if (air.next()) |next_air_tag| continue :air_tag next_air_tag; |
| 6169 | }, |
| 6150 | 6170 | .array_elem_val => { |
| 6151 | 6171 | if (isel.live_values.fetchRemove(air.inst_index)) |elem_vi| unused: { |
| 6152 | 6172 | defer elem_vi.value.deref(isel); |