| ... | ... | @@ -601,8 +601,8 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void { |
| 601 | 601 | .atomic_load => @panic("TODO try self.airAtomicLoad(inst)"), |
| 602 | 602 | .memcpy => @panic("TODO try self.airMemcpy(inst)"), |
| 603 | 603 | .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), |
| 606 | 606 | .clz => try self.airClz(inst), |
| 607 | 607 | .ctz => try self.airCtz(inst), |
| 608 | 608 | .popcount => try self.airPopcount(inst), |
| ... | ... | @@ -1556,6 +1556,12 @@ fn airFloatToInt(self: *Self, inst: Air.Inst.Index) !void { |
| 1556 | 1556 | return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); |
| 1557 | 1557 | } |
| 1558 | 1558 | |
| 1559 | fn 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 | |
| 1559 | 1565 | fn airIntCast(self: *Self, inst: Air.Inst.Index) !void { |
| 1560 | 1566 | const ty_op = self.air.instructions.items(.data)[inst].ty_op; |
| 1561 | 1567 | if (self.liveness.isUnused(inst)) |
| ... | ... | @@ -2071,6 +2077,12 @@ fn airRetPtr(self: *Self, inst: Air.Inst.Index) !void { |
| 2071 | 2077 | return self.finishAir(inst, .{ .ptr_stack_offset = stack_offset }, .{ .none, .none, .none }); |
| 2072 | 2078 | } |
| 2073 | 2079 | |
| 2080 | fn 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 | |
| 2074 | 2086 | fn airShlSat(self: *Self, inst: Air.Inst.Index) !void { |
| 2075 | 2087 | const bin_op = self.air.instructions.items(.data)[inst].bin_op; |
| 2076 | 2088 | const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement shl_sat for {}", .{self.target.cpu.arch}); |