authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-10-25 07:00:17-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-10-25 07:02:06-04:00
loge20d2b3151607fe078b43331ea27d5b34f95360b
treeba23d07445cbedb81404b7fc02647be281be3f2f
parent3d22327b2392050e088c8b6d5c21ae31bbd0cd90

cbe: fix floating point builtins


4 files changed, 59 insertions(+), 65 deletions(-)

lib/include/zig.h+49-41
...@@ -216,7 +216,6 @@ typedef signed long int zig_c_long;...@@ -216,7 +216,6 @@ typedef signed long int zig_c_long;
216typedef unsigned long int zig_c_ulong;216typedef unsigned long int zig_c_ulong;
217typedef signed long long int zig_c_longlong;217typedef signed long long int zig_c_longlong;
218typedef unsigned long long int zig_c_ulonglong;218typedef unsigned long long int zig_c_ulonglong;
219typedef long double zig_c_longdouble;
220219
221typedef uint8_t zig_u8;220typedef uint8_t zig_u8;
222typedef int8_t zig_i8;221typedef int8_t zig_i8;
...@@ -255,120 +254,111 @@ typedef int64_t zig_i64;...@@ -255,120 +254,111 @@ typedef int64_t zig_i64;
255#define zig_minInt_i64 INT64_MIN254#define zig_minInt_i64 INT64_MIN
256#define zig_maxInt_i64 INT64_MAX255#define zig_maxInt_i64 INT64_MAX
257256
257#define zig_builtin_f16(name) __##name##h
258#define zig_builtin_constant_f16(name) zig_suffix_f16(__builtin_##name)
258#if FLT_MANT_DIG == 11259#if FLT_MANT_DIG == 11
259typedef float zig_f16;260typedef float zig_f16;
260#define zig_suffix_f16(x) x##f261#define zig_suffix_f16(x) x##f
261#define zig_builtin_f16(name) __builtin_##name##f
262#elif DBL_MANT_DIG == 11262#elif DBL_MANT_DIG == 11
263typedef double zig_f16;263typedef double zig_f16;
264#define zig_suffix_f16(x) x264#define zig_suffix_f16(x) x
265#define zig_builtin_f16(name) __builtin_##name
266#elif LDBL_MANT_DIG == 11265#elif LDBL_MANT_DIG == 11
267typedef long double zig_f16;266typedef long double zig_f16;
268#define zig_suffix_f16(x) x##l267#define zig_suffix_f16(x) x##l
269#define zig_builtin_f16(name) __builtin_##name##l
270#elif FLT16_MANT_DIG == 11268#elif FLT16_MANT_DIG == 11
271typedef _Float16 zig_f16;269typedef _Float16 zig_f16;
272#define zig_suffix_f16(x) x##f16270#define zig_suffix_f16(x) x##f16
273#define zig_builtin_f16(name) __builtin_##name
274#elif defined(__SIZEOF_FP16__)271#elif defined(__SIZEOF_FP16__)
275typedef __fp16 zig_f16;272typedef __fp16 zig_f16;
276#define zig_suffix_f16(x) x273#define zig_suffix_f16(x) x##f16
277#define zig_builtin_f16(name) __builtin_##name
278#endif274#endif
279275
276#define zig_builtin_f32(name) name##f
277#define zig_builtin_constant_f32(name) zig_suffix_f32(__builtin_##name)
280#if FLT_MANT_DIG == 24278#if FLT_MANT_DIG == 24
281typedef float zig_f32;279typedef float zig_f32;
282#define zig_suffix_f32(x) x##f280#define zig_suffix_f32(x) x##f
283#define zig_builtin_f32(name) __builtin_##name##f
284#elif DBL_MANT_DIG == 24281#elif DBL_MANT_DIG == 24
285typedef double zig_f32;282typedef double zig_f32;
286#define zig_suffix_f32(x) x283#define zig_suffix_f32(x) x
287#define zig_builtin_f32(name) __builtin_##name
288#elif LDBL_MANT_DIG == 24284#elif LDBL_MANT_DIG == 24
289typedef long double zig_f32;285typedef long double zig_f32;
290#define zig_suffix_f32(x) x##l286#define zig_suffix_f32(x) x##l
291#define zig_builtin_f32(name) __builtin_##name##l
292#elif FLT32_MANT_DIG == 24287#elif FLT32_MANT_DIG == 24
293typedef _Float32 zig_f32;288typedef _Float32 zig_f32;
294#define zig_suffix_f32(x) x##f32289#define zig_suffix_f32(x) x##f32
295#define zig_builtin_f32(name) __builtin_##name
296#endif290#endif
297291
292#define zig_builtin_f64(name) name
293#define zig_builtin_constant_f64(name) zig_suffix_f64(__builtin_##name)
298#if FLT_MANT_DIG == 53294#if FLT_MANT_DIG == 53
299typedef float zig_f64;295typedef float zig_f64;
300#define zig_suffix_f64(x) x##f296#define zig_suffix_f64(x) x##f
301#define zig_builtin_f64(name) __builtin_##name##f
302#elif DBL_MANT_DIG == 53297#elif DBL_MANT_DIG == 53
303typedef double zig_f64;298typedef double zig_f64;
304#define zig_suffix_f64(x) x299#define zig_suffix_f64(x) x
305#define zig_builtin_f64(name) __builtin_##name
306#elif LDBL_MANT_DIG == 53300#elif LDBL_MANT_DIG == 53
307typedef long double zig_f64;301typedef long double zig_f64;
308#define zig_suffix_f64(x) x##l302#define zig_suffix_f64(x) x##l
309#define zig_builtin_f64(name) __builtin_##name##l
310#elif FLT64_MANT_DIG == 53303#elif FLT64_MANT_DIG == 53
311typedef _Float64 zig_f64;304typedef _Float64 zig_f64;
312#define zig_suffix_f64(x) x##f64305#define zig_suffix_f64(x) x##f64
313#define zig_builtin_f64(name) __builtin_##name##l
314#elif FLT32X_MANT_DIG == 53306#elif FLT32X_MANT_DIG == 53
315typedef _Float32x zig_f64;307typedef _Float32x zig_f64;
316#define zig_suffix_f64(x) x##f32x308#define zig_suffix_f64(x) x##f32x
317#define zig_builtin_f64(name) __builtin_##name##l
318#endif309#endif
319310
311#define zig_builtin_f80(name) __##name##x
312#define zig_builtin_constant_f80(name) zig_suffix_f80(__builtin_##name)
320#if FLT_MANT_DIG == 64313#if FLT_MANT_DIG == 64
321typedef float zig_f80;314typedef float zig_f80;
322#define zig_suffix_f80(x) x##f315#define zig_suffix_f80(x) x##f
323#define zig_builtin_f80(name) __builtin_##name##f
324#elif DBL_MANT_DIG == 64316#elif DBL_MANT_DIG == 64
325typedef double zig_f80;317typedef double zig_f80;
326#define zig_suffix_f80(x) x318#define zig_suffix_f80(x) x
327#define zig_builtin_f80(name) __builtin_##name
328#elif LDBL_MANT_DIG == 64319#elif LDBL_MANT_DIG == 64
329typedef long double zig_f80;320typedef long double zig_f80;
330#define zig_suffix_f80(x) x##l321#define zig_suffix_f80(x) x##l
331#define zig_builtin_f80(name) __builtin_##name##l
332#elif FLT80_MANT_DIG == 64322#elif FLT80_MANT_DIG == 64
333typedef _Float80 zig_f80;323typedef _Float80 zig_f80;
334#define zig_suffix_f80(x) x##f80324#define zig_suffix_f80(x) x##f80
335#define zig_builtin_f80(name) __builtin_##name##l
336#elif FLT64X_MANT_DIG == 64325#elif FLT64X_MANT_DIG == 64
337typedef _Float64x zig_f80;326typedef _Float64x zig_f80;
338#define zig_suffix_f80(x) x##f64x327#define zig_suffix_f80(x) x##f64x
339#define zig_builtin_f80(name) __builtin_##name##l
340#elif defined(__SIZEOF_FLOAT80__)328#elif defined(__SIZEOF_FLOAT80__)
341typedef __float80 zig_f80;329typedef __float80 zig_f80;
342#define zig_suffix_f80(x) x##l330#define zig_suffix_f80(x) x##l
343#define zig_builtin_f80(name) __builtin_##name##l
344#endif331#endif
345332
333#define zig_builtin_f128(name) name##q
334#define zig_builtin_constant_f128(name) zig_suffix_f80(__builtin_##name)
346#if FLT_MANT_DIG == 113335#if FLT_MANT_DIG == 113
347typedef float zig_f128;336typedef float zig_f128;
348#define zig_suffix_f128(x) x##f337#define zig_suffix_f128(x) x##f
349#define zig_builtin_f128(name) __builtin_##name##f
350#elif DBL_MANT_DIG == 113338#elif DBL_MANT_DIG == 113
351typedef double zig_f128;339typedef double zig_f128;
352#define zig_suffix_f128(x) x340#define zig_suffix_f128(x) x
353#define zig_builtin_f128(name) __builtin_##name
354#elif LDBL_MANT_DIG == 113341#elif LDBL_MANT_DIG == 113
355typedef long double zig_f128;342typedef long double zig_f128;
356#define zig_suffix_f128(x) x##l343#define zig_suffix_f128(x) x##l
357#define zig_builtin_f128(name) __builtin_##name##l
358#elif FLT128_MANT_DIG == 113344#elif FLT128_MANT_DIG == 113
359typedef _Float128 zig_f128;345typedef _Float128 zig_f128;
360#define zig_suffix_f128(x) x##f128346#define zig_suffix_f128(x) x##f128
361#define zig_builtin_f128(name) __builtin_##name##l
362#elif FLT64X_MANT_DIG == 113347#elif FLT64X_MANT_DIG == 113
363typedef _Float64x zig_f128;348typedef _Float64x zig_f128;
364#define zig_suffix_f128(x) x##f64x349#define zig_suffix_f128(x) x##f64x
365#define zig_builtin_f128(name) __builtin_##name##l
366#elif defined(__SIZEOF_FLOAT128__)350#elif defined(__SIZEOF_FLOAT128__)
367typedef __float128 zig_f128;351typedef __float128 zig_f128;
368#define zig_suffix_f128(x) x##l352#define zig_suffix_f128(x) x##q
369#define zig_builtin_f128(name) __builtin_##name##l353#undef zig_builtin_constant_f128
354#define zig_builtin_constant_f128(name) __builtin_##name##f128
370#endif355#endif
371356
357typedef long double zig_c_longdouble;
358#define zig_suffix_c_longdouble(x) x##l
359#define zig_builtin_c_longdouble(name) zig_suffix_c_longdouble(name)
360#define zig_builtin_constant_c_longdouble(name) zig_suffix_c_longdouble(__builtin_##name)
361
372zig_extern_c void *memcpy (void *zig_restrict, void const *zig_restrict, zig_usize);362zig_extern_c void *memcpy (void *zig_restrict, void const *zig_restrict, zig_usize);
373zig_extern_c void *memset (void *, int, zig_usize);363zig_extern_c void *memset (void *, int, zig_usize);
374364
...@@ -1476,20 +1466,38 @@ static inline zig_i128 zig_bit_reverse_i128(zig_i128 val, zig_u8 bits) {...@@ -1476,20 +1466,38 @@ static inline zig_i128 zig_bit_reverse_i128(zig_i128 val, zig_u8 bits) {
14761466
1477/* ========================== Float Point Routines ========================== */1467/* ========================== Float Point Routines ========================== */
14781468
1479#define zig_float_builtins(w) \1469#define zig_float_builtins(Type) \
1480 static inline zig_f##w zig_div_trunc_f##w(zig_f##w lhs, zig_f##w rhs) { \1470 zig_extern_c zig_##Type zig_builtin_##Type(sqrt)(zig_##Type); \
1481 return zig_builtin_f##w(trunc)(lhs / rhs); \1471 zig_extern_c zig_##Type zig_builtin_##Type(sin)(zig_##Type); \
1472 zig_extern_c zig_##Type zig_builtin_##Type(cos)(zig_##Type); \
1473 zig_extern_c zig_##Type zig_builtin_##Type(tan)(zig_##Type); \
1474 zig_extern_c zig_##Type zig_builtin_##Type(exp)(zig_##Type); \
1475 zig_extern_c zig_##Type zig_builtin_##Type(exp2)(zig_##Type); \
1476 zig_extern_c zig_##Type zig_builtin_##Type(log)(zig_##Type); \
1477 zig_extern_c zig_##Type zig_builtin_##Type(log2)(zig_##Type); \
1478 zig_extern_c zig_##Type zig_builtin_##Type(log10)(zig_##Type); \
1479 zig_extern_c zig_##Type zig_builtin_##Type(fabs)(zig_##Type); \
1480 zig_extern_c zig_##Type zig_builtin_##Type(floor)(zig_##Type); \
1481 zig_extern_c zig_##Type zig_builtin_##Type(ceil)(zig_##Type); \
1482 zig_extern_c zig_##Type zig_builtin_##Type(round)(zig_##Type); \
1483 zig_extern_c zig_##Type zig_builtin_##Type(trunc)(zig_##Type); \
1484 zig_extern_c zig_##Type zig_builtin_##Type(fmod)(zig_##Type, zig_##Type); \
1485 zig_extern_c zig_##Type zig_builtin_##Type(fma)(zig_##Type, zig_##Type, zig_##Type); \
1486\
1487 static inline zig_##Type zig_div_trunc_##Type(zig_##Type lhs, zig_##Type rhs) { \
1488 return zig_builtin_##Type(trunc)(lhs / rhs); \
1482 } \1489 } \
1483\1490\
1484 static inline zig_f##w zig_div_floor_f##w(zig_f##w lhs, zig_f##w rhs) { \1491 static inline zig_##Type zig_div_floor_##Type(zig_##Type lhs, zig_##Type rhs) { \
1485 return zig_builtin_f##w(floor)(lhs / rhs); \1492 return zig_builtin_##Type(floor)(lhs / rhs); \
1486 } \1493 } \
1487\1494\
1488 static inline zig_f##w zig_mod_f##w(zig_f##w lhs, zig_f##w rhs) { \1495 static inline zig_##Type zig_mod_##Type(zig_##Type lhs, zig_##Type rhs) { \
1489 return lhs - zig_div_floor_f##w(lhs, rhs) * rhs; \1496 return lhs - zig_div_floor_##Type(lhs, rhs) * rhs; \
1490 }1497 }
1491zig_float_builtins(16)1498zig_float_builtins(f16)
1492zig_float_builtins(32)1499zig_float_builtins(f32)
1493zig_float_builtins(64)1500zig_float_builtins(f64)
1494zig_float_builtins(80)1501zig_float_builtins(f80)
1495zig_float_builtins(128)1502zig_float_builtins(f128)
1503zig_float_builtins(c_longdouble)
src/codegen/c.zig+10-10
...@@ -798,7 +798,7 @@ pub const DeclGen = struct {...@@ -798,7 +798,7 @@ pub const DeclGen = struct {
798 "inf"798 "inf"
799 else799 else
800 unreachable;800 unreachable;
801 try writer.writeAll("zig_builtin_");801 try writer.writeAll("zig_builtin_constant_");
802 try dg.renderTypeForBuiltinFnName(writer, ty);802 try dg.renderTypeForBuiltinFnName(writer, ty);
803 try writer.writeByte('(');803 try writer.writeByte('(');
804 try writer.writeAll(operation);804 try writer.writeAll(operation);
...@@ -2006,18 +2006,16 @@ pub const DeclGen = struct {...@@ -2006,18 +2006,16 @@ pub const DeclGen = struct {
20062006
2007 fn renderTypeForBuiltinFnName(dg: *DeclGen, writer: anytype, ty: Type) !void {2007 fn renderTypeForBuiltinFnName(dg: *DeclGen, writer: anytype, ty: Type) !void {
2008 const target = dg.module.getTarget();2008 const target = dg.module.getTarget();
2009 const c_bits = if (ty.isAbiInt()) c_bits: {2009 if (ty.isAbiInt()) {
2010 const int_info = ty.intInfo(target);2010 const int_info = ty.intInfo(target);
2011 try writer.writeByte(signAbbrev(int_info.signedness));2011 const c_bits = toCIntBits(int_info.bits) orelse
2012 break :c_bits toCIntBits(int_info.bits) orelse
2013 return dg.fail("TODO: C backend: implement integer types larger than 128 bits", .{});2012 return dg.fail("TODO: C backend: implement integer types larger than 128 bits", .{});
2014 } else if (ty.isRuntimeFloat()) c_bits: {2013 try writer.print("{c}{d}", .{ signAbbrev(int_info.signedness), c_bits });
2015 try writer.writeByte('f');2014 } else if (ty.isRuntimeFloat()) {
2016 break :c_bits ty.floatBits(target);2015 try ty.print(writer, dg.module);
2017 } else return dg.fail("TODO: CBE: implement renderTypeForBuiltinFnName for type {}", .{2016 } else return dg.fail("TODO: CBE: implement renderTypeForBuiltinFnName for type {}", .{
2018 ty.fmt(dg.module),2017 ty.fmt(dg.module),
2019 });2018 });
2020 try writer.print("{d}", .{c_bits});
2021 }2019 }
20222020
2023 fn renderBuiltinInfo(dg: *DeclGen, writer: anytype, ty: Type, info: BuiltinInfo) !void {2021 fn renderBuiltinInfo(dg: *DeclGen, writer: anytype, ty: Type, info: BuiltinInfo) !void {
...@@ -3077,7 +3075,8 @@ fn airBinOp(...@@ -3077,7 +3075,8 @@ fn airBinOp(
30773075
3078 const operand_ty = f.air.typeOf(bin_op.lhs);3076 const operand_ty = f.air.typeOf(bin_op.lhs);
3079 const target = f.object.dg.module.getTarget();3077 const target = f.object.dg.module.getTarget();
3080 if (operand_ty.bitSize(target) > 64) return try airBinBuiltinCall(f, inst, operation, info);3078 if (operand_ty.isInt() and operand_ty.bitSize(target) > 64)
3079 return try airBinBuiltinCall(f, inst, operation, info);
30813080
3082 const inst_ty = f.air.typeOfIndex(inst);3081 const inst_ty = f.air.typeOfIndex(inst);
3083 const lhs = try f.resolveInst(bin_op.lhs);3082 const lhs = try f.resolveInst(bin_op.lhs);
...@@ -3104,7 +3103,8 @@ fn airCmpOp(f: *Function, inst: Air.Inst.Index, operator: []const u8) !CValue {...@@ -3104,7 +3103,8 @@ fn airCmpOp(f: *Function, inst: Air.Inst.Index, operator: []const u8) !CValue {
31043103
3105 const operand_ty = f.air.typeOf(bin_op.lhs);3104 const operand_ty = f.air.typeOf(bin_op.lhs);
3106 const target = f.object.dg.module.getTarget();3105 const target = f.object.dg.module.getTarget();
3107 if (operand_ty.bitSize(target) > 64) return try airCmpBuiltinCall(f, inst, operator);3106 if (operand_ty.isInt() and operand_ty.bitSize(target) > 64)
3107 return try airCmpBuiltinCall(f, inst, operator);
31083108
3109 const inst_ty = f.air.typeOfIndex(inst);3109 const inst_ty = f.air.typeOfIndex(inst);
3110 const lhs = try f.resolveInst(bin_op.lhs);3110 const lhs = try f.resolveInst(bin_op.lhs);
test/behavior/cast.zig-1
...@@ -1379,7 +1379,6 @@ test "pointer to empty struct literal to mutable slice" {...@@ -1379,7 +1379,6 @@ test "pointer to empty struct literal to mutable slice" {
1379}1379}
13801380
1381test "coerce between pointers of compatible differently-named floats" {1381test "coerce between pointers of compatible differently-named floats" {
1382 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1383 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1382 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1384 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1385 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1384 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
test/behavior/math.zig-13
...@@ -990,7 +990,6 @@ test "allow signed integer division/remainder when values are comptime-known and...@@ -990,7 +990,6 @@ test "allow signed integer division/remainder when values are comptime-known and
990}990}
991991
992test "quad hex float literal parsing accurate" {992test "quad hex float literal parsing accurate" {
993 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
994 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO993 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
995 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO994 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
996 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO995 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -1178,7 +1177,6 @@ fn remdivOne(comptime T: type, a: T, b: T, c: T) !void {...@@ -1178,7 +1177,6 @@ fn remdivOne(comptime T: type, a: T, b: T, c: T) !void {
11781177
1179test "float remainder division using @rem" {1178test "float remainder division using @rem" {
1180 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1179 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1181 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1182 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1180 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1182 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1222,7 +1220,6 @@ fn fremOne(comptime T: type, a: T, b: T, c: T, epsilon: T) !void {...@@ -1222,7 +1220,6 @@ fn fremOne(comptime T: type, a: T, b: T, c: T, epsilon: T) !void {
12221220
1223test "float modulo division using @mod" {1221test "float modulo division using @mod" {
1224 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1222 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1225 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1223 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1228 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1225 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -1349,7 +1346,6 @@ test "@floor f80" {...@@ -1349,7 +1346,6 @@ test "@floor f80" {
1349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1350 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1347 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1351 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1348 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1352 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1353 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/126021349 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
13541350
1355 try testFloor(f80, 12.0);1351 try testFloor(f80, 12.0);
...@@ -1361,7 +1357,6 @@ test "@floor f128" {...@@ -1361,7 +1357,6 @@ test "@floor f128" {
1361 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1357 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1362 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1358 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1363 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1359 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1364 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
13651360
1366 try testFloor(f128, 12.0);1361 try testFloor(f128, 12.0);
1367 comptime try testFloor(f128, 12.0);1362 comptime try testFloor(f128, 12.0);
...@@ -1397,7 +1392,6 @@ test "@ceil f80" {...@@ -1397,7 +1392,6 @@ test "@ceil f80" {
1397 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1398 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1399 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1394 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1400 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1401 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/126021395 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
14021396
1403 try testCeil(f80, 12.0);1397 try testCeil(f80, 12.0);
...@@ -1409,7 +1403,6 @@ test "@ceil f128" {...@@ -1409,7 +1403,6 @@ test "@ceil f128" {
1409 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1403 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1410 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1404 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1411 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1405 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1412 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
14131406
1414 try testCeil(f128, 12.0);1407 try testCeil(f128, 12.0);
1415 comptime try testCeil(f128, 12.0);1408 comptime try testCeil(f128, 12.0);
...@@ -1445,7 +1438,6 @@ test "@trunc f80" {...@@ -1445,7 +1438,6 @@ test "@trunc f80" {
1445 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1438 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1446 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1439 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1447 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1440 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1448 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1449 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/126021441 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
14501442
1451 try testTrunc(f80, 12.0);1443 try testTrunc(f80, 12.0);
...@@ -1463,7 +1455,6 @@ test "@trunc f128" {...@@ -1463,7 +1455,6 @@ test "@trunc f128" {
1463 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1455 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1464 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1456 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1465 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1457 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1466 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
14671458
1468 try testTrunc(f128, 12.0);1459 try testTrunc(f128, 12.0);
1469 comptime try testTrunc(f128, 12.0);1460 comptime try testTrunc(f128, 12.0);
...@@ -1507,7 +1498,6 @@ test "@round f80" {...@@ -1507,7 +1498,6 @@ test "@round f80" {
1507 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1498 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1508 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1499 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1509 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1500 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1510 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1511 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/126021501 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
15121502
1513 try testRound(f80, 12.0);1503 try testRound(f80, 12.0);
...@@ -1519,7 +1509,6 @@ test "@round f128" {...@@ -1519,7 +1509,6 @@ test "@round f128" {
1519 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1509 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1520 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1510 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1521 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1511 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1522 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
15231512
1524 try testRound(f128, 12.0);1513 try testRound(f128, 12.0);
1525 comptime try testRound(f128, 12.0);1514 comptime try testRound(f128, 12.0);
...@@ -1553,7 +1542,6 @@ test "vector integer addition" {...@@ -1553,7 +1542,6 @@ test "vector integer addition" {
1553}1542}
15541543
1555test "NaN comparison" {1544test "NaN comparison" {
1556 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1557 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1545 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1558 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1546 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1559 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1547 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -1570,7 +1558,6 @@ test "NaN comparison" {...@@ -1570,7 +1558,6 @@ test "NaN comparison" {
1570}1558}
15711559
1572test "NaN comparison f80" {1560test "NaN comparison f80" {
1573 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1574 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1561 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1575 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1562 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1576 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1563 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO