aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorjoachimschmidt557 <joachim.schmidt557@outlook.com>2021-01-18 21:51:56 +0100
committerJakub Konka <kubkon@jakubkonka.com>2021-01-18 22:22:53 +0100
commit6c7e66613d57aec2f2949c065ea6431ff6c31f88 (patch)
tree893d0c5e90cc82f9a90f5c2d3a62d3267d4181a1 /src/codegen.zig
parent1a05b545205863c6bf9cbdee9157ad0c440300ca (diff)
downloadzig-6c7e66613d57aec2f2949c065ea6431ff6c31f88.tar.gz
zig-6c7e66613d57aec2f2949c065ea6431ff6c31f88.zip
stage2 AArch64: implement jump
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 9566856122..14572c2012 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -2349,6 +2349,13 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
return self.fail(src, "TODO: enable larger branch offset", .{});
}
},
+ .aarch64, .aarch64_be, .aarch64_32 => {
+ if (math.cast(i28, @intCast(i32, index) - @intCast(i32, self.code.items.len + 8))) |delta| {
+ writeInt(u32, try self.code.addManyAsArray(4), Instruction.b(delta).toU32());
+ } else |err| {
+ return self.fail(src, "TODO: enable larger branch offset", .{});
+ }
+ },
else => return self.fail(src, "TODO implement jump for {}", .{self.target.cpu.arch}),
}
}