| author | |
| committer | |
| log | 9831f272383a66392ebeadbc60d8176f44b3553c |
| tree | 996de8b72b2616b193bd9c47e3792fdc3b98dd07 |
| parent | 817fa3af8631d894004fbdb668da0882836dbe9b |
Specifically without linking libc.12 files changed, 105 insertions(+), 15 deletions(-)
lib/zig.h+76-13| ... | @@ -1176,10 +1176,10 @@ typedef signed __int128 zig_i128; | ... | @@ -1176,10 +1176,10 @@ typedef signed __int128 zig_i128; |
| 1176 | 1176 | ||
| 1177 | #if zig_little_endian | 1177 | #if zig_little_endian |
| 1178 | typedef struct { zig_align(16) uint64_t lo; uint64_t hi; } zig_u128; | 1178 | typedef struct { zig_align(16) uint64_t lo; uint64_t hi; } zig_u128; |
| 1179 | typedef struct { zig_align(16) uint64_t lo; int64_t hi; } zig_i128; | 1179 | typedef struct { zig_align(16) uint64_t lo; int64_t hi; } zig_i128; |
| 1180 | #else | 1180 | #else |
| 1181 | typedef struct { zig_align(16) uint64_t hi; uint64_t lo; } zig_u128; | 1181 | typedef struct { zig_align(16) uint64_t hi; uint64_t lo; } zig_u128; |
| 1182 | typedef struct { zig_align(16) int64_t hi; uint64_t lo; } zig_i128; | 1182 | typedef struct { zig_align(16) int64_t hi; uint64_t lo; } zig_i128; |
| 1183 | #endif | 1183 | #endif |
| 1184 | 1184 | ||
| 1185 | #define zig_make_u128(hi, lo) ((zig_u128){ .h##i = (hi), .l##o = (lo) }) | 1185 | #define zig_make_u128(hi, lo) ((zig_u128){ .h##i = (hi), .l##o = (lo) }) |
| ... | @@ -3197,11 +3197,9 @@ zig_convert_builtin(zig_compiler_rt_f16, zig_f16, trunc, zig_f64, | ... | @@ -3197,11 +3197,9 @@ zig_convert_builtin(zig_compiler_rt_f16, zig_f16, trunc, zig_f64, |
| 3197 | zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f80, zig_f80, 2) | 3197 | zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f80, zig_f80, 2) |
| 3198 | zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f128, zig_f128, 2) | 3198 | zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f128, zig_f128, 2) |
| 3199 | zig_convert_builtin(zig_f32, zig_f32, extend, zig_compiler_rt_f16, zig_f16, 2) | 3199 | zig_convert_builtin(zig_f32, zig_f32, extend, zig_compiler_rt_f16, zig_f16, 2) |
| 3200 | zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f64, zig_f64, 2) | ||
| 3201 | zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f80, zig_f80, 2) | 3200 | zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f80, zig_f80, 2) |
| 3202 | zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f128, zig_f128, 2) | 3201 | zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f128, zig_f128, 2) |
| 3203 | zig_convert_builtin(zig_f64, zig_f64, extend, zig_compiler_rt_f16, zig_f16, 2) | 3202 | zig_convert_builtin(zig_f64, zig_f64, extend, zig_compiler_rt_f16, zig_f16, 2) |
| 3204 | zig_convert_builtin(zig_f64, zig_f64, extend, zig_f32, zig_f32, 2) | ||
| 3205 | zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f80, zig_f80, 2) | 3203 | zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f80, zig_f80, 2) |
| 3206 | zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f128, zig_f128, 2) | 3204 | zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f128, zig_f128, 2) |
| 3207 | zig_convert_builtin(zig_f80, zig_f80, extend, zig_f16, zig_f16, 2) | 3205 | zig_convert_builtin(zig_f80, zig_f80, extend, zig_f16, zig_f16, 2) |
| ... | @@ -3213,6 +3211,21 @@ zig_convert_builtin(zig_f128, zig_f128, extend, zig_f32, | ... | @@ -3213,6 +3211,21 @@ zig_convert_builtin(zig_f128, zig_f128, extend, zig_f32, |
| 3213 | zig_convert_builtin(zig_f128, zig_f128, extend, zig_f64, zig_f64, 2) | 3211 | zig_convert_builtin(zig_f128, zig_f128, extend, zig_f64, zig_f64, 2) |
| 3214 | zig_convert_builtin(zig_f128, zig_f128, extend, zig_f80, zig_f80, 2) | 3212 | zig_convert_builtin(zig_f128, zig_f128, extend, zig_f80, zig_f80, 2) |
| 3215 | 3213 | ||
| 3214 | #ifdef __ARM_EABI__ | ||
| 3215 | |||
| 3216 | zig_extern zig_callconv(pcs("aapcs")) zig_f32 __aeabi_d2f(zig_f64); | ||
| 3217 | static inline zig_f32 zig_truncdfsf(zig_f64 arg) { return __aeabi_d2f(arg); } | ||
| 3218 | |||
| 3219 | zig_extern zig_callconv(pcs("aapcs")) zig_f64 __aeabi_f2d(zig_f32); | ||
| 3220 | static inline zig_f64 zig_extendsfdf(zig_f32 arg) { return __aeabi_f2d(arg); } | ||
| 3221 | |||
| 3222 | #else /* __ARM_EABI__ */ | ||
| 3223 | |||
| 3224 | zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f64, zig_f64, 2) | ||
| 3225 | zig_convert_builtin(zig_f64, zig_f64, extend, zig_f32, zig_f32, 2) | ||
| 3226 | |||
| 3227 | #endif /* __ARM_EABI__ */ | ||
| 3228 | |||
| 3216 | #define zig_float_negate_builtin_0(w, c, sb) \ | 3229 | #define zig_float_negate_builtin_0(w, c, sb) \ |
| 3217 | zig_expand_concat(zig_xor_, zig_repr_f##w)(arg, zig_make_f##w(-0x0.0p0, c sb)) | 3230 | zig_expand_concat(zig_xor_, zig_repr_f##w)(arg, zig_make_f##w(-0x0.0p0, c sb)) |
| 3218 | #define zig_float_negate_builtin_1(w, c, sb) -arg | 3231 | #define zig_float_negate_builtin_1(w, c, sb) -arg |
| ... | @@ -3255,17 +3268,11 @@ zig_float_negate_builtin(128, zig_make_u128, (UINT64_C(1) << 63, UINT64_C(0))) | ... | @@ -3255,17 +3268,11 @@ zig_float_negate_builtin(128, zig_make_u128, (UINT64_C(1) << 63, UINT64_C(0))) |
| 3255 | return lhs operator rhs; \ | 3268 | return lhs operator rhs; \ |
| 3256 | } | 3269 | } |
| 3257 | 3270 | ||
| 3258 | #define zig_float_builtins(w) \ | 3271 | #define zig_common_float_builtins(w) \ |
| 3259 | zig_convert_builtin( int32_t, int32_t, fix, zig_f##w, zig_f##w, ) \ | ||
| 3260 | zig_convert_builtin(uint32_t, uint32_t, fixuns, zig_f##w, zig_f##w, ) \ | ||
| 3261 | zig_convert_builtin( int64_t, int64_t, fix, zig_f##w, zig_f##w, ) \ | 3272 | zig_convert_builtin( int64_t, int64_t, fix, zig_f##w, zig_f##w, ) \ |
| 3262 | zig_convert_builtin(uint64_t, uint64_t, fixuns, zig_f##w, zig_f##w, ) \ | ||
| 3263 | zig_convert_builtin(zig_i128, zig_i128, fix, zig_f##w, zig_f##w, ) \ | 3273 | zig_convert_builtin(zig_i128, zig_i128, fix, zig_f##w, zig_f##w, ) \ |
| 3264 | zig_convert_builtin(zig_u128, zig_u128, fixuns, zig_f##w, zig_f##w, ) \ | 3274 | zig_convert_builtin(zig_u128, zig_u128, fixuns, zig_f##w, zig_f##w, ) \ |
| 3265 | zig_convert_builtin(zig_f##w, zig_f##w, float, int32_t, int32_t, ) \ | ||
| 3266 | zig_convert_builtin(zig_f##w, zig_f##w, floatun, uint32_t, uint32_t, ) \ | ||
| 3267 | zig_convert_builtin(zig_f##w, zig_f##w, float, int64_t, int64_t, ) \ | 3275 | zig_convert_builtin(zig_f##w, zig_f##w, float, int64_t, int64_t, ) \ |
| 3268 | zig_convert_builtin(zig_f##w, zig_f##w, floatun, uint64_t, uint64_t, ) \ | ||
| 3269 | zig_convert_builtin(zig_f##w, zig_f##w, float, zig_i128, zig_i128, ) \ | 3276 | zig_convert_builtin(zig_f##w, zig_f##w, float, zig_i128, zig_i128, ) \ |
| 3270 | zig_convert_builtin(zig_f##w, zig_f##w, floatun, zig_u128, zig_u128, ) \ | 3277 | zig_convert_builtin(zig_f##w, zig_f##w, floatun, zig_u128, zig_u128, ) \ |
| 3271 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, cmp) \ | 3278 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, cmp) \ |
| ... | @@ -3309,12 +3316,68 @@ zig_float_negate_builtin(128, zig_make_u128, (UINT64_C(1) << 63, UINT64_C(0))) | ... | @@ -3309,12 +3316,68 @@ zig_float_negate_builtin(128, zig_make_u128, (UINT64_C(1) << 63, UINT64_C(0))) |
| 3309 | static inline zig_f##w zig_mod_f##w(zig_f##w lhs, zig_f##w rhs) { \ | 3316 | static inline zig_f##w zig_mod_f##w(zig_f##w lhs, zig_f##w rhs) { \ |
| 3310 | return zig_sub_f##w(lhs, zig_mul_f##w(zig_div_floor_f##w(lhs, rhs), rhs)); \ | 3317 | return zig_sub_f##w(lhs, zig_mul_f##w(zig_div_floor_f##w(lhs, rhs), rhs)); \ |
| 3311 | } | 3318 | } |
| 3319 | zig_common_float_builtins(16) | ||
| 3320 | zig_common_float_builtins(32) | ||
| 3321 | zig_common_float_builtins(64) | ||
| 3322 | zig_common_float_builtins(80) | ||
| 3323 | zig_common_float_builtins(128) | ||
| 3324 | |||
| 3325 | #define zig_float_builtins(w) \ | ||
| 3326 | zig_convert_builtin( int32_t, int32_t, fix, zig_f##w, zig_f##w, ) \ | ||
| 3327 | zig_convert_builtin(uint32_t, uint32_t, fixuns, zig_f##w, zig_f##w, ) \ | ||
| 3328 | zig_convert_builtin(uint64_t, uint64_t, fixuns, zig_f##w, zig_f##w, ) \ | ||
| 3329 | zig_convert_builtin(zig_f##w, zig_f##w, float, int32_t, int32_t, ) \ | ||
| 3330 | zig_convert_builtin(zig_f##w, zig_f##w, floatun, uint32_t, uint32_t, ) \ | ||
| 3331 | zig_convert_builtin(zig_f##w, zig_f##w, floatun, uint64_t, uint64_t, ) | ||
| 3312 | zig_float_builtins(16) | 3332 | zig_float_builtins(16) |
| 3313 | zig_float_builtins(32) | ||
| 3314 | zig_float_builtins(64) | ||
| 3315 | zig_float_builtins(80) | 3333 | zig_float_builtins(80) |
| 3316 | zig_float_builtins(128) | 3334 | zig_float_builtins(128) |
| 3317 | 3335 | ||
| 3336 | #ifdef __ARM_EABI__ | ||
| 3337 | |||
| 3338 | zig_extern zig_callconv(pcs("aapcs")) int32_t __aeabi_f2iz(zig_f32); | ||
| 3339 | static inline int32_t zig_fixsfsi(zig_f32 arg) { return __aeabi_f2iz(arg); } | ||
| 3340 | |||
| 3341 | zig_extern zig_callconv(pcs("aapcs")) uint32_t __aeabi_f2uiz(zig_f32); | ||
| 3342 | static inline uint32_t zig_fixunssfsi(zig_f32 arg) { return __aeabi_f2uiz(arg); } | ||
| 3343 | |||
| 3344 | zig_extern zig_callconv(pcs("aapcs")) uint64_t __aeabi_f2ulz(zig_f32); | ||
| 3345 | static inline uint64_t zig_fixunssfdi(zig_f32 arg) { return __aeabi_f2ulz(arg); } | ||
| 3346 | |||
| 3347 | zig_extern zig_callconv(pcs("aapcs")) zig_f32 __aeabi_i2f(int32_t); | ||
| 3348 | static inline zig_f32 zig_floatsisf(int32_t arg) { return __aeabi_i2f(arg); } | ||
| 3349 | |||
| 3350 | zig_extern zig_callconv(pcs("aapcs")) zig_f32 __aeabi_ui2f(uint32_t); | ||
| 3351 | static inline zig_f32 zig_floatunsisf(uint32_t arg) { return __aeabi_ui2f(arg); } | ||
| 3352 | |||
| 3353 | zig_extern zig_callconv(pcs("aapcs")) zig_f32 __aeabi_ul2f(uint64_t); | ||
| 3354 | static inline zig_f32 zig_floatundisf(uint64_t arg) { return __aeabi_ul2f(arg); } | ||
| 3355 | |||
| 3356 | zig_extern zig_callconv(pcs("aapcs")) int32_t __aeabi_d2iz(zig_f64); | ||
| 3357 | static inline int32_t zig_fixdfsi(zig_f64 arg) { return __aeabi_d2iz(arg); } | ||
| 3358 | |||
| 3359 | zig_extern zig_callconv(pcs("aapcs")) uint32_t __aeabi_d2uiz(zig_f64); | ||
| 3360 | static inline uint32_t zig_fixunsdfsi(zig_f64 arg) { return __aeabi_d2uiz(arg); } | ||
| 3361 | |||
| 3362 | zig_extern zig_callconv(pcs("aapcs")) uint64_t __aeabi_d2ulz(zig_f64); | ||
| 3363 | static inline uint64_t zig_fixunsdfdi(zig_f64 arg) { return __aeabi_d2ulz(arg); } | ||
| 3364 | |||
| 3365 | zig_extern zig_callconv(pcs("aapcs")) zig_f64 __aeabi_i2d(int32_t); | ||
| 3366 | static inline zig_f64 zig_floatsidf(int32_t arg) { return __aeabi_i2d(arg); } | ||
| 3367 | |||
| 3368 | zig_extern zig_callconv(pcs("aapcs")) zig_f64 __aeabi_ui2d(uint32_t); | ||
| 3369 | static inline zig_f64 zig_floatunsidf(uint32_t arg) { return __aeabi_ui2d(arg); } | ||
| 3370 | |||
| 3371 | zig_extern zig_callconv(pcs("aapcs")) zig_f64 __aeabi_ul2d(uint64_t); | ||
| 3372 | static inline zig_f64 zig_floatundidf(uint64_t arg) { return __aeabi_ul2d(arg); } | ||
| 3373 | |||
| 3374 | #else /* __ARM_EABI__ */ | ||
| 3375 | |||
| 3376 | zig_float_builtins(32) | ||
| 3377 | zig_float_builtins(64) | ||
| 3378 | |||
| 3379 | #endif /* __ARM_EABI__ */ | ||
| 3380 | |||
| 3318 | /* ============================ Atomics Support ============================= */ | 3381 | /* ============================ Atomics Support ============================= */ |
| 3319 | 3382 | ||
| 3320 | /* Note that atomics should be implemented as macros because most | 3383 | /* Note that atomics should be implemented as macros because most |
src/TypedValue.zig+1| ... | @@ -196,6 +196,7 @@ pub fn print( | ... | @@ -196,6 +196,7 @@ pub fn print( |
| 196 | .undef => return writer.writeAll("undefined"), | 196 | .undef => return writer.writeAll("undefined"), |
| 197 | .runtime_value => return writer.writeAll("(runtime value)"), | 197 | .runtime_value => return writer.writeAll("(runtime value)"), |
| 198 | .simple_value => |simple_value| switch (simple_value) { | 198 | .simple_value => |simple_value| switch (simple_value) { |
| 199 | .void => return writer.writeAll("{}"), | ||
| 199 | .empty_struct => return printAggregate(ty, val, writer, level, mod), | 200 | .empty_struct => return printAggregate(ty, val, writer, level, mod), |
| 200 | .generic_poison => return writer.writeAll("(generic poison)"), | 201 | .generic_poison => return writer.writeAll("(generic poison)"), |
| 201 | else => return writer.writeAll(@tagName(simple_value)), | 202 | else => return writer.writeAll(@tagName(simple_value)), |
test/behavior/align.zig+3-2| ... | @@ -198,11 +198,12 @@ test "alignment and size of structs with 128-bit fields" { | ... | @@ -198,11 +198,12 @@ test "alignment and size of structs with 128-bit fields" { |
| 198 | 198 | ||
| 199 | else => return error.SkipZigTest, | 199 | else => return error.SkipZigTest, |
| 200 | }; | 200 | }; |
| 201 | const min_struct_align = if (builtin.zig_backend == .stage2_c) 16 else 0; | ||
| 201 | comptime { | 202 | comptime { |
| 202 | assert(@alignOf(A) == expected.a_align); | 203 | assert(@alignOf(A) == @max(expected.a_align, min_struct_align)); |
| 203 | assert(@sizeOf(A) == expected.a_size); | 204 | assert(@sizeOf(A) == expected.a_size); |
| 204 | 205 | ||
| 205 | assert(@alignOf(B) == expected.b_align); | 206 | assert(@alignOf(B) == @max(expected.b_align, min_struct_align)); |
| 206 | assert(@sizeOf(B) == expected.b_size); | 207 | assert(@sizeOf(B) == expected.b_size); |
| 207 | 208 | ||
| 208 | assert(@alignOf(u128) == expected.u128_align); | 209 | assert(@alignOf(u128) == expected.u128_align); |
test/behavior/cast.zig+2| ... | @@ -123,6 +123,7 @@ test "@floatFromInt(f80)" { | ... | @@ -123,6 +123,7 @@ test "@floatFromInt(f80)" { |
| 123 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 123 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 124 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 124 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 125 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 125 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 126 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 126 | 127 | ||
| 127 | const S = struct { | 128 | const S = struct { |
| 128 | fn doTheTest(comptime Int: type) !void { | 129 | fn doTheTest(comptime Int: type) !void { |
| ... | @@ -1369,6 +1370,7 @@ test "cast f16 to wider types" { | ... | @@ -1369,6 +1370,7 @@ test "cast f16 to wider types" { |
| 1369 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1370 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 1370 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1371 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1371 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 1372 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 1373 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 1372 | 1374 | ||
| 1373 | const S = struct { | 1375 | const S = struct { |
| 1374 | fn doTheTest() !void { | 1376 | fn doTheTest() !void { |
test/behavior/eval.zig+1| ... | @@ -533,6 +533,7 @@ test "runtime 128 bit integer division" { | ... | @@ -533,6 +533,7 @@ test "runtime 128 bit integer division" { |
| 533 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 533 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 534 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 534 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 535 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 535 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 536 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 536 | 537 | ||
| 537 | var a: u128 = 152313999999999991610955792383; | 538 | var a: u128 = 152313999999999991610955792383; |
| 538 | var b: u128 = 10000000000000000000; | 539 | var b: u128 = 10000000000000000000; |
test/behavior/floatop.zig+9| ... | @@ -554,6 +554,7 @@ test "another, possibly redundant, @fabs test" { | ... | @@ -554,6 +554,7 @@ test "another, possibly redundant, @fabs test" { |
| 554 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 554 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 555 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 555 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 556 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 556 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 557 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 557 | 558 | ||
| 558 | try testFabsLegacy(f128, 12.0); | 559 | try testFabsLegacy(f128, 12.0); |
| 559 | try comptime testFabsLegacy(f128, 12.0); | 560 | try comptime testFabsLegacy(f128, 12.0); |
| ... | @@ -576,6 +577,7 @@ test "@fabs f80" { | ... | @@ -576,6 +577,7 @@ test "@fabs f80" { |
| 576 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 577 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 577 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 578 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 578 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 579 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 580 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 579 | 581 | ||
| 580 | try testFabsLegacy(f80, 12.0); | 582 | try testFabsLegacy(f80, 12.0); |
| 581 | try comptime testFabsLegacy(f80, 12.0); | 583 | try comptime testFabsLegacy(f80, 12.0); |
| ... | @@ -593,6 +595,7 @@ test "a third @fabs test, surely there should not be three fabs tests" { | ... | @@ -593,6 +595,7 @@ test "a third @fabs test, surely there should not be three fabs tests" { |
| 593 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 595 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 594 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 596 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 595 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 597 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 598 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 596 | 599 | ||
| 597 | inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| { | 600 | inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| { |
| 598 | // normals | 601 | // normals |
| ... | @@ -684,6 +687,7 @@ test "@floor f80" { | ... | @@ -684,6 +687,7 @@ test "@floor f80" { |
| 684 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 687 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 685 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 688 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 686 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 689 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 690 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 687 | 691 | ||
| 688 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) { | 692 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) { |
| 689 | // https://github.com/ziglang/zig/issues/12602 | 693 | // https://github.com/ziglang/zig/issues/12602 |
| ... | @@ -700,6 +704,7 @@ test "@floor f128" { | ... | @@ -700,6 +704,7 @@ test "@floor f128" { |
| 700 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 704 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 701 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 705 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 702 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 706 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 707 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 703 | 708 | ||
| 704 | try testFloorLegacy(f128, 12.0); | 709 | try testFloorLegacy(f128, 12.0); |
| 705 | try comptime testFloorLegacy(f128, 12.0); | 710 | try comptime testFloorLegacy(f128, 12.0); |
| ... | @@ -780,6 +785,7 @@ test "@ceil f80" { | ... | @@ -780,6 +785,7 @@ test "@ceil f80" { |
| 780 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 785 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 781 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 786 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 782 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 787 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 788 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 783 | 789 | ||
| 784 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) { | 790 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) { |
| 785 | // https://github.com/ziglang/zig/issues/12602 | 791 | // https://github.com/ziglang/zig/issues/12602 |
| ... | @@ -796,6 +802,7 @@ test "@ceil f128" { | ... | @@ -796,6 +802,7 @@ test "@ceil f128" { |
| 796 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 802 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 797 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 803 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 798 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 804 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 805 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 799 | 806 | ||
| 800 | try testCeilLegacy(f128, 12.0); | 807 | try testCeilLegacy(f128, 12.0); |
| 801 | try comptime testCeilLegacy(f128, 12.0); | 808 | try comptime testCeilLegacy(f128, 12.0); |
| ... | @@ -875,6 +882,7 @@ test "@trunc f80" { | ... | @@ -875,6 +882,7 @@ test "@trunc f80" { |
| 875 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 882 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 876 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 883 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 877 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 884 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 885 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 878 | 886 | ||
| 879 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) { | 887 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) { |
| 880 | // https://github.com/ziglang/zig/issues/12602 | 888 | // https://github.com/ziglang/zig/issues/12602 |
| ... | @@ -897,6 +905,7 @@ test "@trunc f128" { | ... | @@ -897,6 +905,7 @@ test "@trunc f128" { |
| 897 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 905 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 898 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 906 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 899 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 907 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 908 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 900 | 909 | ||
| 901 | try testTruncLegacy(f128, 12.0); | 910 | try testTruncLegacy(f128, 12.0); |
| 902 | try comptime testTruncLegacy(f128, 12.0); | 911 | try comptime testTruncLegacy(f128, 12.0); |
test/behavior/math.zig+4| ... | @@ -664,6 +664,7 @@ test "128-bit multiplication" { | ... | @@ -664,6 +664,7 @@ test "128-bit multiplication" { |
| 664 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 664 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 665 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 665 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 666 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 666 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 667 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 667 | 668 | ||
| 668 | { | 669 | { |
| 669 | var a: i128 = 3; | 670 | var a: i128 = 3; |
| ... | @@ -1311,6 +1312,7 @@ test "remainder division" { | ... | @@ -1311,6 +1312,7 @@ test "remainder division" { |
| 1311 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1312 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1312 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 1313 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 1313 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1314 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1315 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 1314 | 1316 | ||
| 1315 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) { | 1317 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) { |
| 1316 | // https://github.com/ziglang/zig/issues/12602 | 1318 | // https://github.com/ziglang/zig/issues/12602 |
| ... | @@ -1455,6 +1457,7 @@ test "@round f80" { | ... | @@ -1455,6 +1457,7 @@ test "@round f80" { |
| 1455 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1457 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1456 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1458 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1457 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 1459 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 1460 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 1458 | 1461 | ||
| 1459 | try testRound(f80, 12.0); | 1462 | try testRound(f80, 12.0); |
| 1460 | try comptime testRound(f80, 12.0); | 1463 | try comptime testRound(f80, 12.0); |
| ... | @@ -1467,6 +1470,7 @@ test "@round f128" { | ... | @@ -1467,6 +1470,7 @@ test "@round f128" { |
| 1467 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1470 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1468 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1471 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1469 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 1472 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 1473 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 1470 | 1474 | ||
| 1471 | try testRound(f128, 12.0); | 1475 | try testRound(f128, 12.0); |
| 1472 | try comptime testRound(f128, 12.0); | 1476 | try comptime testRound(f128, 12.0); |
test/behavior/maximum_minimum.zig+1| ... | @@ -110,6 +110,7 @@ test "@min/max for floats" { | ... | @@ -110,6 +110,7 @@ test "@min/max for floats" { |
| 110 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 110 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 111 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 111 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 112 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 112 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 113 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 113 | 114 | ||
| 114 | const S = struct { | 115 | const S = struct { |
| 115 | fn doTheTest(comptime T: type) !void { | 116 | fn doTheTest(comptime T: type) !void { |
test/behavior/muladd.zig+4| ... | @@ -56,6 +56,7 @@ test "@mulAdd f80" { | ... | @@ -56,6 +56,7 @@ test "@mulAdd f80" { |
| 56 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 56 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 57 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 57 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 58 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 58 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 59 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 59 | 60 | ||
| 60 | try comptime testMulAdd80(); | 61 | try comptime testMulAdd80(); |
| 61 | try testMulAdd80(); | 62 | try testMulAdd80(); |
| ... | @@ -75,6 +76,7 @@ test "@mulAdd f128" { | ... | @@ -75,6 +76,7 @@ test "@mulAdd f128" { |
| 75 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 76 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 76 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 77 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 77 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 78 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 79 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 78 | 80 | ||
| 79 | try comptime testMulAdd128(); | 81 | try comptime testMulAdd128(); |
| 80 | try testMulAdd128(); | 82 | try testMulAdd128(); |
| ... | @@ -177,6 +179,7 @@ test "vector f80" { | ... | @@ -177,6 +179,7 @@ test "vector f80" { |
| 177 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 179 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 178 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 180 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 179 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 181 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 182 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 180 | 183 | ||
| 181 | try comptime vector80(); | 184 | try comptime vector80(); |
| 182 | try vector80(); | 185 | try vector80(); |
| ... | @@ -201,6 +204,7 @@ test "vector f128" { | ... | @@ -201,6 +204,7 @@ test "vector f128" { |
| 201 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 204 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 202 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 205 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 203 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 206 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 207 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 204 | 208 | ||
| 205 | try comptime vector128(); | 209 | try comptime vector128(); |
| 206 | try vector128(); | 210 | try vector128(); |
test/behavior/saturating_arithmetic.zig+1| ... | @@ -157,6 +157,7 @@ test "saturating multiplication" { | ... | @@ -157,6 +157,7 @@ test "saturating multiplication" { |
| 157 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 157 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 158 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 158 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 159 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 159 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 160 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 160 | 161 | ||
| 161 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) { | 162 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) { |
| 162 | // https://github.com/ziglang/zig/issues/9660 | 163 | // https://github.com/ziglang/zig/issues/9660 |
test/behavior/struct.zig+1| ... | @@ -824,6 +824,7 @@ test "non-packed struct with u128 entry in union" { | ... | @@ -824,6 +824,7 @@ test "non-packed struct with u128 entry in union" { |
| 824 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 824 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 825 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 825 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 826 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 826 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 827 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 827 | 828 | ||
| 828 | const U = union(enum) { | 829 | const U = union(enum) { |
| 829 | Num: u128, | 830 | Num: u128, |
test/behavior/vector.zig+2| ... | @@ -102,6 +102,7 @@ test "vector float operators" { | ... | @@ -102,6 +102,7 @@ test "vector float operators" { |
| 102 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 102 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 103 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 103 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 104 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 104 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 105 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 105 | 106 | ||
| 106 | inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| { | 107 | inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| { |
| 107 | const S = struct { | 108 | const S = struct { |
| ... | @@ -705,6 +706,7 @@ test "vector reduce operation" { | ... | @@ -705,6 +706,7 @@ test "vector reduce operation" { |
| 705 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 706 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 706 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 707 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 707 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 708 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 709 | if (builtin.zig_backend == .stage2_c and builtin.cpu.arch == .arm) return error.SkipZigTest; | ||
| 708 | 710 | ||
| 709 | const S = struct { | 711 | const S = struct { |
| 710 | fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void { | 712 | fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void { |