x64: fix binary not implementation

This commit is contained in:
Jakub Konka 2022-05-10 21:30:39 +02:00
parent f6f98a621f
commit 3c69810fe6
2 changed files with 2 additions and 2 deletions

View File

@ -1154,7 +1154,8 @@ fn airNot(self: *Self, inst: Air.Inst.Index) !void {
};
defer if (dst_mcv_lock) |lock| self.register_manager.unlockReg(lock);
try self.genBinOpMir(.xor, operand_ty, dst_mcv, .{ .immediate = 1 });
const mask = ~@as(u64, 0);
try self.genBinOpMir(.xor, operand_ty, dst_mcv, .{ .immediate = mask });
break :result dst_mcv;
};

View File

@ -362,7 +362,6 @@ fn comptimeAdd(comptime a: comptime_int, comptime b: comptime_int) comptime_int
test "binary not" {
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
try expect(comptime x: {
break :x ~@as(u16, 0b1010101010101010) == 0b0101010101010101;