Add move wide with zero (movz) instruction

This commit is contained in:
Jakub Konka
2020-11-08 14:49:31 +01:00
parent d601b0f4eb
commit 4ef6864a15
2 changed files with 73 additions and 1 deletions

View File

@@ -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}),
},