authorgravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2022-06-19 18:57:28+07:00
committergravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2022-06-24 21:19:33+07:00
log26b63b022fdbc163642cf274a9ca87b0194bec7d
tree9b4468f30b976d5f0408842c5d1ad7aaa1860f3e
parent4fd0500bb570572a89c8f342c6d9bdb4a69331a7

stage2: sparc64: Add airMemset placeholder


1 files changed, 15 insertions(+), 1 deletions(-)

src/arch/sparc64/CodeGen.zig+15-1
...@@ -611,7 +611,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -611,7 +611,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
611 .atomic_rmw => @panic("TODO try self.airAtomicRmw(inst)"),611 .atomic_rmw => @panic("TODO try self.airAtomicRmw(inst)"),
612 .atomic_load => @panic("TODO try self.airAtomicLoad(inst)"),612 .atomic_load => @panic("TODO try self.airAtomicLoad(inst)"),
613 .memcpy => @panic("TODO try self.airMemcpy(inst)"),613 .memcpy => @panic("TODO try self.airMemcpy(inst)"),
614 .memset => @panic("TODO try self.airMemset(inst)"),614 .memset => try self.airMemset(inst),
615 .set_union_tag => @panic("TODO try self.airSetUnionTag(inst)"),615 .set_union_tag => @panic("TODO try self.airSetUnionTag(inst)"),
616 .get_union_tag => @panic("TODO try self.airGetUnionTag(inst)"),616 .get_union_tag => @panic("TODO try self.airGetUnionTag(inst)"),
617 .clz => @panic("TODO try self.airClz(inst)"),617 .clz => @panic("TODO try self.airClz(inst)"),
...@@ -1569,6 +1569,20 @@ fn airLoop(self: *Self, inst: Air.Inst.Index) !void {...@@ -1569,6 +1569,20 @@ fn airLoop(self: *Self, inst: Air.Inst.Index) !void {
1569 return self.finishAirBookkeeping();1569 return self.finishAirBookkeeping();
1570}1570}
15711571
1572fn airMemset(self: *Self, inst: Air.Inst.Index) !void {
1573 const pl_op = self.air.instructions.items(.data)[inst].pl_op;
1574 const extra = self.air.extraData(Air.Bin, pl_op.payload);
1575
1576 const operand = pl_op.operand;
1577 const value = extra.data.lhs;
1578 const length = extra.data.rhs;
1579 _ = operand;
1580 _ = value;
1581 _ = length;
1582
1583 return self.fail("TODO implement airMemset for {}", .{self.target.cpu.arch});
1584}
1585
1572fn airNot(self: *Self, inst: Air.Inst.Index) !void {1586fn airNot(self: *Self, inst: Air.Inst.Index) !void {
1573 const ty_op = self.air.instructions.items(.data)[inst].ty_op;1587 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
1574 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {1588 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {