| author | |
| committer | |
| log | e20d2b3151607fe078b43331ea27d5b34f95360b |
| tree | ba23d07445cbedb81404b7fc02647be281be3f2f |
| parent | 3d22327b2392050e088c8b6d5c21ae31bbd0cd90 |
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; |
| 216 | typedef unsigned long int zig_c_ulong; | 216 | typedef unsigned long int zig_c_ulong; |
| 217 | typedef signed long long int zig_c_longlong; | 217 | typedef signed long long int zig_c_longlong; |
| 218 | typedef unsigned long long int zig_c_ulonglong; | 218 | typedef unsigned long long int zig_c_ulonglong; |
| 219 | typedef long double zig_c_longdouble; | ||
| 220 | 219 | ||
| 221 | typedef uint8_t zig_u8; | 220 | typedef uint8_t zig_u8; |
| 222 | typedef int8_t zig_i8; | 221 | typedef 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_MIN | 254 | #define zig_minInt_i64 INT64_MIN |
| 256 | #define zig_maxInt_i64 INT64_MAX | 255 | #define zig_maxInt_i64 INT64_MAX |
| 257 | 256 | ||
| 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 == 11 | 259 | #if FLT_MANT_DIG == 11 |
| 259 | typedef float zig_f16; | 260 | typedef float zig_f16; |
| 260 | #define zig_suffix_f16(x) x##f | 261 | #define zig_suffix_f16(x) x##f |
| 261 | #define zig_builtin_f16(name) __builtin_##name##f | ||
| 262 | #elif DBL_MANT_DIG == 11 | 262 | #elif DBL_MANT_DIG == 11 |
| 263 | typedef double zig_f16; | 263 | typedef double zig_f16; |
| 264 | #define zig_suffix_f16(x) x | 264 | #define zig_suffix_f16(x) x |
| 265 | #define zig_builtin_f16(name) __builtin_##name | ||
| 266 | #elif LDBL_MANT_DIG == 11 | 265 | #elif LDBL_MANT_DIG == 11 |
| 267 | typedef long double zig_f16; | 266 | typedef long double zig_f16; |
| 268 | #define zig_suffix_f16(x) x##l | 267 | #define zig_suffix_f16(x) x##l |
| 269 | #define zig_builtin_f16(name) __builtin_##name##l | ||
| 270 | #elif FLT16_MANT_DIG == 11 | 268 | #elif FLT16_MANT_DIG == 11 |
| 271 | typedef _Float16 zig_f16; | 269 | typedef _Float16 zig_f16; |
| 272 | #define zig_suffix_f16(x) x##f16 | 270 | #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__) |
| 275 | typedef __fp16 zig_f16; | 272 | typedef __fp16 zig_f16; |
| 276 | #define zig_suffix_f16(x) x | 273 | #define zig_suffix_f16(x) x##f16 |
| 277 | #define zig_builtin_f16(name) __builtin_##name | ||
| 278 | #endif | 274 | #endif |
| 279 | 275 | ||
| 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 == 24 | 278 | #if FLT_MANT_DIG == 24 |
| 281 | typedef float zig_f32; | 279 | typedef float zig_f32; |
| 282 | #define zig_suffix_f32(x) x##f | 280 | #define zig_suffix_f32(x) x##f |
| 283 | #define zig_builtin_f32(name) __builtin_##name##f | ||
| 284 | #elif DBL_MANT_DIG == 24 | 281 | #elif DBL_MANT_DIG == 24 |
| 285 | typedef double zig_f32; | 282 | typedef double zig_f32; |
| 286 | #define zig_suffix_f32(x) x | 283 | #define zig_suffix_f32(x) x |
| 287 | #define zig_builtin_f32(name) __builtin_##name | ||
| 288 | #elif LDBL_MANT_DIG == 24 | 284 | #elif LDBL_MANT_DIG == 24 |
| 289 | typedef long double zig_f32; | 285 | typedef long double zig_f32; |
| 290 | #define zig_suffix_f32(x) x##l | 286 | #define zig_suffix_f32(x) x##l |
| 291 | #define zig_builtin_f32(name) __builtin_##name##l | ||
| 292 | #elif FLT32_MANT_DIG == 24 | 287 | #elif FLT32_MANT_DIG == 24 |
| 293 | typedef _Float32 zig_f32; | 288 | typedef _Float32 zig_f32; |
| 294 | #define zig_suffix_f32(x) x##f32 | 289 | #define zig_suffix_f32(x) x##f32 |
| 295 | #define zig_builtin_f32(name) __builtin_##name | ||
| 296 | #endif | 290 | #endif |
| 297 | 291 | ||
| 292 | #define zig_builtin_f64(name) name | ||
| 293 | #define zig_builtin_constant_f64(name) zig_suffix_f64(__builtin_##name) | ||
| 298 | #if FLT_MANT_DIG == 53 | 294 | #if FLT_MANT_DIG == 53 |
| 299 | typedef float zig_f64; | 295 | typedef float zig_f64; |
| 300 | #define zig_suffix_f64(x) x##f | 296 | #define zig_suffix_f64(x) x##f |
| 301 | #define zig_builtin_f64(name) __builtin_##name##f | ||
| 302 | #elif DBL_MANT_DIG == 53 | 297 | #elif DBL_MANT_DIG == 53 |
| 303 | typedef double zig_f64; | 298 | typedef double zig_f64; |
| 304 | #define zig_suffix_f64(x) x | 299 | #define zig_suffix_f64(x) x |
| 305 | #define zig_builtin_f64(name) __builtin_##name | ||
| 306 | #elif LDBL_MANT_DIG == 53 | 300 | #elif LDBL_MANT_DIG == 53 |
| 307 | typedef long double zig_f64; | 301 | typedef long double zig_f64; |
| 308 | #define zig_suffix_f64(x) x##l | 302 | #define zig_suffix_f64(x) x##l |
| 309 | #define zig_builtin_f64(name) __builtin_##name##l | ||
| 310 | #elif FLT64_MANT_DIG == 53 | 303 | #elif FLT64_MANT_DIG == 53 |
| 311 | typedef _Float64 zig_f64; | 304 | typedef _Float64 zig_f64; |
| 312 | #define zig_suffix_f64(x) x##f64 | 305 | #define zig_suffix_f64(x) x##f64 |
| 313 | #define zig_builtin_f64(name) __builtin_##name##l | ||
| 314 | #elif FLT32X_MANT_DIG == 53 | 306 | #elif FLT32X_MANT_DIG == 53 |
| 315 | typedef _Float32x zig_f64; | 307 | typedef _Float32x zig_f64; |
| 316 | #define zig_suffix_f64(x) x##f32x | 308 | #define zig_suffix_f64(x) x##f32x |
| 317 | #define zig_builtin_f64(name) __builtin_##name##l | ||
| 318 | #endif | 309 | #endif |
| 319 | 310 | ||
| 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 == 64 | 313 | #if FLT_MANT_DIG == 64 |
| 321 | typedef float zig_f80; | 314 | typedef float zig_f80; |
| 322 | #define zig_suffix_f80(x) x##f | 315 | #define zig_suffix_f80(x) x##f |
| 323 | #define zig_builtin_f80(name) __builtin_##name##f | ||
| 324 | #elif DBL_MANT_DIG == 64 | 316 | #elif DBL_MANT_DIG == 64 |
| 325 | typedef double zig_f80; | 317 | typedef double zig_f80; |
| 326 | #define zig_suffix_f80(x) x | 318 | #define zig_suffix_f80(x) x |
| 327 | #define zig_builtin_f80(name) __builtin_##name | ||
| 328 | #elif LDBL_MANT_DIG == 64 | 319 | #elif LDBL_MANT_DIG == 64 |
| 329 | typedef long double zig_f80; | 320 | typedef long double zig_f80; |
| 330 | #define zig_suffix_f80(x) x##l | 321 | #define zig_suffix_f80(x) x##l |
| 331 | #define zig_builtin_f80(name) __builtin_##name##l | ||
| 332 | #elif FLT80_MANT_DIG == 64 | 322 | #elif FLT80_MANT_DIG == 64 |
| 333 | typedef _Float80 zig_f80; | 323 | typedef _Float80 zig_f80; |
| 334 | #define zig_suffix_f80(x) x##f80 | 324 | #define zig_suffix_f80(x) x##f80 |
| 335 | #define zig_builtin_f80(name) __builtin_##name##l | ||
| 336 | #elif FLT64X_MANT_DIG == 64 | 325 | #elif FLT64X_MANT_DIG == 64 |
| 337 | typedef _Float64x zig_f80; | 326 | typedef _Float64x zig_f80; |
| 338 | #define zig_suffix_f80(x) x##f64x | 327 | #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__) |
| 341 | typedef __float80 zig_f80; | 329 | typedef __float80 zig_f80; |
| 342 | #define zig_suffix_f80(x) x##l | 330 | #define zig_suffix_f80(x) x##l |
| 343 | #define zig_builtin_f80(name) __builtin_##name##l | ||
| 344 | #endif | 331 | #endif |
| 345 | 332 | ||
| 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 == 113 | 335 | #if FLT_MANT_DIG == 113 |
| 347 | typedef float zig_f128; | 336 | typedef float zig_f128; |
| 348 | #define zig_suffix_f128(x) x##f | 337 | #define zig_suffix_f128(x) x##f |
| 349 | #define zig_builtin_f128(name) __builtin_##name##f | ||
| 350 | #elif DBL_MANT_DIG == 113 | 338 | #elif DBL_MANT_DIG == 113 |
| 351 | typedef double zig_f128; | 339 | typedef double zig_f128; |
| 352 | #define zig_suffix_f128(x) x | 340 | #define zig_suffix_f128(x) x |
| 353 | #define zig_builtin_f128(name) __builtin_##name | ||
| 354 | #elif LDBL_MANT_DIG == 113 | 341 | #elif LDBL_MANT_DIG == 113 |
| 355 | typedef long double zig_f128; | 342 | typedef long double zig_f128; |
| 356 | #define zig_suffix_f128(x) x##l | 343 | #define zig_suffix_f128(x) x##l |
| 357 | #define zig_builtin_f128(name) __builtin_##name##l | ||
| 358 | #elif FLT128_MANT_DIG == 113 | 344 | #elif FLT128_MANT_DIG == 113 |
| 359 | typedef _Float128 zig_f128; | 345 | typedef _Float128 zig_f128; |
| 360 | #define zig_suffix_f128(x) x##f128 | 346 | #define zig_suffix_f128(x) x##f128 |
| 361 | #define zig_builtin_f128(name) __builtin_##name##l | ||
| 362 | #elif FLT64X_MANT_DIG == 113 | 347 | #elif FLT64X_MANT_DIG == 113 |
| 363 | typedef _Float64x zig_f128; | 348 | typedef _Float64x zig_f128; |
| 364 | #define zig_suffix_f128(x) x##f64x | 349 | #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__) |
| 367 | typedef __float128 zig_f128; | 351 | typedef __float128 zig_f128; |
| 368 | #define zig_suffix_f128(x) x##l | 352 | #define zig_suffix_f128(x) x##q |
| 369 | #define zig_builtin_f128(name) __builtin_##name##l | 353 | #undef zig_builtin_constant_f128 |
| 354 | #define zig_builtin_constant_f128(name) __builtin_##name##f128 | ||
| 370 | #endif | 355 | #endif |
| 371 | 356 | ||
| 357 | typedef 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 | |||
| 372 | zig_extern_c void *memcpy (void *zig_restrict, void const *zig_restrict, zig_usize); | 362 | zig_extern_c void *memcpy (void *zig_restrict, void const *zig_restrict, zig_usize); |
| 373 | zig_extern_c void *memset (void *, int, zig_usize); | 363 | zig_extern_c void *memset (void *, int, zig_usize); |
| 374 | 364 | ||
| ... | @@ -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) { |
| 1476 | 1466 | ||
| 1477 | /* ========================== Float Point Routines ========================== */ | 1467 | /* ========================== Float Point Routines ========================== */ |
| 1478 | 1468 | ||
| 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 | } |
| 1491 | zig_float_builtins(16) | 1498 | zig_float_builtins(f16) |
| 1492 | zig_float_builtins(32) | 1499 | zig_float_builtins(f32) |
| 1493 | zig_float_builtins(64) | 1500 | zig_float_builtins(f64) |
| 1494 | zig_float_builtins(80) | 1501 | zig_float_builtins(f80) |
| 1495 | zig_float_builtins(128) | 1502 | zig_float_builtins(f128) |
| 1503 | zig_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 | else | 799 | 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 { |
| 2006 | 2006 | ||
| 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 | } |
| 2022 | 2020 | ||
| 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( |
| 3077 | 3075 | ||
| 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); | ||
| 3081 | 3080 | ||
| 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 { |
| 3104 | 3103 | ||
| 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); | ||
| 3108 | 3108 | ||
| 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 | } |
| 1380 | 1380 | ||
| 1381 | test "coerce between pointers of compatible differently-named floats" { | 1381 | test "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; // TODO | 1382 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1384 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1383 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1385 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1384 | 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 | } |
| 991 | 991 | ||
| 992 | test "quad hex float literal parsing accurate" { | 992 | test "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; // TODO | 993 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 995 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 994 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 996 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 995 | 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 { |
| 1178 | 1177 | ||
| 1179 | test "float remainder division using @rem" { | 1178 | test "float remainder division using @rem" { |
| 1180 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1179 | 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; // TODO | 1180 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1183 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1181 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1184 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1182 | 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 { |
| 1222 | 1220 | ||
| 1223 | test "float modulo division using @mod" { | 1221 | test "float modulo division using @mod" { |
| 1224 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1222 | 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; // TODO | 1223 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1227 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1224 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1228 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1225 | 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; // TODO | 1346 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1350 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1347 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1351 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1348 | 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/12602 | 1349 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602 |
| 1354 | 1350 | ||
| 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; // TODO | 1357 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1362 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1358 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1363 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1359 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1364 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | ||
| 1365 | 1360 | ||
| 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; // TODO | 1392 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1398 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1393 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1399 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1394 | 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/12602 | 1395 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602 |
| 1402 | 1396 | ||
| 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; // TODO | 1403 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1410 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1404 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1411 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1405 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1412 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | ||
| 1413 | 1406 | ||
| 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; // TODO | 1438 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1446 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1439 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1447 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1440 | 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/12602 | 1441 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602 |
| 1450 | 1442 | ||
| 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; // TODO | 1455 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1464 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1456 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1465 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1457 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1466 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | ||
| 1467 | 1458 | ||
| 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; // TODO | 1498 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1508 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1499 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1509 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1500 | 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/12602 | 1501 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602 |
| 1512 | 1502 | ||
| 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; // TODO | 1509 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1520 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1510 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1521 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 1511 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1522 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | ||
| 1523 | 1512 | ||
| 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 | } |
| 1554 | 1543 | ||
| 1555 | test "NaN comparison" { | 1544 | test "NaN comparison" { |
| 1556 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | ||
| 1557 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1545 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 1558 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1546 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1559 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1547 | 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 | } |
| 1571 | 1559 | ||
| 1572 | test "NaN comparison f80" { | 1560 | test "NaN comparison f80" { |
| 1573 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | ||
| 1574 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1561 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 1575 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1562 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1576 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1563 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |