| ... | ... | @@ -645,13 +645,13 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void { |
| 645 | 645 | switch (air_tags[inst]) { |
| 646 | 646 | // zig fmt: off |
| 647 | 647 | .add => try self.airAdd(inst), |
| 648 | | .addwrap => try self.airAddWrap(inst), |
| 648 | .addwrap => try self.airAdd(inst), |
| 649 | 649 | .add_sat => try self.airAddSat(inst), |
| 650 | 650 | .sub => try self.airSub(inst), |
| 651 | | .subwrap => try self.airSubWrap(inst), |
| 651 | .subwrap => try self.airSub(inst), |
| 652 | 652 | .sub_sat => try self.airSubSat(inst), |
| 653 | 653 | .mul => try self.airMul(inst), |
| 654 | | .mulwrap => try self.airMulWrap(inst), |
| 654 | .mulwrap => try self.airMul(inst), |
| 655 | 655 | .mul_sat => try self.airMulSat(inst), |
| 656 | 656 | .rem => try self.airRem(inst), |
| 657 | 657 | .mod => try self.airMod(inst), |
| ... | ... | @@ -1318,7 +1318,7 @@ fn airAddWrap(self: *Self, inst: Air.Inst.Index) !void { |
| 1318 | 1318 | const result: MCValue = if (self.liveness.isUnused(inst)) |
| 1319 | 1319 | .dead |
| 1320 | 1320 | else |
| 1321 | | return self.fail("TODO implement addwrap for {}", .{self.target.cpu.arch}); |
| 1321 | try self.genBinMathOp(inst, bin_op.lhs, bin_op.rhs); |
| 1322 | 1322 | return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); |
| 1323 | 1323 | } |
| 1324 | 1324 | |
| ... | ... | @@ -1375,15 +1375,6 @@ fn airSub(self: *Self, inst: Air.Inst.Index) !void { |
| 1375 | 1375 | return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); |
| 1376 | 1376 | } |
| 1377 | 1377 | |
| 1378 | | fn airSubWrap(self: *Self, inst: Air.Inst.Index) !void { |
| 1379 | | const bin_op = self.air.instructions.items(.data)[inst].bin_op; |
| 1380 | | const result: MCValue = if (self.liveness.isUnused(inst)) |
| 1381 | | .dead |
| 1382 | | else |
| 1383 | | return self.fail("TODO implement subwrap for {}", .{self.target.cpu.arch}); |
| 1384 | | return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); |
| 1385 | | } |
| 1386 | | |
| 1387 | 1378 | fn airSubSat(self: *Self, inst: Air.Inst.Index) !void { |
| 1388 | 1379 | const bin_op = self.air.instructions.items(.data)[inst].bin_op; |
| 1389 | 1380 | const result: MCValue = if (self.liveness.isUnused(inst)) |
| ... | ... | @@ -1421,15 +1412,6 @@ fn airMul(self: *Self, inst: Air.Inst.Index) !void { |
| 1421 | 1412 | return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); |
| 1422 | 1413 | } |
| 1423 | 1414 | |
| 1424 | | fn airMulWrap(self: *Self, inst: Air.Inst.Index) !void { |
| 1425 | | const bin_op = self.air.instructions.items(.data)[inst].bin_op; |
| 1426 | | const result: MCValue = if (self.liveness.isUnused(inst)) |
| 1427 | | .dead |
| 1428 | | else |
| 1429 | | return self.fail("TODO implement mulwrap for {}", .{self.target.cpu.arch}); |
| 1430 | | return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); |
| 1431 | | } |
| 1432 | | |
| 1433 | 1415 | fn airMulSat(self: *Self, inst: Air.Inst.Index) !void { |
| 1434 | 1416 | const bin_op = self.air.instructions.items(.data)[inst].bin_op; |
| 1435 | 1417 | const result: MCValue = if (self.liveness.isUnused(inst)) |
| ... | ... | @@ -1826,7 +1808,7 @@ fn airXor(self: *Self, inst: Air.Inst.Index) !void { |
| 1826 | 1808 | const result: MCValue = if (self.liveness.isUnused(inst)) |
| 1827 | 1809 | .dead |
| 1828 | 1810 | else |
| 1829 | | return self.fail("TODO implement xor for {}", .{self.target.cpu.arch}); |
| 1811 | try self.genBinMathOp(inst, bin_op.lhs, bin_op.rhs); |
| 1830 | 1812 | return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); |
| 1831 | 1813 | } |
| 1832 | 1814 | |