authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-11-09 08:08:13-05:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-11-11 01:47:27-05:00
log8647e4d3110dd269f6c377ecd8315a19e094758a
tree811e663e72965826d3cfe3e812db210b7dcbf4fe
parentcbfa87cbea0274e1e88d6a61bba82a2099e19fd6

aarch64: cleanup register lock


4 files changed, 10 insertions(+), 23 deletions(-)

lib/std/Io/Writer.zig-4
......@@ -2282,10 +2282,6 @@ pub const Discarding = struct {
22822282
22832283 pub fn sendFile(w: *Writer, file_reader: *File.Reader, limit: Limit) FileError!usize {
22842284 if (File.Handle == void) return error.Unimplemented;
2285 switch (builtin.zig_backend) {
2286 else => {},
2287 .stage2_aarch64 => return error.Unimplemented,
2288 }
22892285 const d: *Discarding = @alignCast(@fieldParentPtr("writer", w));
22902286 d.count += w.end;
22912287 w.end = 0;
lib/std/Progress.zig-1
......@@ -427,7 +427,6 @@ const noop_impl = builtin.single_threaded or switch (builtin.os.tag) {
427427 .wasi, .freestanding => true,
428428 else => false,
429429} or switch (builtin.zig_backend) {
430 .stage2_aarch64 => true,
431430 else => false,
432431};
433432
lib/std/fs/File.zig+1-4
......@@ -739,10 +739,7 @@ pub const Writer = struct {
739739 return .{
740740 .vtable = &.{
741741 .drain = drain,
742 .sendFile = switch (builtin.zig_backend) {
743 else => sendFile,
744 .stage2_aarch64 => Io.Writer.unimplementedSendFile,
745 },
742 .sendFile = sendFile,
746743 },
747744 .buffer = buffer,
748745 };
src/codegen/aarch64/Select.zig+9-14
......@@ -9570,11 +9570,15 @@ pub const Value = struct {
95709570 .zr
95719571 else
95729572 return false;
9573 if (part_ra != .zr) {
9574 const live_vi = isel.live_registers.getPtr(part_ra);
9575 assert(live_vi.* == .free);
9576 live_vi.* = .allocating;
9577 }
9573 const part_lock: RegLock = switch (part_ra) {
9574 else => isel.lockReg(part_ra),
9575 .zr => .empty,
9576 };
9577 defer switch (opts.expected_live_registers.get(part_ra)) {
9578 _ => {},
9579 .allocating => unreachable,
9580 .free => part_lock.unlock(isel),
9581 };
95789582 if (opts.wrap) |int_info| switch (int_info.bits) {
95799583 else => unreachable,
95809584 1...7, 9...15, 17...31 => |bits| try isel.emit(switch (int_info.signedness) {
......@@ -9605,15 +9609,6 @@ pub const Value = struct {
96059609 64 => {},
96069610 };
96079611 try isel.loadReg(part_ra, part_size, part_vi.signedness(isel), base_ra, opts.offset);
9608 if (part_ra != .zr) {
9609 const live_vi = isel.live_registers.getPtr(part_ra);
9610 assert(live_vi.* == .allocating);
9611 switch (opts.expected_live_registers.get(part_ra)) {
9612 _ => {},
9613 .allocating => unreachable,
9614 .free => live_vi.* = .free,
9615 }
9616 }
96179612 return true;
96189613 }
96199614 var used = false;