authorgravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2022-10-14 20:25:09+07:00
committergravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2022-12-10 21:11:14+07:00
log4ddedb388560afe2458fff6e1cca26ba6e70add2
tree7d192f6dc2ed2bc18ef5ef2994d7ced653e735c9
parentf020734347d03c2f1e2083272cc86a8062c27d23

stage2: sparc64: Implement get/setUnionTag


1 files changed, 14 insertions(+), 2 deletions(-)

src/arch/sparc64/CodeGen.zig+14-2
......@@ -601,8 +601,8 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
601601 .atomic_load => @panic("TODO try self.airAtomicLoad(inst)"),
602602 .memcpy => @panic("TODO try self.airMemcpy(inst)"),
603603 .memset => try self.airMemset(inst),
604 .set_union_tag => @panic("TODO try self.airSetUnionTag(inst)"),
605 .get_union_tag => @panic("TODO try self.airGetUnionTag(inst)"),
604 .set_union_tag => try self.airSetUnionTag(inst),
605 .get_union_tag => try self.airGetUnionTag(inst),
606606 .clz => try self.airClz(inst),
607607 .ctz => try self.airCtz(inst),
608608 .popcount => try self.airPopcount(inst),
......@@ -1556,6 +1556,12 @@ fn airFloatToInt(self: *Self, inst: Air.Inst.Index) !void {
15561556 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
15571557}
15581558
1559fn airGetUnionTag(self: *Self, inst: Air.Inst.Index) !void {
1560 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
1561 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement airGetUnionTag for {}", .{self.target.cpu.arch});
1562 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1563}
1564
15591565fn airIntCast(self: *Self, inst: Air.Inst.Index) !void {
15601566 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
15611567 if (self.liveness.isUnused(inst))
......@@ -2071,6 +2077,12 @@ fn airRetPtr(self: *Self, inst: Air.Inst.Index) !void {
20712077 return self.finishAir(inst, .{ .ptr_stack_offset = stack_offset }, .{ .none, .none, .none });
20722078}
20732079
2080fn airSetUnionTag(self: *Self, inst: Air.Inst.Index) !void {
2081 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
2082 _ = bin_op;
2083 return self.fail("TODO implement airSetUnionTag for {}", .{self.target.cpu.arch});
2084}
2085
20742086fn airShlSat(self: *Self, inst: Air.Inst.Index) !void {
20752087 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
20762088 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement shl_sat for {}", .{self.target.cpu.arch});