aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 47d33570d5..d946c913a9 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -2504,7 +2504,13 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
else => unreachable, // unexpected register size
}
},
- .immediate => return self.fail(src, "TODO implement genSetReg for aarch64 {}", .{mcv}),
+ .immediate => |x| {
+ if (x <= math.maxInt(u16)) {
+ mem.writeIntLittle(u32, try self.code.addManyAsArray(4), Instruction.movz(reg, @intCast(u16, x), 0).toU32());
+ } else {
+ return self.fail(src, "TODO genSetReg with 32,48,64bit immediates", .{});
+ }
+ },
.register => return self.fail(src, "TODO implement genSetReg for aarch64 {}", .{mcv}),
else => return self.fail(src, "TODO implement genSetReg for aarch64 {}", .{mcv}),
},