diff options
| author | Koakuma <koachan@protonmail.com> | 2022-10-14 20:25:09 +0700 |
|---|---|---|
| committer | Koakuma <koachan@protonmail.com> | 2022-12-10 21:11:14 +0700 |
| commit | 4ddedb388560afe2458fff6e1cca26ba6e70add2 (patch) | |
| tree | 7d192f6dc2ed2bc18ef5ef2994d7ced653e735c9 /src | |
| parent | f020734347d03c2f1e2083272cc86a8062c27d23 (diff) | |
| download | zig-4ddedb388560afe2458fff6e1cca26ba6e70add2.tar.gz zig-4ddedb388560afe2458fff6e1cca26ba6e70add2.zip | |
stage2: sparc64: Implement get/setUnionTag
Diffstat (limited to 'src')
| -rw-r--r-- | src/arch/sparc64/CodeGen.zig | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/arch/sparc64/CodeGen.zig b/src/arch/sparc64/CodeGen.zig index cb5df697f5..af6cb8b466 100644 --- a/src/arch/sparc64/CodeGen.zig +++ b/src/arch/sparc64/CodeGen.zig @@ -601,8 +601,8 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void { .atomic_load => @panic("TODO try self.airAtomicLoad(inst)"), .memcpy => @panic("TODO try self.airMemcpy(inst)"), .memset => try self.airMemset(inst), - .set_union_tag => @panic("TODO try self.airSetUnionTag(inst)"), - .get_union_tag => @panic("TODO try self.airGetUnionTag(inst)"), + .set_union_tag => try self.airSetUnionTag(inst), + .get_union_tag => try self.airGetUnionTag(inst), .clz => try self.airClz(inst), .ctz => try self.airCtz(inst), .popcount => try self.airPopcount(inst), @@ -1556,6 +1556,12 @@ fn airFloatToInt(self: *Self, inst: Air.Inst.Index) !void { return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); } +fn airGetUnionTag(self: *Self, inst: Air.Inst.Index) !void { + const ty_op = self.air.instructions.items(.data)[inst].ty_op; + const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement airGetUnionTag for {}", .{self.target.cpu.arch}); + return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); +} + fn airIntCast(self: *Self, inst: Air.Inst.Index) !void { const ty_op = self.air.instructions.items(.data)[inst].ty_op; if (self.liveness.isUnused(inst)) @@ -2071,6 +2077,12 @@ fn airRetPtr(self: *Self, inst: Air.Inst.Index) !void { return self.finishAir(inst, .{ .ptr_stack_offset = stack_offset }, .{ .none, .none, .none }); } +fn airSetUnionTag(self: *Self, inst: Air.Inst.Index) !void { + const bin_op = self.air.instructions.items(.data)[inst].bin_op; + _ = bin_op; + return self.fail("TODO implement airSetUnionTag for {}", .{self.target.cpu.arch}); +} + fn airShlSat(self: *Self, inst: Air.Inst.Index) !void { const bin_op = self.air.instructions.items(.data)[inst].bin_op; const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement shl_sat for {}", .{self.target.cpu.arch}); |
