authorgravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2022-06-15 23:34:36+07:00
committergravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2022-06-24 21:19:33+07:00
log18d61d691c0c28405a521422a590e6ea84d13c61
treec013cc226ac4506b9069c5b696b6c6ff7545e31e
parent672cd2f02f734a58c577a00f2bef831b6f73e8ff

stage2: sparc64: Implement airArrayElemVal


1 files changed, 7 insertions(+), 1 deletions(-)

src/arch/sparc64/CodeGen.zig+7-1
...@@ -669,7 +669,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -669,7 +669,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
669 .ptr_slice_len_ptr => @panic("TODO try self.airPtrSliceLenPtr(inst)"),669 .ptr_slice_len_ptr => @panic("TODO try self.airPtrSliceLenPtr(inst)"),
670 .ptr_slice_ptr_ptr => @panic("TODO try self.airPtrSlicePtrPtr(inst)"),670 .ptr_slice_ptr_ptr => @panic("TODO try self.airPtrSlicePtrPtr(inst)"),
671671
672 .array_elem_val => @panic("TODO try self.airArrayElemVal(inst)"),672 .array_elem_val => try self.airArrayElemVal(inst),
673 .slice_elem_val => try self.airSliceElemVal(inst),673 .slice_elem_val => try self.airSliceElemVal(inst),
674 .slice_elem_ptr => @panic("TODO try self.airSliceElemPtr(inst)"),674 .slice_elem_ptr => @panic("TODO try self.airSliceElemPtr(inst)"),
675 .ptr_elem_val => @panic("TODO try self.airPtrElemVal(inst)"),675 .ptr_elem_val => @panic("TODO try self.airPtrElemVal(inst)"),
...@@ -796,6 +796,12 @@ fn airAlloc(self: *Self, inst: Air.Inst.Index) !void {...@@ -796,6 +796,12 @@ fn airAlloc(self: *Self, inst: Air.Inst.Index) !void {
796 return self.finishAir(inst, .{ .ptr_stack_offset = stack_offset }, .{ .none, .none, .none });796 return self.finishAir(inst, .{ .ptr_stack_offset = stack_offset }, .{ .none, .none, .none });
797}797}
798798
799fn airArrayElemVal(self: *Self, inst: Air.Inst.Index) !void {
800 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
801 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement array_elem_val for {}", .{self.target.cpu.arch});
802 return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none });
803}
804
799fn airArrayToSlice(self: *Self, inst: Air.Inst.Index) !void {805fn airArrayToSlice(self: *Self, inst: Air.Inst.Index) !void {
800 const ty_op = self.air.instructions.items(.data)[inst].ty_op;806 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
801 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {807 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {