diff --git a/test/behavior.zig b/test/behavior.zig index b882c6aca353b0a769d85abec7db5f4918924e49..1c59acf1822593b109629799a88a7d9844f50fbf 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -189,6 +189,7 @@ test { _ = @import("behavior/merge_error_sets.zig"); _ = @import("behavior/muladd.zig"); _ = @import("behavior/namespace_depends_on_compile_var.zig"); + _ = @import("behavior/nan.zig"); _ = @import("behavior/null.zig"); _ = @import("behavior/optional.zig"); _ = @import("behavior/packed-struct.zig"); @@ -253,7 +254,6 @@ test { builtin.zig_backend != .stage2_c and builtin.zig_backend != .stage2_spirv64) { - _ = @import("behavior/bugs/14198.zig"); _ = @import("behavior/export.zig"); } } diff --git a/test/behavior/bugs/14198.zig b/test/behavior/bugs/14198.zig deleted file mode 100644 index 5a4a515810b11d0c5c9ee658d216741d46f3ec49..0000000000000000000000000000000000000000 --- a/test/behavior/bugs/14198.zig +++ /dev/null @@ -1,35 +0,0 @@ -const std = @import("std"); -const math = std.math; -const mem = std.mem; -const testing = std.testing; - -const qnan_u16: u16 = 0x7E00; -const snan_u16: u16 = 0x7D00; -const qnan_u32: u32 = 0x7FC00000; -const snan_u32: u32 = 0x7FA00000; -const qnan_u64: u64 = 0x7FF8000000000000; -const snan_u64: u64 = 0x7FF4000000000000; -const qnan_u128: u128 = 0x7FFF8000000000000000000000000000; -const snan_u128: u128 = 0x7FFF4000000000000000000000000000; -const qnan_f16: f16 = math.nan(f16); -const snan_f16: f16 = math.snan(f16); -const qnan_f32: f32 = math.nan(f32); -const snan_f32: f32 = math.snan(f32); -const qnan_f64: f64 = math.nan(f64); -const snan_f64: f64 = math.snan(f64); -const qnan_f128: f128 = math.nan(f128); -const snan_f128: f128 = math.snan(f128); - -test "nan memory equality" { - // signaled - try testing.expect(mem.eql(u8, mem.asBytes(&snan_u16), mem.asBytes(&snan_f16))); - try testing.expect(mem.eql(u8, mem.asBytes(&snan_u32), mem.asBytes(&snan_f32))); - try testing.expect(mem.eql(u8, mem.asBytes(&snan_u64), mem.asBytes(&snan_f64))); - try testing.expect(mem.eql(u8, mem.asBytes(&snan_u128), mem.asBytes(&snan_f128))); - - // quiet - try testing.expect(mem.eql(u8, mem.asBytes(&qnan_u16), mem.asBytes(&qnan_f16))); - try testing.expect(mem.eql(u8, mem.asBytes(&qnan_u32), mem.asBytes(&qnan_f32))); - try testing.expect(mem.eql(u8, mem.asBytes(&qnan_u64), mem.asBytes(&qnan_f64))); - try testing.expect(mem.eql(u8, mem.asBytes(&qnan_u128), mem.asBytes(&qnan_f128))); -} diff --git a/test/behavior/nan.zig b/test/behavior/nan.zig new file mode 100644 index 0000000000000000000000000000000000000000..32cd6af0d4377b99b207d6938fc24a49a2b3d2a8 --- /dev/null +++ b/test/behavior/nan.zig @@ -0,0 +1,42 @@ +const builtin = @import("builtin"); +const std = @import("std"); +const math = std.math; +const mem = std.mem; +const testing = std.testing; + +const qnan_u16: u16 = 0x7E00; +const snan_u16: u16 = 0x7D00; +const qnan_u32: u32 = 0x7FC00000; +const snan_u32: u32 = 0x7FA00000; +const qnan_u64: u64 = 0x7FF8000000000000; +const snan_u64: u64 = 0x7FF4000000000000; +const qnan_u128: u128 = 0x7FFF8000000000000000000000000000; +const snan_u128: u128 = 0x7FFF4000000000000000000000000000; +const qnan_f16: f16 = math.nan(f16); +const snan_f16: f16 = math.snan(f16); +const qnan_f32: f32 = math.nan(f32); +const snan_f32: f32 = math.snan(f32); +const qnan_f64: f64 = math.nan(f64); +const snan_f64: f64 = math.snan(f64); +const qnan_f128: f128 = math.nan(f128); +const snan_f128: f128 = math.snan(f128); + +test "nan memory equality" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; + + // signaled + try testing.expect(mem.eql(u8, mem.asBytes(&snan_u16), mem.asBytes(&snan_f16))); + try testing.expect(mem.eql(u8, mem.asBytes(&snan_u32), mem.asBytes(&snan_f32))); + try testing.expect(mem.eql(u8, mem.asBytes(&snan_u64), mem.asBytes(&snan_f64))); + try testing.expect(mem.eql(u8, mem.asBytes(&snan_u128), mem.asBytes(&snan_f128))); + + // quiet + try testing.expect(mem.eql(u8, mem.asBytes(&qnan_u16), mem.asBytes(&qnan_f16))); + try testing.expect(mem.eql(u8, mem.asBytes(&qnan_u32), mem.asBytes(&qnan_f32))); + try testing.expect(mem.eql(u8, mem.asBytes(&qnan_u64), mem.asBytes(&qnan_f64))); + try testing.expect(mem.eql(u8, mem.asBytes(&qnan_u128), mem.asBytes(&qnan_f128))); +}