commit ae2d6b7eea9c2dff7cfe6d38f5713d2f8cfed4e6 (tree)
parent e057ff249648bdcd8cf2e9be62b40a2379de03e9
Author: Koakuma <koachan@protonmail.com>
Date: Fri, 6 May 2022 23:20:02 +0700
stage2: sparc64: Add BPr support for airCondBr
Diffstat:
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/arch/sparc64/CodeGen.zig b/src/arch/sparc64/CodeGen.zig
@@ -1031,7 +1031,23 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
},
},
}),
- else => return self.fail("TODO branch on register content (BPr)", .{}),
+ else => blk: {
+ const reg = switch (cond) {
+ .register => |r| r,
+ else => try self.copyToTmpRegister(Type.bool, cond),
+ };
+
+ break :blk try self.addInst(.{
+ .tag = .bpr,
+ .data = .{
+ .branch_predict_reg = .{
+ .cond = .eq_zero,
+ .rs1 = reg,
+ .inst = undefined, // populated later through performReloc
+ },
+ },
+ });
+ },
};
// Regardless of the branch type that's emitted, we need to reserve