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