Commit 3c69810fe6

Jakub Konka <kubkon@jakubkonka.com>
2022-05-10 21:30:39
x64: fix binary not implementation
1 parent f6f98a6
Changed files (2)
src
arch
test
behavior
src/arch/x86_64/CodeGen.zig
@@ -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;
     };
test/behavior/math.zig
@@ -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;