authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-07-30 07:49:45-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-07-31 01:58:10-04:00
log9831f272383a66392ebeadbc60d8176f44b3553c
tree996de8b72b2616b193bd9c47e3792fdc3b98dd07
parent817fa3af8631d894004fbdb668da0882836dbe9b

cbe: get behavior tests running on arm

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;
11761176
1177#if zig_little_endian1177#if zig_little_endian
1178typedef struct { zig_align(16) uint64_t lo; uint64_t hi; } zig_u128;1178typedef struct { zig_align(16) uint64_t lo; uint64_t hi; } zig_u128;
1179typedef struct { zig_align(16) uint64_t lo; int64_t hi; } zig_i128;1179typedef struct { zig_align(16) uint64_t lo; int64_t hi; } zig_i128;
1180#else1180#else
1181typedef struct { zig_align(16) uint64_t hi; uint64_t lo; } zig_u128;1181typedef struct { zig_align(16) uint64_t hi; uint64_t lo; } zig_u128;
1182typedef struct { zig_align(16) int64_t hi; uint64_t lo; } zig_i128;1182typedef struct { zig_align(16) int64_t hi; uint64_t lo; } zig_i128;
1183#endif1183#endif
11841184
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,
3197zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f80, zig_f80, 2)3197zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f80, zig_f80, 2)
3198zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f128, zig_f128, 2)3198zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f128, zig_f128, 2)
3199zig_convert_builtin(zig_f32, zig_f32, extend, zig_compiler_rt_f16, zig_f16, 2)3199zig_convert_builtin(zig_f32, zig_f32, extend, zig_compiler_rt_f16, zig_f16, 2)
3200zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f64, zig_f64, 2)
3201zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f80, zig_f80, 2)3200zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f80, zig_f80, 2)
3202zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f128, zig_f128, 2)3201zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f128, zig_f128, 2)
3203zig_convert_builtin(zig_f64, zig_f64, extend, zig_compiler_rt_f16, zig_f16, 2)3202zig_convert_builtin(zig_f64, zig_f64, extend, zig_compiler_rt_f16, zig_f16, 2)
3204zig_convert_builtin(zig_f64, zig_f64, extend, zig_f32, zig_f32, 2)
3205zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f80, zig_f80, 2)3203zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f80, zig_f80, 2)
3206zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f128, zig_f128, 2)3204zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f128, zig_f128, 2)
3207zig_convert_builtin(zig_f80, zig_f80, extend, zig_f16, zig_f16, 2)3205zig_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,
3213zig_convert_builtin(zig_f128, zig_f128, extend, zig_f64, zig_f64, 2)3211zig_convert_builtin(zig_f128, zig_f128, extend, zig_f64, zig_f64, 2)
3214zig_convert_builtin(zig_f128, zig_f128, extend, zig_f80, zig_f80, 2)3212zig_convert_builtin(zig_f128, zig_f128, extend, zig_f80, zig_f80, 2)
32153213
3214#ifdef __ARM_EABI__
3215
3216zig_extern zig_callconv(pcs("aapcs")) zig_f32 __aeabi_d2f(zig_f64);
3217static inline zig_f32 zig_truncdfsf(zig_f64 arg) { return __aeabi_d2f(arg); }
3218
3219zig_extern zig_callconv(pcs("aapcs")) zig_f64 __aeabi_f2d(zig_f32);
3220static inline zig_f64 zig_extendsfdf(zig_f32 arg) { return __aeabi_f2d(arg); }
3221
3222#else /* __ARM_EABI__ */
3223
3224zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f64, zig_f64, 2)
3225zig_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) -arg3231#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 }
32573270
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 }
3319zig_common_float_builtins(16)
3320zig_common_float_builtins(32)
3321zig_common_float_builtins(64)
3322zig_common_float_builtins(80)
3323zig_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, )
3312zig_float_builtins(16)3332zig_float_builtins(16)
3313zig_float_builtins(32)
3314zig_float_builtins(64)
3315zig_float_builtins(80)3333zig_float_builtins(80)
3316zig_float_builtins(128)3334zig_float_builtins(128)
33173335
3336#ifdef __ARM_EABI__
3337
3338zig_extern zig_callconv(pcs("aapcs")) int32_t __aeabi_f2iz(zig_f32);
3339static inline int32_t zig_fixsfsi(zig_f32 arg) { return __aeabi_f2iz(arg); }
3340
3341zig_extern zig_callconv(pcs("aapcs")) uint32_t __aeabi_f2uiz(zig_f32);
3342static inline uint32_t zig_fixunssfsi(zig_f32 arg) { return __aeabi_f2uiz(arg); }
3343
3344zig_extern zig_callconv(pcs("aapcs")) uint64_t __aeabi_f2ulz(zig_f32);
3345static inline uint64_t zig_fixunssfdi(zig_f32 arg) { return __aeabi_f2ulz(arg); }
3346
3347zig_extern zig_callconv(pcs("aapcs")) zig_f32 __aeabi_i2f(int32_t);
3348static inline zig_f32 zig_floatsisf(int32_t arg) { return __aeabi_i2f(arg); }
3349
3350zig_extern zig_callconv(pcs("aapcs")) zig_f32 __aeabi_ui2f(uint32_t);
3351static inline zig_f32 zig_floatunsisf(uint32_t arg) { return __aeabi_ui2f(arg); }
3352
3353zig_extern zig_callconv(pcs("aapcs")) zig_f32 __aeabi_ul2f(uint64_t);
3354static inline zig_f32 zig_floatundisf(uint64_t arg) { return __aeabi_ul2f(arg); }
3355
3356zig_extern zig_callconv(pcs("aapcs")) int32_t __aeabi_d2iz(zig_f64);
3357static inline int32_t zig_fixdfsi(zig_f64 arg) { return __aeabi_d2iz(arg); }
3358
3359zig_extern zig_callconv(pcs("aapcs")) uint32_t __aeabi_d2uiz(zig_f64);
3360static inline uint32_t zig_fixunsdfsi(zig_f64 arg) { return __aeabi_d2uiz(arg); }
3361
3362zig_extern zig_callconv(pcs("aapcs")) uint64_t __aeabi_d2ulz(zig_f64);
3363static inline uint64_t zig_fixunsdfdi(zig_f64 arg) { return __aeabi_d2ulz(arg); }
3364
3365zig_extern zig_callconv(pcs("aapcs")) zig_f64 __aeabi_i2d(int32_t);
3366static inline zig_f64 zig_floatsidf(int32_t arg) { return __aeabi_i2d(arg); }
3367
3368zig_extern zig_callconv(pcs("aapcs")) zig_f64 __aeabi_ui2d(uint32_t);
3369static inline zig_f64 zig_floatunsidf(uint32_t arg) { return __aeabi_ui2d(arg); }
3370
3371zig_extern zig_callconv(pcs("aapcs")) zig_f64 __aeabi_ul2d(uint64_t);
3372static inline zig_f64 zig_floatundidf(uint64_t arg) { return __aeabi_ul2d(arg); }
3373
3374#else /* __ARM_EABI__ */
3375
3376zig_float_builtins(32)
3377zig_float_builtins(64)
3378
3379#endif /* __ARM_EABI__ */
3380
3318/* ============================ Atomics Support ============================= */3381/* ============================ Atomics Support ============================= */
33193382
3320/* Note that atomics should be implemented as macros because most3383/* 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" {
198198
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);
204205
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);
207208
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; // TODO123 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO124 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;
126127
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; // TODO1370 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1371 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;
13721374
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; // TODO533 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
534 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO534 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;
536537
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; // TODO554 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
555 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO555 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;
557558
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; // TODO577 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
577 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO578 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;
579581
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; // TODO595 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
594 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO596 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;
596599
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 // normals601 // 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; // TODO687 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
685 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO688 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;
687691
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/12602693 // 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; // TODO704 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
701 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO705 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;
703708
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; // TODO785 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
781 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO786 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;
783789
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/12602791 // 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; // TODO802 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
797 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO803 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;
799806
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; // TODO882 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
876 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO883 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;
878886
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/12602888 // 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; // TODO905 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
898 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO906 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;
900909
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; // TODO664 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
665 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO665 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;
667668
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; // TODO1312 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; // TODO1314 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;
13141316
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/126021318 // 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; // TODO1457 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1456 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1458 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;
14581461
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; // TODO1470 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1468 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1471 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;
14701474
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; // TODO110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO111 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;
113114
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; // TODO56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO57 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;
5960
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; // TODO76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO77 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;
7880
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; // TODO179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO180 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;
180183
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; // TODO204 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO205 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;
204208
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; // TODO157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO158 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;
160161
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/9660163 // 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; // TODO824 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
825 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO825 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;
827828
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; // TODO102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO103 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;
105106
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; // TODO706 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
706 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO707 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;
708710
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 {