x86_64: add behavior test for packed store
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user