x86_64: add behavior test for packed store

This commit is contained in:
Bingwu Zhang
2025-03-16 09:02:34 +08:00
parent c62fb118e7
commit a26f1768d8

View File

@@ -1335,3 +1335,31 @@ test "assign packed struct initialized with RLS to packed struct literal field"
try expect(outer.inner.x == x);
try expect(outer.x == x);
}
test "packed struct store of comparison result" {
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
const S1 = packed struct {
val1: u3,
val2: u3,
};
const S2 = packed struct {
a: bool,
b: bool,
};
var A: S1 = .{ .val1 = 1, .val2 = 1 };
A.val2 += 1;
try expectEqual(1, A.val1);
try expectEqual(2, A.val2);
try expect((A.val2 & 1) != 1);
const result1: S2 = .{ .a = (A.val2 & 1) != 1, .b = (A.val1 & 1) != 1 };
try expect(result1.a);
try expect(!result1.b);
try expect((A.val2 == 3) == false);
try expect((A.val2 == 2) == true);
const result2: S2 = .{ .a = !(A.val2 == 3), .b = (A.val1 == 2) };
try expect(result2.a);
try expect(!result2.b);
}