Commit ae2d6b7eea

Koakuma <koachan@protonmail.com>
2022-05-06 18:20:02
stage2: sparc64: Add BPr support for airCondBr
1 parent e057ff2
Changed files (1)
src
arch
sparc64
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